summaryrefslogtreecommitdiff
path: root/Source/3rdParty/SDL2/src/video/wayland
diff options
context:
space:
mode:
Diffstat (limited to 'Source/3rdParty/SDL2/src/video/wayland')
-rw-r--r--Source/3rdParty/SDL2/src/video/wayland/SDL_waylandclipboard.c123
-rw-r--r--Source/3rdParty/SDL2/src/video/wayland/SDL_waylandclipboard.h32
-rw-r--r--Source/3rdParty/SDL2/src/video/wayland/SDL_waylanddatamanager.c468
-rw-r--r--Source/3rdParty/SDL2/src/video/wayland/SDL_waylanddatamanager.h103
-rw-r--r--Source/3rdParty/SDL2/src/video/wayland/SDL_waylanddyn.c178
-rw-r--r--Source/3rdParty/SDL2/src/video/wayland/SDL_waylanddyn.h107
-rw-r--r--Source/3rdParty/SDL2/src/video/wayland/SDL_waylandevents.c1136
-rw-r--r--Source/3rdParty/SDL2/src/video/wayland/SDL_waylandevents_c.h51
-rw-r--r--Source/3rdParty/SDL2/src/video/wayland/SDL_waylandmouse.c396
-rw-r--r--Source/3rdParty/SDL2/src/video/wayland/SDL_waylandmouse.h31
-rw-r--r--Source/3rdParty/SDL2/src/video/wayland/SDL_waylandopengles.c93
-rw-r--r--Source/3rdParty/SDL2/src/video/wayland/SDL_waylandopengles.h49
-rw-r--r--Source/3rdParty/SDL2/src/video/wayland/SDL_waylandsym.h127
-rw-r--r--Source/3rdParty/SDL2/src/video/wayland/SDL_waylandtouch.c265
-rw-r--r--Source/3rdParty/SDL2/src/video/wayland/SDL_waylandtouch.h352
-rw-r--r--Source/3rdParty/SDL2/src/video/wayland/SDL_waylandvideo.c517
-rw-r--r--Source/3rdParty/SDL2/src/video/wayland/SDL_waylandvideo.h85
-rw-r--r--Source/3rdParty/SDL2/src/video/wayland/SDL_waylandvulkan.c176
-rw-r--r--Source/3rdParty/SDL2/src/video/wayland/SDL_waylandvulkan.h52
-rw-r--r--Source/3rdParty/SDL2/src/video/wayland/SDL_waylandwindow.c676
-rw-r--r--Source/3rdParty/SDL2/src/video/wayland/SDL_waylandwindow.h88
21 files changed, 0 insertions, 5105 deletions
diff --git a/Source/3rdParty/SDL2/src/video/wayland/SDL_waylandclipboard.c b/Source/3rdParty/SDL2/src/video/wayland/SDL_waylandclipboard.c
deleted file mode 100644
index 5fd826b..0000000
--- a/Source/3rdParty/SDL2/src/video/wayland/SDL_waylandclipboard.c
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
- Simple DirectMedia Layer
- Copyright (C) 1997-2018 Sam Lantinga <slouken@libsdl.org>
-
- This software is provided 'as-is', without any express or implied
- warranty. In no event will the authors be held liable for any damages
- arising from the use of this software.
-
- Permission is granted to anyone to use this software for any purpose,
- including commercial applications, and to alter it and redistribute it
- freely, subject to the following restrictions:
-
- 1. The origin of this software must not be misrepresented; you must not
- claim that you wrote the original software. If you use this software
- in a product, an acknowledgment in the product documentation would be
- appreciated but is not required.
- 2. Altered source versions must be plainly marked as such, and must not be
- misrepresented as being the original software.
- 3. This notice may not be removed or altered from any source distribution.
-*/
-#include "../../SDL_internal.h"
-
-#if SDL_VIDEO_DRIVER_WAYLAND
-
-#include "SDL_waylanddatamanager.h"
-#include "SDL_waylandevents_c.h"
-
-int
-Wayland_SetClipboardText(_THIS, const char *text)
-{
- SDL_VideoData *video_data = NULL;
- SDL_WaylandDataDevice *data_device = NULL;
-
- int status = 0;
-
- if (_this == NULL || _this->driverdata == NULL) {
- status = SDL_SetError("Video driver uninitialized");
- } else {
- video_data = _this->driverdata;
- /* TODO: Support more than one seat */
- data_device = Wayland_get_data_device(video_data->input);
- if (text[0] != '\0') {
- SDL_WaylandDataSource* source = Wayland_data_source_create(_this);
- Wayland_data_source_add_data(source, TEXT_MIME, text,
- strlen(text) + 1);
-
- status = Wayland_data_device_set_selection(data_device, source);
- if (status != 0) {
- Wayland_data_source_destroy(source);
- }
- } else {
- status = Wayland_data_device_clear_selection(data_device);
- }
- }
-
- return status;
-}
-
-char *
-Wayland_GetClipboardText(_THIS)
-{
- SDL_VideoData *video_data = NULL;
- SDL_WaylandDataDevice *data_device = NULL;
-
- char *text = NULL;
-
- void *buffer = NULL;
- size_t length = 0;
-
- if (_this == NULL || _this->driverdata == NULL) {
- SDL_SetError("Video driver uninitialized");
- } else {
- video_data = _this->driverdata;
- /* TODO: Support more than one seat */
- data_device = Wayland_get_data_device(video_data->input);
- if (data_device->selection_offer != NULL) {
- buffer = Wayland_data_offer_receive(data_device->selection_offer,
- &length, TEXT_MIME, SDL_TRUE);
- if (length > 0) {
- text = (char*) buffer;
- }
- } else if (data_device->selection_source != NULL) {
- buffer = Wayland_data_source_get_data(data_device->selection_source,
- &length, TEXT_MIME, SDL_TRUE);
- if (length > 0) {
- text = (char*) buffer;
- }
- }
- }
-
- if (text == NULL) {
- text = SDL_strdup("");
- }
-
- return text;
-}
-
-SDL_bool
-Wayland_HasClipboardText(_THIS)
-{
- SDL_VideoData *video_data = NULL;
- SDL_WaylandDataDevice *data_device = NULL;
-
- SDL_bool result = SDL_FALSE;
- if (_this == NULL || _this->driverdata == NULL) {
- SDL_SetError("Video driver uninitialized");
- } else {
- video_data = _this->driverdata;
- data_device = Wayland_get_data_device(video_data->input);
- if (data_device != NULL && Wayland_data_offer_has_mime(
- data_device->selection_offer, TEXT_MIME)) {
- result = SDL_TRUE;
- } else if(data_device != NULL && Wayland_data_source_has_mime(
- data_device->selection_source, TEXT_MIME)) {
- result = SDL_TRUE;
- }
- }
- return result;
-}
-
-#endif /* SDL_VIDEO_DRIVER_WAYLAND */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/Source/3rdParty/SDL2/src/video/wayland/SDL_waylandclipboard.h b/Source/3rdParty/SDL2/src/video/wayland/SDL_waylandclipboard.h
deleted file mode 100644
index 467e1c7..0000000
--- a/Source/3rdParty/SDL2/src/video/wayland/SDL_waylandclipboard.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- Simple DirectMedia Layer
- Copyright (C) 1997-2018 Sam Lantinga <slouken@libsdl.org>
-
- This software is provided 'as-is', without any express or implied
- warranty. In no event will the authors be held liable for any damages
- arising from the use of this software.
-
- Permission is granted to anyone to use this software for any purpose,
- including commercial applications, and to alter it and redistribute it
- freely, subject to the following restrictions:
-
- 1. The origin of this software must not be misrepresented; you must not
- claim that you wrote the original software. If you use this software
- in a product, an acknowledgment in the product documentation would be
- appreciated but is not required.
- 2. Altered source versions must be plainly marked as such, and must not be
- misrepresented as being the original software.
- 3. This notice may not be removed or altered from any source distribution.
-*/
-#include "../../SDL_internal.h"
-
-#ifndef SDL_waylandclipboard_h_
-#define SDL_waylandclipboard_h_
-
-extern int Wayland_SetClipboardText(_THIS, const char *text);
-extern char *Wayland_GetClipboardText(_THIS);
-extern SDL_bool Wayland_HasClipboardText(_THIS);
-
-#endif /* SDL_waylandclipboard_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/Source/3rdParty/SDL2/src/video/wayland/SDL_waylanddatamanager.c b/Source/3rdParty/SDL2/src/video/wayland/SDL_waylanddatamanager.c
deleted file mode 100644
index f1b9742..0000000
--- a/Source/3rdParty/SDL2/src/video/wayland/SDL_waylanddatamanager.c
+++ /dev/null
@@ -1,468 +0,0 @@
-/*
- Simple DirectMedia Layer
- Copyright (C) 1997-2018 Sam Lantinga <slouken@libsdl.org>
-
- This software is provided 'as-is', without any express or implied
- warranty. In no event will the authors be held liable for any damages
- arising from the use of this software.
-
- Permission is granted to anyone to use this software for any purpose,
- including commercial applications, and to alter it and redistribute it
- freely, subject to the following restrictions:
-
- 1. The origin of this software must not be misrepresented; you must not
- claim that you wrote the original software. If you use this software
- in a product, an acknowledgment in the product documentation would be
- appreciated but is not required.
- 2. Altered source versions must be plainly marked as such, and must not be
- misrepresented as being the original software.
- 3. This notice may not be removed or altered from any source distribution.
-*/
-
-#include "../../SDL_internal.h"
-
-#if SDL_VIDEO_DRIVER_WAYLAND
-
-#include <fcntl.h>
-#include <unistd.h>
-#include <limits.h>
-#include <signal.h>
-
-#include "SDL_stdinc.h"
-#include "SDL_assert.h"
-#include "../../core/unix/SDL_poll.h"
-
-#include "SDL_waylandvideo.h"
-#include "SDL_waylanddatamanager.h"
-
-#include "SDL_waylanddyn.h"
-
-static ssize_t
-write_pipe(int fd, const void* buffer, size_t total_length, size_t *pos)
-{
- int ready = 0;
- ssize_t bytes_written = 0;
- ssize_t length = total_length - *pos;
-
- sigset_t sig_set;
- sigset_t old_sig_set;
- struct timespec zerotime = {0};
-
- ready = SDL_IOReady(fd, SDL_TRUE, 1 * 1000);
-
- sigemptyset(&sig_set);
- sigaddset(&sig_set, SIGPIPE);
-
- pthread_sigmask(SIG_BLOCK, &sig_set, &old_sig_set);
-
- if (ready == 0) {
- bytes_written = SDL_SetError("Pipe timeout");
- } else if (ready < 0) {
- bytes_written = SDL_SetError("Pipe select error");
- } else {
- if (length > 0) {
- bytes_written = write(fd, (Uint8*)buffer + *pos, SDL_min(length, PIPE_BUF));
- }
-
- if (bytes_written > 0) {
- *pos += bytes_written;
- }
- }
-
- sigtimedwait(&sig_set, 0, &zerotime);
- pthread_sigmask(SIG_SETMASK, &old_sig_set, NULL);
-
- return bytes_written;
-}
-
-static ssize_t
-read_pipe(int fd, void** buffer, size_t* total_length, SDL_bool null_terminate)
-{
- int ready = 0;
- void* output_buffer = NULL;
- char temp[PIPE_BUF];
- size_t new_buffer_length = 0;
- ssize_t bytes_read = 0;
- size_t pos = 0;
-
- ready = SDL_IOReady(fd, SDL_FALSE, 1 * 1000);
-
- if (ready == 0) {
- bytes_read = SDL_SetError("Pipe timeout");
- } else if (ready < 0) {
- bytes_read = SDL_SetError("Pipe select error");
- } else {
- bytes_read = read(fd, temp, sizeof(temp));
- }
-
- if (bytes_read > 0) {
- pos = *total_length;
- *total_length += bytes_read;
-
- if (null_terminate == SDL_TRUE) {
- new_buffer_length = *total_length + 1;
- } else {
- new_buffer_length = *total_length;
- }
-
- if (*buffer == NULL) {
- output_buffer = SDL_malloc(new_buffer_length);
- } else {
- output_buffer = SDL_realloc(*buffer, new_buffer_length);
- }
-
- if (output_buffer == NULL) {
- bytes_read = SDL_OutOfMemory();
- } else {
- SDL_memcpy((Uint8*)output_buffer + pos, temp, bytes_read);
-
- if (null_terminate == SDL_TRUE) {
- SDL_memset((Uint8*)output_buffer + (new_buffer_length - 1), 0, 1);
- }
-
- *buffer = output_buffer;
- }
- }
-
- return bytes_read;
-}
-
-#define MIME_LIST_SIZE 4
-
-static const char* mime_conversion_list[MIME_LIST_SIZE][2] = {
- {"text/plain", TEXT_MIME},
- {"TEXT", TEXT_MIME},
- {"UTF8_STRING", TEXT_MIME},
- {"STRING", TEXT_MIME}
-};
-
-const char*
-Wayland_convert_mime_type(const char *mime_type)
-{
- const char *found = mime_type;
-
- size_t index = 0;
-
- for (index = 0; index < MIME_LIST_SIZE; ++index) {
- if (strcmp(mime_conversion_list[index][0], mime_type) == 0) {
- found = mime_conversion_list[index][1];
- break;
- }
- }
-
- return found;
-}
-
-static SDL_MimeDataList*
-mime_data_list_find(struct wl_list* list,
- const char* mime_type)
-{
- SDL_MimeDataList *found = NULL;
-
- SDL_MimeDataList *mime_list = NULL;
- wl_list_for_each(mime_list, list, link) {
- if (strcmp(mime_list->mime_type, mime_type) == 0) {
- found = mime_list;
- break;
- }
- }
- return found;
-}
-
-static int
-mime_data_list_add(struct wl_list* list,
- const char* mime_type,
- void* buffer, size_t length)
-{
- int status = 0;
- size_t mime_type_length = 0;
-
- SDL_MimeDataList *mime_data = NULL;
-
- mime_data = mime_data_list_find(list, mime_type);
-
- if (mime_data == NULL) {
- mime_data = SDL_calloc(1, sizeof(*mime_data));
- if (mime_data == NULL) {
- status = SDL_OutOfMemory();
- } else {
- WAYLAND_wl_list_insert(list, &(mime_data->link));
-
- mime_type_length = strlen(mime_type) + 1;
- mime_data->mime_type = SDL_malloc(mime_type_length);
- if (mime_data->mime_type == NULL) {
- status = SDL_OutOfMemory();
- } else {
- SDL_memcpy(mime_data->mime_type, mime_type, mime_type_length);
- }
- }
- }
-
- if (mime_data != NULL && buffer != NULL && length > 0) {
- if (mime_data->data != NULL) {
- SDL_free(mime_data->data);
- }
- mime_data->data = buffer;
- mime_data->length = length;
- }
-
- return status;
-}
-
-static void
-mime_data_list_free(struct wl_list *list)
-{
- SDL_MimeDataList *mime_data = NULL;
- SDL_MimeDataList *next = NULL;
-
- wl_list_for_each_safe(mime_data, next, list, link) {
- if (mime_data->data != NULL) {
- SDL_free(mime_data->data);
- }
- if (mime_data->mime_type != NULL) {
- SDL_free(mime_data->mime_type);
- }
- SDL_free(mime_data);
- }
-}
-
-ssize_t
-Wayland_data_source_send(SDL_WaylandDataSource *source,
- const char *mime_type, int fd)
-{
- size_t written_bytes = 0;
- ssize_t status = 0;
- SDL_MimeDataList *mime_data = NULL;
-
- mime_type = Wayland_convert_mime_type(mime_type);
- mime_data = mime_data_list_find(&source->mimes,
- mime_type);
-
- if (mime_data == NULL || mime_data->data == NULL) {
- status = SDL_SetError("Invalid mime type");
- close(fd);
- } else {
- while (write_pipe(fd, mime_data->data, mime_data->length,
- &written_bytes) > 0);
- close(fd);
- status = written_bytes;
- }
- return status;
-}
-
-int Wayland_data_source_add_data(SDL_WaylandDataSource *source,
- const char *mime_type,
- const void *buffer,
- size_t length)
-{
- int status = 0;
- if (length > 0) {
- void *internal_buffer = SDL_malloc(length);
- if (internal_buffer == NULL) {
- status = SDL_OutOfMemory();
- } else {
- SDL_memcpy(internal_buffer, buffer, length);
- status = mime_data_list_add(&source->mimes, mime_type,
- internal_buffer, length);
- }
- }
- return status;
-}
-
-SDL_bool
-Wayland_data_source_has_mime(SDL_WaylandDataSource *source,
- const char *mime_type)
-{
- SDL_bool found = SDL_FALSE;
-
- if (source != NULL) {
- found = mime_data_list_find(&source->mimes, mime_type) != NULL;
- }
- return found;
-}
-
-void*
-Wayland_data_source_get_data(SDL_WaylandDataSource *source,
- size_t *length, const char* mime_type,
- SDL_bool null_terminate)
-{
- SDL_MimeDataList *mime_data = NULL;
- void *buffer = NULL;
- *length = 0;
-
- if (source == NULL) {
- SDL_SetError("Invalid data source");
- } else {
- mime_data = mime_data_list_find(&source->mimes, mime_type);
- if (mime_data != NULL && mime_data->length > 0) {
- buffer = SDL_malloc(mime_data->length);
- if (buffer == NULL) {
- *length = SDL_OutOfMemory();
- } else {
- *length = mime_data->length;
- SDL_memcpy(buffer, mime_data->data, mime_data->length);
- }
- }
- }
-
- return buffer;
-}
-
-void
-Wayland_data_source_destroy(SDL_WaylandDataSource *source)
-{
- if (source != NULL) {
- wl_data_source_destroy(source->source);
- mime_data_list_free(&source->mimes);
- SDL_free(source);
- }
-}
-
-void*
-Wayland_data_offer_receive(SDL_WaylandDataOffer *offer,
- size_t *length, const char* mime_type,
- SDL_bool null_terminate)
-{
- SDL_WaylandDataDevice *data_device = NULL;
-
- int pipefd[2];
- void *buffer = NULL;
- *length = 0;
-
- if (offer == NULL) {
- SDL_SetError("Invalid data offer");
- } else if ((data_device = offer->data_device) == NULL) {
- SDL_SetError("Data device not initialized");
- } else if (pipe2(pipefd, O_CLOEXEC|O_NONBLOCK) == -1) {
- SDL_SetError("Could not read pipe");
- } else {
- wl_data_offer_receive(offer->offer, mime_type, pipefd[1]);
-
- /* TODO: Needs pump and flush? */
- WAYLAND_wl_display_flush(data_device->video_data->display);
-
- close(pipefd[1]);
-
- while (read_pipe(pipefd[0], &buffer, length, null_terminate) > 0);
- close(pipefd[0]);
- }
- return buffer;
-}
-
-int
-Wayland_data_offer_add_mime(SDL_WaylandDataOffer *offer,
- const char* mime_type)
-{
- return mime_data_list_add(&offer->mimes, mime_type, NULL, 0);
-}
-
-
-SDL_bool
-Wayland_data_offer_has_mime(SDL_WaylandDataOffer *offer,
- const char *mime_type)
-{
- SDL_bool found = SDL_FALSE;
-
- if (offer != NULL) {
- found = mime_data_list_find(&offer->mimes, mime_type) != NULL;
- }
- return found;
-}
-
-void
-Wayland_data_offer_destroy(SDL_WaylandDataOffer *offer)
-{
- if (offer != NULL) {
- wl_data_offer_destroy(offer->offer);
- mime_data_list_free(&offer->mimes);
- SDL_free(offer);
- }
-}
-
-int
-Wayland_data_device_clear_selection(SDL_WaylandDataDevice *data_device)
-{
- int status = 0;
-
- if (data_device == NULL || data_device->data_device == NULL) {
- status = SDL_SetError("Invalid Data Device");
- } else if (data_device->selection_source != 0) {
- wl_data_device_set_selection(data_device->data_device, NULL, 0);
- data_device->selection_source = NULL;
- }
- return status;
-}
-
-int
-Wayland_data_device_set_selection(SDL_WaylandDataDevice *data_device,
- SDL_WaylandDataSource *source)
-{
- int status = 0;
- size_t num_offers = 0;
- size_t index = 0;
-
- if (data_device == NULL) {
- status = SDL_SetError("Invalid Data Device");
- } else if (source == NULL) {
- status = SDL_SetError("Invalid source");
- } else {
- SDL_MimeDataList *mime_data = NULL;
-
- wl_list_for_each(mime_data, &(source->mimes), link) {
- wl_data_source_offer(source->source,
- mime_data->mime_type);
-
- /* TODO - Improve system for multiple mime types to same data */
- for (index = 0; index < MIME_LIST_SIZE; ++index) {
- if (strcmp(mime_conversion_list[index][1], mime_data->mime_type) == 0) {
- wl_data_source_offer(source->source,
- mime_conversion_list[index][0]);
- }
- }
- /* */
-
- ++num_offers;
- }
-
- if (num_offers == 0) {
- Wayland_data_device_clear_selection(data_device);
- status = SDL_SetError("No mime data");
- } else {
- /* Only set if there is a valid serial if not set it later */
- if (data_device->selection_serial != 0) {
- wl_data_device_set_selection(data_device->data_device,
- source->source,
- data_device->selection_serial);
- }
- data_device->selection_source = source;
- }
- }
-
- return status;
-}
-
-int
-Wayland_data_device_set_serial(SDL_WaylandDataDevice *data_device,
- uint32_t serial)
-{
- int status = -1;
- if (data_device != NULL) {
- status = 0;
-
- /* If there was no serial and there is a pending selection set it now. */
- if (data_device->selection_serial == 0
- && data_device->selection_source != NULL) {
- wl_data_device_set_selection(data_device->data_device,
- data_device->selection_source->source,
- serial);
- }
-
- data_device->selection_serial = serial;
- }
-
- return status;
-}
-
-#endif /* SDL_VIDEO_DRIVER_WAYLAND */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/Source/3rdParty/SDL2/src/video/wayland/SDL_waylanddatamanager.h b/Source/3rdParty/SDL2/src/video/wayland/SDL_waylanddatamanager.h
deleted file mode 100644
index 9b13e64..0000000
--- a/Source/3rdParty/SDL2/src/video/wayland/SDL_waylanddatamanager.h
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- Simple DirectMedia Layer
- Copyright (C) 1997-2018 Sam Lantinga <slouken@libsdl.org>
-
- This software is provided 'as-is', without any express or implied
- warranty. In no event will the authors be held liable for any damages
- arising from the use of this software.
-
- Permission is granted to anyone to use this software for any purpose,
- including commercial applications, and to alter it and redistribute it
- freely, subject to the following restrictions:
-
- 1. The origin of this software must not be misrepresented; you must not
- claim that you wrote the original software. If you use this software
- in a product, an acknowledgment in the product documentation would be
- appreciated but is not required.
- 2. Altered source versions must be plainly marked as such, and must not be
- misrepresented as being the original software.
- 3. This notice may not be removed or altered from any source distribution.
-*/
-
-#include "../../SDL_internal.h"
-
-#ifndef SDL_waylanddatamanager_h_
-#define SDL_waylanddatamanager_h_
-
-#include "SDL_waylandvideo.h"
-#include "SDL_waylandwindow.h"
-
-#define TEXT_MIME "text/plain;charset=utf-8"
-#define FILE_MIME "text/uri-list"
-
-typedef struct {
- char *mime_type;
- void *data;
- size_t length;
- struct wl_list link;
-} SDL_MimeDataList;
-
-typedef struct {
- struct wl_data_source *source;
- struct wl_list mimes;
-} SDL_WaylandDataSource;
-
-typedef struct {
- struct wl_data_offer *offer;
- struct wl_list mimes;
- void *data_device;
-} SDL_WaylandDataOffer;
-
-typedef struct {
- struct wl_data_device *data_device;
- SDL_VideoData *video_data;
-
- /* Drag and Drop */
- uint32_t drag_serial;
- SDL_WaylandDataOffer *drag_offer;
- SDL_WaylandDataOffer *selection_offer;
-
- /* Clipboard */
- uint32_t selection_serial;
- SDL_WaylandDataSource *selection_source;
-} SDL_WaylandDataDevice;
-
-extern const char* Wayland_convert_mime_type(const char *mime_type);
-
-/* Wayland Data Source - (Sending) */
-extern SDL_WaylandDataSource* Wayland_data_source_create(_THIS);
-extern ssize_t Wayland_data_source_send(SDL_WaylandDataSource *source,
- const char *mime_type, int fd);
-extern int Wayland_data_source_add_data(SDL_WaylandDataSource *source,
- const char *mime_type,
- const void *buffer,
- size_t length);
-extern SDL_bool Wayland_data_source_has_mime(SDL_WaylandDataSource *source,
- const char *mime_type);
-extern void* Wayland_data_source_get_data(SDL_WaylandDataSource *source,
- size_t *length,
- const char *mime_type,
- SDL_bool null_terminate);
-extern void Wayland_data_source_destroy(SDL_WaylandDataSource *source);
-
-/* Wayland Data Offer - (Receiving) */
-extern void* Wayland_data_offer_receive(SDL_WaylandDataOffer *offer,
- size_t *length,
- const char *mime_type,
- SDL_bool null_terminate);
-extern SDL_bool Wayland_data_offer_has_mime(SDL_WaylandDataOffer *offer,
- const char *mime_type);
-extern int Wayland_data_offer_add_mime(SDL_WaylandDataOffer *offer,
- const char *mime_type);
-extern void Wayland_data_offer_destroy(SDL_WaylandDataOffer *offer);
-
-/* Clipboard */
-extern int Wayland_data_device_clear_selection(SDL_WaylandDataDevice *device);
-extern int Wayland_data_device_set_selection(SDL_WaylandDataDevice *device,
- SDL_WaylandDataSource *source);
-extern int Wayland_data_device_set_serial(SDL_WaylandDataDevice *device,
- uint32_t serial);
-#endif /* SDL_waylanddatamanager_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
-
diff --git a/Source/3rdParty/SDL2/src/video/wayland/SDL_waylanddyn.c b/Source/3rdParty/SDL2/src/video/wayland/SDL_waylanddyn.c
deleted file mode 100644
index 98cc518..0000000
--- a/Source/3rdParty/SDL2/src/video/wayland/SDL_waylanddyn.c
+++ /dev/null
@@ -1,178 +0,0 @@
-/*
- Simple DirectMedia Layer
- Copyright (C) 1997-2018 Sam Lantinga <slouken@libsdl.org>
-
- This software is provided 'as-is', without any express or implied
- warranty. In no event will the authors be held liable for any damages
- arising from the use of this software.
-
- Permission is granted to anyone to use this software for any purpose,
- including commercial applications, and to alter it and redistribute it
- freely, subject to the following restrictions:
-
- 1. The origin of this software must not be misrepresented; you must not
- claim that you wrote the original software. If you use this software
- in a product, an acknowledgment in the product documentation would be
- appreciated but is not required.
- 2. Altered source versions must be plainly marked as such, and must not be
- misrepresented as being the original software.
- 3. This notice may not be removed or altered from any source distribution.
-*/
-#include "../../SDL_internal.h"
-
-#if SDL_VIDEO_DRIVER_WAYLAND
-
-#define DEBUG_DYNAMIC_WAYLAND 0
-
-#include "SDL_waylanddyn.h"
-
-#if DEBUG_DYNAMIC_WAYLAND
-#include "SDL_log.h"
-#endif
-
-#ifdef SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC
-
-#include "SDL_name.h"
-#include "SDL_loadso.h"
-
-typedef struct
-{
- void *lib;
- const char *libname;
-} waylanddynlib;
-
-#ifndef SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC
-#define SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC NULL
-#endif
-#ifndef SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_EGL
-#define SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_EGL NULL
-#endif
-#ifndef SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_CURSOR
-#define SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_CURSOR NULL
-#endif
-#ifndef SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_XKBCOMMON
-#define SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_XKBCOMMON NULL
-#endif
-
-static waylanddynlib waylandlibs[] = {
- {NULL, SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC},
- {NULL, SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_EGL},
- {NULL, SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_CURSOR},
- {NULL, SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_XKBCOMMON}
-};
-
-static void *
-WAYLAND_GetSym(const char *fnname, int *pHasModule)
-{
- int i;
- void *fn = NULL;
- for (i = 0; i < SDL_TABLESIZE(waylandlibs); i++) {
- if (waylandlibs[i].lib != NULL) {
- fn = SDL_LoadFunction(waylandlibs[i].lib, fnname);
- if (fn != NULL)
- break;
- }
- }
-
-#if DEBUG_DYNAMIC_WAYLAND
- if (fn != NULL)
- SDL_Log("WAYLAND: Found '%s' in %s (%p)\n", fnname, waylandlibs[i].libname, fn);
- else
- SDL_Log("WAYLAND: Symbol '%s' NOT FOUND!\n", fnname);
-#endif
-
- if (fn == NULL)
- *pHasModule = 0; /* kill this module. */
-
- return fn;
-}
-
-#endif /* SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC */
-
-/* Define all the function pointers and wrappers... */
-#define SDL_WAYLAND_MODULE(modname) int SDL_WAYLAND_HAVE_##modname = 0;
-#define SDL_WAYLAND_SYM(rc,fn,params) SDL_DYNWAYLANDFN_##fn WAYLAND_##fn = NULL;
-#define SDL_WAYLAND_INTERFACE(iface) const struct wl_interface *WAYLAND_##iface = NULL;
-#include "SDL_waylandsym.h"
-
-static int wayland_load_refcount = 0;
-
-void
-SDL_WAYLAND_UnloadSymbols(void)
-{
- /* Don't actually unload if more than one module is using the libs... */
- if (wayland_load_refcount > 0) {
- if (--wayland_load_refcount == 0) {
-#ifdef SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC
- int i;
-#endif
-
- /* set all the function pointers to NULL. */
-#define SDL_WAYLAND_MODULE(modname) SDL_WAYLAND_HAVE_##modname = 0;
-#define SDL_WAYLAND_SYM(rc,fn,params) WAYLAND_##fn = NULL;
-#define SDL_WAYLAND_INTERFACE(iface) WAYLAND_##iface = NULL;
-#include "SDL_waylandsym.h"
-
-
-#ifdef SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC
- for (i = 0; i < SDL_TABLESIZE(waylandlibs); i++) {
- if (waylandlibs[i].lib != NULL) {
- SDL_UnloadObject(waylandlibs[i].lib);
- waylandlibs[i].lib = NULL;
- }
- }
-#endif
- }
- }
-}
-
-/* returns non-zero if all needed symbols were loaded. */
-int
-SDL_WAYLAND_LoadSymbols(void)
-{
- int rc = 1; /* always succeed if not using Dynamic WAYLAND stuff. */
-
- /* deal with multiple modules (dga, wayland, etc) needing these symbols... */
- if (wayland_load_refcount++ == 0) {
-#ifdef SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC
- int i;
- int *thismod = NULL;
- for (i = 0; i < SDL_TABLESIZE(waylandlibs); i++) {
- if (waylandlibs[i].libname != NULL) {
- waylandlibs[i].lib = SDL_LoadObject(waylandlibs[i].libname);
- }
- }
-
-#define SDL_WAYLAND_MODULE(modname) SDL_WAYLAND_HAVE_##modname = 1; /* default yes */
-#include "SDL_waylandsym.h"
-
-#define SDL_WAYLAND_MODULE(modname) thismod = &SDL_WAYLAND_HAVE_##modname;
-#define SDL_WAYLAND_SYM(rc,fn,params) WAYLAND_##fn = (SDL_DYNWAYLANDFN_##fn) WAYLAND_GetSym(#fn,thismod);
-#define SDL_WAYLAND_INTERFACE(iface) WAYLAND_##iface = (struct wl_interface *) WAYLAND_GetSym(#iface,thismod);
-#include "SDL_waylandsym.h"
-
- if (SDL_WAYLAND_HAVE_WAYLAND_CLIENT) {
- /* all required symbols loaded. */
- SDL_ClearError();
- } else {
- /* in case something got loaded... */
- SDL_WAYLAND_UnloadSymbols();
- rc = 0;
- }
-
-#else /* no dynamic WAYLAND */
-
-#define SDL_WAYLAND_MODULE(modname) SDL_WAYLAND_HAVE_##modname = 1; /* default yes */
-#define SDL_WAYLAND_SYM(rc,fn,params) WAYLAND_##fn = fn;
-#define SDL_WAYLAND_INTERFACE(iface) WAYLAND_##iface = &iface;
-#include "SDL_waylandsym.h"
-
-#endif
- }
-
- return rc;
-}
-
-#endif /* SDL_VIDEO_DRIVER_WAYLAND */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/Source/3rdParty/SDL2/src/video/wayland/SDL_waylanddyn.h b/Source/3rdParty/SDL2/src/video/wayland/SDL_waylanddyn.h
deleted file mode 100644
index 720427e..0000000
--- a/Source/3rdParty/SDL2/src/video/wayland/SDL_waylanddyn.h
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- Simple DirectMedia Layer
- Copyright (C) 1997-2018 Sam Lantinga <slouken@libsdl.org>
-
- This software is provided 'as-is', without any express or implied
- warranty. In no event will the authors be held liable for any damages
- arising from the use of this software.
-
- Permission is granted to anyone to use this software for any purpose,
- including commercial applications, and to alter it and redistribute it
- freely, subject to the following restrictions:
-
- 1. The origin of this software must not be misrepresented; you must not
- claim that you wrote the original software. If you use this software
- in a product, an acknowledgment in the product documentation would be
- appreciated but is not required.
- 2. Altered source versions must be plainly marked as such, and must not be
- misrepresented as being the original software.
- 3. This notice may not be removed or altered from any source distribution.
-*/
-
-#ifndef SDL_waylanddyn_h_
-#define SDL_waylanddyn_h_
-
-#include "../../SDL_internal.h"
-
-/* We can't include wayland-client.h here
- * but we need some structs from it
- */
-struct wl_interface;
-struct wl_proxy;
-struct wl_event_queue;
-struct wl_display;
-struct wl_surface;
-struct wl_shm;
-
-#include <stdint.h>
-#include "wayland-cursor.h"
-#include "wayland-util.h"
-#include "xkbcommon/xkbcommon.h"
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-int SDL_WAYLAND_LoadSymbols(void);
-void SDL_WAYLAND_UnloadSymbols(void);
-
-#define SDL_WAYLAND_MODULE(modname) extern int SDL_WAYLAND_HAVE_##modname;
-#define SDL_WAYLAND_SYM(rc,fn,params) \
- typedef rc (*SDL_DYNWAYLANDFN_##fn) params; \
- extern SDL_DYNWAYLANDFN_##fn WAYLAND_##fn;
-#define SDL_WAYLAND_INTERFACE(iface) extern const struct wl_interface *WAYLAND_##iface;
-#include "SDL_waylandsym.h"
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#ifdef SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC
-
-#ifdef _WAYLAND_CLIENT_H
-#error Do not include wayland-client ahead of SDL_waylanddyn.h in dynamic loading mode
-#endif
-
-/* wayland-client-protocol.h included from wayland-client.h
- * has inline functions that require these to be defined in dynamic loading mode
- */
-
-#define wl_proxy_create (*WAYLAND_wl_proxy_create)
-#define wl_proxy_destroy (*WAYLAND_wl_proxy_destroy)
-#define wl_proxy_marshal (*WAYLAND_wl_proxy_marshal)
-#define wl_proxy_set_user_data (*WAYLAND_wl_proxy_set_user_data)
-#define wl_proxy_get_user_data (*WAYLAND_wl_proxy_get_user_data)
-#define wl_proxy_add_listener (*WAYLAND_wl_proxy_add_listener)
-#define wl_proxy_marshal_constructor (*WAYLAND_wl_proxy_marshal_constructor)
-#define wl_proxy_marshal_constructor_versioned (*WAYLAND_wl_proxy_marshal_constructor_versioned)
-
-#define wl_seat_interface (*WAYLAND_wl_seat_interface)
-#define wl_surface_interface (*WAYLAND_wl_surface_interface)
-#define wl_shm_pool_interface (*WAYLAND_wl_shm_pool_interface)
-#define wl_buffer_interface (*WAYLAND_wl_buffer_interface)
-#define wl_registry_interface (*WAYLAND_wl_registry_interface)
-#define wl_shell_surface_interface (*WAYLAND_wl_shell_surface_interface)
-#define wl_region_interface (*WAYLAND_wl_region_interface)
-#define wl_pointer_interface (*WAYLAND_wl_pointer_interface)
-#define wl_keyboard_interface (*WAYLAND_wl_keyboard_interface)
-#define wl_compositor_interface (*WAYLAND_wl_compositor_interface)
-#define wl_output_interface (*WAYLAND_wl_output_interface)
-#define wl_shell_interface (*WAYLAND_wl_shell_interface)
-#define wl_shm_interface (*WAYLAND_wl_shm_interface)
-#define wl_data_device_interface (*WAYLAND_wl_data_device_interface)
-#define wl_data_offer_interface (*WAYLAND_wl_data_offer_interface)
-#define wl_data_source_interface (*WAYLAND_wl_data_source_interface)
-#define wl_data_device_manager_interface (*WAYLAND_wl_data_device_manager_interface)
-
-#endif /* SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC */
-
-#include "wayland-client-core.h"
-#include "wayland-client-protocol.h"
-#include "wayland-egl.h"
-
-#endif /* SDL_waylanddyn_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/Source/3rdParty/SDL2/src/video/wayland/SDL_waylandevents.c b/Source/3rdParty/SDL2/src/video/wayland/SDL_waylandevents.c
deleted file mode 100644
index 0c953a5..0000000
--- a/Source/3rdParty/SDL2/src/video/wayland/SDL_waylandevents.c
+++ /dev/null
@@ -1,1136 +0,0 @@
-/*
- Simple DirectMedia Layer
- Copyright (C) 1997-2018 Sam Lantinga <slouken@libsdl.org>
-
- This software is provided 'as-is', without any express or implied
- warranty. In no event will the authors be held liable for any damages
- arising from the use of this software.
-
- Permission is granted to anyone to use this software for any purpose,
- including commercial applications, and to alter it and redistribute it
- freely, subject to the following restrictions:
-
- 1. The origin of this software must not be misrepresented; you must not
- claim that you wrote the original software. If you use this software
- in a product, an acknowledgment in the product documentation would be
- appreciated but is not required.
- 2. Altered source versions must be plainly marked as such, and must not be
- misrepresented as being the original software.
- 3. This notice may not be removed or altered from any source distribution.
-*/
-
-#include "../../SDL_internal.h"
-
-#if SDL_VIDEO_DRIVER_WAYLAND
-
-#include "SDL_stdinc.h"
-#include "SDL_assert.h"
-#include "SDL_log.h"
-
-#include "../../core/unix/SDL_poll.h"
-#include "../../events/SDL_sysevents.h"
-#include "../../events/SDL_events_c.h"
-#include "../../events/scancodes_xfree86.h"
-
-#include "SDL_waylandvideo.h"
-#include "SDL_waylandevents_c.h"
-#include "SDL_waylandwindow.h"
-
-#include "SDL_waylanddyn.h"
-
-#include "pointer-constraints-unstable-v1-client-protocol.h"
-#include "relative-pointer-unstable-v1-client-protocol.h"
-#include "xdg-shell-client-protocol.h"
-#include "xdg-shell-unstable-v6-client-protocol.h"
-
-#include <linux/input.h>
-#include <sys/select.h>
-#include <sys/mman.h>
-#include <poll.h>
-#include <unistd.h>
-#include <xkbcommon/xkbcommon.h>
-
-struct SDL_WaylandInput {
- SDL_VideoData *display;
- struct wl_seat *seat;
- struct wl_pointer *pointer;
- struct wl_touch *touch;
- struct wl_keyboard *keyboard;
- SDL_WaylandDataDevice *data_device;
- struct zwp_relative_pointer_v1 *relative_pointer;
- SDL_WindowData *pointer_focus;
- SDL_WindowData *keyboard_focus;
-
- /* Last motion location */
- wl_fixed_t sx_w;
- wl_fixed_t sy_w;
-
- double dx_frac;
- double dy_frac;
-
- struct {
- struct xkb_keymap *keymap;
- struct xkb_state *state;
- } xkb;
-};
-
-struct SDL_WaylandTouchPoint {
- SDL_TouchID id;
- float x;
- float y;
- struct wl_surface* surface;
-
- struct SDL_WaylandTouchPoint* prev;
- struct SDL_WaylandTouchPoint* next;
-};
-
-struct SDL_WaylandTouchPointList {
- struct SDL_WaylandTouchPoint* head;
- struct SDL_WaylandTouchPoint* tail;
-};
-
-static struct SDL_WaylandTouchPointList touch_points = {NULL, NULL};
-
-static void
-touch_add(SDL_TouchID id, float x, float y, struct wl_surface *surface)
-{
- struct SDL_WaylandTouchPoint* tp = SDL_malloc(sizeof(struct SDL_WaylandTouchPoint));
-
- tp->id = id;
- tp->x = x;
- tp->y = y;
- tp->surface = surface;
-
- if (touch_points.tail) {
- touch_points.tail->next = tp;
- tp->prev = touch_points.tail;
- } else {
- touch_points.head = tp;
- tp->prev = NULL;
- }
-
- touch_points.tail = tp;
- tp->next = NULL;
-}
-
-static void
-touch_update(SDL_TouchID id, float x, float y)
-{
- struct SDL_WaylandTouchPoint* tp = touch_points.head;
-
- while (tp) {
- if (tp->id == id) {
- tp->x = x;
- tp->y = y;
- }
-
- tp = tp->next;
- }
-}
-
-static void
-touch_del(SDL_TouchID id, float* x, float* y)
-{
- struct SDL_WaylandTouchPoint* tp = touch_points.head;
-
- while (tp) {
- if (tp->id == id) {
- *x = tp->x;
- *y = tp->y;
-
- if (tp->prev) {
- tp->prev->next = tp->next;
- } else {
- touch_points.head = tp->next;
- }
-
- if (tp->next) {
- tp->next->prev = tp->prev;
- } else {
- touch_points.tail = tp->prev;
- }
-
- SDL_free(tp);
- }
-
- tp = tp->next;
- }
-}
-
-static struct wl_surface*
-touch_surface(SDL_TouchID id)
-{
- struct SDL_WaylandTouchPoint* tp = touch_points.head;
-
- while (tp) {
- if (tp->id == id) {
- return tp->surface;
- }
-
- tp = tp->next;
- }
-
- return NULL;
-}
-
-void
-Wayland_PumpEvents(_THIS)
-{
- SDL_VideoData *d = _this->driverdata;
-
- WAYLAND_wl_display_flush(d->display);
-
- if (SDL_IOReady(WAYLAND_wl_display_get_fd(d->display), SDL_FALSE, 0)) {
- WAYLAND_wl_display_dispatch(d->display);
- }
- else
- {
- WAYLAND_wl_display_dispatch_pending(d->display);
- }
-}
-
-static void
-pointer_handle_enter(void *data, struct wl_pointer *pointer,
- uint32_t serial, struct wl_surface *surface,
- wl_fixed_t sx_w, wl_fixed_t sy_w)
-{
- struct SDL_WaylandInput *input = data;
- SDL_WindowData *window;
-
- if (!surface) {
- /* enter event for a window we've just destroyed */
- return;
- }
-
- /* This handler will be called twice in Wayland 1.4
- * Once for the window surface which has valid user data
- * and again for the mouse cursor surface which does not have valid user data
- * We ignore the later
- */
-
- window = (SDL_WindowData *)wl_surface_get_user_data(surface);
-
- if (window) {
- input->pointer_focus = window;
- SDL_SetMouseFocus(window->sdlwindow);
- }
-}
-
-static void
-pointer_handle_leave(void *data, struct wl_pointer *pointer,
- uint32_t serial, struct wl_surface *surface)
-{
- struct SDL_WaylandInput *input = data;
-
- if (input->pointer_focus) {
- SDL_SetMouseFocus(NULL);
- input->pointer_focus = NULL;
- }
-}
-
-static void
-pointer_handle_motion(void *data, struct wl_pointer *pointer,
- uint32_t time, wl_fixed_t sx_w, wl_fixed_t sy_w)
-{
- struct SDL_WaylandInput *input = data;
- SDL_WindowData *window = input->pointer_focus;
- input->sx_w = sx_w;
- input->sy_w = sy_w;
- if (input->pointer_focus) {
- const int sx = wl_fixed_to_int(sx_w);
- const int sy = wl_fixed_to_int(sy_w);
- SDL_SendMouseMotion(window->sdlwindow, 0, 0, sx, sy);
- }
-}
-
-static SDL_bool
-ProcessHitTest(struct SDL_WaylandInput *input, uint32_t serial)
-{
- SDL_WindowData *window_data = input->pointer_focus;
- SDL_Window *window = window_data->sdlwindow;
-
- if (window->hit_test) {
- const SDL_Point point = { wl_fixed_to_int(input->sx_w), wl_fixed_to_int(input->sy_w) };
- const SDL_HitTestResult rc = window->hit_test(window, &point, window->hit_test_data);
-
- static const uint32_t directions_wl[] = {
- WL_SHELL_SURFACE_RESIZE_TOP_LEFT, WL_SHELL_SURFACE_RESIZE_TOP,
- WL_SHELL_SURFACE_RESIZE_TOP_RIGHT, WL_SHELL_SURFACE_RESIZE_RIGHT,
- WL_SHELL_SURFACE_RESIZE_BOTTOM_RIGHT, WL_SHELL_SURFACE_RESIZE_BOTTOM,
- WL_SHELL_SURFACE_RESIZE_BOTTOM_LEFT, WL_SHELL_SURFACE_RESIZE_LEFT
- };
-
- /* the names are different (ZXDG_TOPLEVEL_V6_RESIZE_EDGE_* vs
- WL_SHELL_SURFACE_RESIZE_*), but the values are the same. */
- const uint32_t *directions_zxdg = directions_wl;
-
- switch (rc) {
- case SDL_HITTEST_DRAGGABLE:
- if (input->display->shell.xdg) {
- xdg_toplevel_move(window_data->shell_surface.xdg.roleobj.toplevel, input->seat, serial);
- } else if (input->display->shell.zxdg) {
- zxdg_toplevel_v6_move(window_data->shell_surface.zxdg.roleobj.toplevel, input->seat, serial);
- } else {
- wl_shell_surface_move(window_data->shell_surface.wl, input->seat, serial);
- }
- return SDL_TRUE;
-
- case SDL_HITTEST_RESIZE_TOPLEFT:
- case SDL_HITTEST_RESIZE_TOP:
- case SDL_HITTEST_RESIZE_TOPRIGHT:
- case SDL_HITTEST_RESIZE_RIGHT:
- case SDL_HITTEST_RESIZE_BOTTOMRIGHT:
- case SDL_HITTEST_RESIZE_BOTTOM:
- case SDL_HITTEST_RESIZE_BOTTOMLEFT:
- case SDL_HITTEST_RESIZE_LEFT:
- if (input->display->shell.xdg) {
- xdg_toplevel_resize(window_data->shell_surface.xdg.roleobj.toplevel, input->seat, serial, directions_zxdg[rc - SDL_HITTEST_RESIZE_TOPLEFT]);
- } else if (input->display->shell.zxdg) {
- zxdg_toplevel_v6_resize(window_data->shell_surface.zxdg.roleobj.toplevel, input->seat, serial, directions_zxdg[rc - SDL_HITTEST_RESIZE_TOPLEFT]);
- } else {
- wl_shell_surface_resize(window_data->shell_surface.wl, input->seat, serial, directions_wl[rc - SDL_HITTEST_RESIZE_TOPLEFT]);
- }
- return SDL_TRUE;
-
- default: return SDL_FALSE;
- }
- }
-
- return SDL_FALSE;
-}
-
-static void
-pointer_handle_button_common(struct SDL_WaylandInput *input, uint32_t serial,
- uint32_t time, uint32_t button, uint32_t state_w)
-{
- SDL_WindowData *window = input->pointer_focus;
- enum wl_pointer_button_state state = state_w;
- uint32_t sdl_button;
-
- if (input->pointer_focus) {
- switch (button) {
- case BTN_LEFT:
- sdl_button = SDL_BUTTON_LEFT;
- if (ProcessHitTest(input, serial)) {
- return; /* don't pass this event on to app. */
- }
- break;
- case BTN_MIDDLE:
- sdl_button = SDL_BUTTON_MIDDLE;
- break;
- case BTN_RIGHT:
- sdl_button = SDL_BUTTON_RIGHT;
- break;
- case BTN_SIDE:
- sdl_button = SDL_BUTTON_X1;
- break;
- case BTN_EXTRA:
- sdl_button = SDL_BUTTON_X2;
- break;
- default:
- return;
- }
-
- Wayland_data_device_set_serial(input->data_device, serial);
-
- SDL_SendMouseButton(window->sdlwindow, 0,
- state ? SDL_PRESSED : SDL_RELEASED, sdl_button);
- }
-}
-
-static void
-pointer_handle_button(void *data, struct wl_pointer *pointer, uint32_t serial,
- uint32_t time, uint32_t button, uint32_t state_w)
-{
- struct SDL_WaylandInput *input = data;
-
- pointer_handle_button_common(input, serial, time, button, state_w);
-}
-
-static void
-pointer_handle_axis_common(struct SDL_WaylandInput *input,
- uint32_t time, uint32_t axis, wl_fixed_t value)
-{
- SDL_WindowData *window = input->pointer_focus;
- enum wl_pointer_axis a = axis;
- float x, y;
-
- if (input->pointer_focus) {
- switch (a) {
- case WL_POINTER_AXIS_VERTICAL_SCROLL:
- x = 0;
- y = 0 - (float)wl_fixed_to_double(value);
- break;
- case WL_POINTER_AXIS_HORIZONTAL_SCROLL:
- x = 0 - (float)wl_fixed_to_double(value);
- y = 0;
- break;
- default:
- return;
- }
-
- SDL_SendMouseWheel(window->sdlwindow, 0, x, y, SDL_MOUSEWHEEL_NORMAL);
- }
-}
-
-static void
-pointer_handle_axis(void *data, struct wl_pointer *pointer,
- uint32_t time, uint32_t axis, wl_fixed_t value)
-{
- struct SDL_WaylandInput *input = data;
-
- pointer_handle_axis_common(input, time, axis, value);
-}
-
-static const struct wl_pointer_listener pointer_listener = {
- pointer_handle_enter,
- pointer_handle_leave,
- pointer_handle_motion,
- pointer_handle_button,
- pointer_handle_axis,
- NULL, /* frame */
- NULL, /* axis_source */
- NULL, /* axis_stop */
- NULL, /* axis_discrete */
-};
-
-static void
-touch_handler_down(void *data, struct wl_touch *touch, unsigned int serial,
- unsigned int timestamp, struct wl_surface *surface,
- int id, wl_fixed_t fx, wl_fixed_t fy)
-{
- float x, y;
- SDL_WindowData* window;
-
- window = (SDL_WindowData *)wl_surface_get_user_data(surface);
-
- x = wl_fixed_to_double(fx) / window->sdlwindow->w;
- y = wl_fixed_to_double(fy) / window->sdlwindow->h;
-
- touch_add(id, x, y, surface);
- SDL_SendTouch(1, (SDL_FingerID)id, SDL_TRUE, x, y, 1.0f);
-}
-
-static void
-touch_handler_up(void *data, struct wl_touch *touch, unsigned int serial,
- unsigned int timestamp, int id)
-{
- float x = 0, y = 0;
-
- touch_del(id, &x, &y);
- SDL_SendTouch(1, (SDL_FingerID)id, SDL_FALSE, x, y, 0.0f);
-}
-
-static void
-touch_handler_motion(void *data, struct wl_touch *touch, unsigned int timestamp,
- int id, wl_fixed_t fx, wl_fixed_t fy)
-{
- float x, y;
- SDL_WindowData* window;
-
- window = (SDL_WindowData *)wl_surface_get_user_data(touch_surface(id));
-
- x = wl_fixed_to_double(fx) / window->sdlwindow->w;
- y = wl_fixed_to_double(fy) / window->sdlwindow->h;
-
- touch_update(id, x, y);
- SDL_SendTouchMotion(1, (SDL_FingerID)id, x, y, 1.0f);
-}
-
-static void
-touch_handler_frame(void *data, struct wl_touch *touch)
-{
-
-}
-
-static void
-touch_handler_cancel(void *data, struct wl_touch *touch)
-{
-
-}
-
-static const struct wl_touch_listener touch_listener = {
- touch_handler_down,
- touch_handler_up,
- touch_handler_motion,
- touch_handler_frame,
- touch_handler_cancel,
- NULL, /* shape */
- NULL, /* orientation */
-};
-
-static void
-keyboard_handle_keymap(void *data, struct wl_keyboard *keyboard,
- uint32_t format, int fd, uint32_t size)
-{
- struct SDL_WaylandInput *input = data;
- char *map_str;
-
- if (!data) {
- close(fd);
- return;
- }
-
- if (format != WL_KEYBOARD_KEYMAP_FORMAT_XKB_V1) {
- close(fd);
- return;
- }
-
- map_str = mmap(NULL, size, PROT_READ, MAP_SHARED, fd, 0);
- if (map_str == MAP_FAILED) {
- close(fd);
- return;
- }
-
- input->xkb.keymap = WAYLAND_xkb_keymap_new_from_string(input->display->xkb_context,
- map_str,
- XKB_KEYMAP_FORMAT_TEXT_V1,
- 0);
- munmap(map_str, size);
- close(fd);
-
- if (!input->xkb.keymap) {
- fprintf(stderr, "failed to compile keymap\n");
- return;
- }
-
- input->xkb.state = WAYLAND_xkb_state_new(input->xkb.keymap);
- if (!input->xkb.state) {
- fprintf(stderr, "failed to create XKB state\n");
- WAYLAND_xkb_keymap_unref(input->xkb.keymap);
- input->xkb.keymap = NULL;
- return;
- }
-}
-
-static void
-keyboard_handle_enter(void *data, struct wl_keyboard *keyboard,
- uint32_t serial, struct wl_surface *surface,
- struct wl_array *keys)
-{
- struct SDL_WaylandInput *input = data;
- SDL_WindowData *window;
-
- if (!surface) {
- /* enter event for a window we've just destroyed */
- return;
- }
-
- window = wl_surface_get_user_data(surface);
-
- if (window) {
- input->keyboard_focus = window;
- window->keyboard_device = input;
- SDL_SetKeyboardFocus(window->sdlwindow);
- }
-}
-
-static void
-keyboard_handle_leave(void *data, struct wl_keyboard *keyboard,
- uint32_t serial, struct wl_surface *surface)
-{
- SDL_SetKeyboardFocus(NULL);
-}
-
-static void
-keyboard_handle_key(void *data, struct wl_keyboard *keyboard,
- uint32_t serial, uint32_t time, uint32_t key,
- uint32_t state_w)
-{
- struct SDL_WaylandInput *input = data;
- SDL_WindowData *window = input->keyboard_focus;
- enum wl_keyboard_key_state state = state_w;
- const xkb_keysym_t *syms;
- uint32_t scancode;
- char text[8];
- int size;
-
- if (key < SDL_arraysize(xfree86_scancode_table2)) {
- scancode = xfree86_scancode_table2[key];
-
- // TODO when do we get WL_KEYBOARD_KEY_STATE_REPEAT?
- if (scancode != SDL_SCANCODE_UNKNOWN)
- SDL_SendKeyboardKey(state == WL_KEYBOARD_KEY_STATE_PRESSED ?
- SDL_PRESSED : SDL_RELEASED, scancode);
- }
-
- if (!window || window->keyboard_device != input || !input->xkb.state)
- return;
-
- // TODO can this happen?
- if (WAYLAND_xkb_state_key_get_syms(input->xkb.state, key + 8, &syms) != 1)
- return;
-
- if (state) {
- size = WAYLAND_xkb_keysym_to_utf8(syms[0], text, sizeof text);
-
- if (size > 0) {
- text[size] = 0;
-
- Wayland_data_device_set_serial(input->data_device, serial);
-
- SDL_SendKeyboardText(text);
- }
- }
-}
-
-static void
-keyboard_handle_modifiers(void *data, struct wl_keyboard *keyboard,
- uint32_t serial, uint32_t mods_depressed,
- uint32_t mods_latched, uint32_t mods_locked,
- uint32_t group)
-{
- struct SDL_WaylandInput *input = data;
-
- WAYLAND_xkb_state_update_mask(input->xkb.state, mods_depressed, mods_latched,
- mods_locked, 0, 0, group);
-}
-
-static const struct wl_keyboard_listener keyboard_listener = {
- keyboard_handle_keymap,
- keyboard_handle_enter,
- keyboard_handle_leave,
- keyboard_handle_key,
- keyboard_handle_modifiers,
- NULL, /* repeat_info */
-};
-
-static void
-seat_handle_capabilities(void *data, struct wl_seat *seat,
- enum wl_seat_capability caps)
-{
- struct SDL_WaylandInput *input = data;
-
- if ((caps & WL_SEAT_CAPABILITY_POINTER) && !input->pointer) {
- input->pointer = wl_seat_get_pointer(seat);
- input->display->pointer = input->pointer;
- wl_pointer_set_user_data(input->pointer, input);
- wl_pointer_add_listener(input->pointer, &pointer_listener,
- input);
- } else if (!(caps & WL_SEAT_CAPABILITY_POINTER) && input->pointer) {
- wl_pointer_destroy(input->pointer);
- input->pointer = NULL;
- input->display->pointer = NULL;
- }
-
- if ((caps & WL_SEAT_CAPABILITY_TOUCH) && !input->touch) {
- SDL_AddTouch(1, "wayland_touch");
- input->touch = wl_seat_get_touch(seat);
- wl_touch_set_user_data(input->touch, input);
- wl_touch_add_listener(input->touch, &touch_listener,
- input);
- } else if (!(caps & WL_SEAT_CAPABILITY_TOUCH) && input->touch) {
- SDL_DelTouch(1);
- wl_touch_destroy(input->touch);
- input->touch = NULL;
- }
-
- if ((caps & WL_SEAT_CAPABILITY_KEYBOARD) && !input->keyboard) {
- input->keyboard = wl_seat_get_keyboard(seat);
- wl_keyboard_set_user_data(input->keyboard, input);
- wl_keyboard_add_listener(input->keyboard, &keyboard_listener,
- input);
- } else if (!(caps & WL_SEAT_CAPABILITY_KEYBOARD) && input->keyboard) {
- wl_keyboard_destroy(input->keyboard);
- input->keyboard = NULL;
- }
-}
-
-static const struct wl_seat_listener seat_listener = {
- seat_handle_capabilities,
- NULL, /* name */
-};
-
-static void
-data_source_handle_target(void *data, struct wl_data_source *wl_data_source,
- const char *mime_type)
-{
-}
-
-static void
-data_source_handle_send(void *data, struct wl_data_source *wl_data_source,
- const char *mime_type, int32_t fd)
-{
- Wayland_data_source_send((SDL_WaylandDataSource *)data, mime_type, fd);
-}
-
-static void
-data_source_handle_cancelled(void *data, struct wl_data_source *wl_data_source)
-{
- Wayland_data_source_destroy(data);
-}
-
-static void
-data_source_handle_dnd_drop_performed(void *data, struct wl_data_source *wl_data_source)
-{
-}
-
-static void
-data_source_handle_dnd_finished(void *data, struct wl_data_source *wl_data_source)
-{
-}
-
-static void
-data_source_handle_action(void *data, struct wl_data_source *wl_data_source,
- uint32_t dnd_action)
-{
-}
-
-static const struct wl_data_source_listener data_source_listener = {
- data_source_handle_target,
- data_source_handle_send,
- data_source_handle_cancelled,
- data_source_handle_dnd_drop_performed, // Version 3
- data_source_handle_dnd_finished, // Version 3
- data_source_handle_action, // Version 3
-};
-
-SDL_WaylandDataSource*
-Wayland_data_source_create(_THIS)
-{
- SDL_WaylandDataSource *data_source = NULL;
- SDL_VideoData *driver_data = NULL;
- struct wl_data_source *id = NULL;
-
- if (_this == NULL || _this->driverdata == NULL) {
- SDL_SetError("Video driver uninitialized");
- } else {
- driver_data = _this->driverdata;
-
- if (driver_data->data_device_manager != NULL) {
- id = wl_data_device_manager_create_data_source(
- driver_data->data_device_manager);
- }
-
- if (id == NULL) {
- SDL_SetError("Wayland unable to create data source");
- } else {
- data_source = SDL_calloc(1, sizeof *data_source);
- if (data_source == NULL) {
- SDL_OutOfMemory();
- wl_data_source_destroy(id);
- } else {
- WAYLAND_wl_list_init(&(data_source->mimes));
- data_source->source = id;
- wl_data_source_set_user_data(id, data_source);
- wl_data_source_add_listener(id, &data_source_listener,
- data_source);
- }
- }
- }
- return data_source;
-}
-
-static void
-data_offer_handle_offer(void *data, struct wl_data_offer *wl_data_offer,
- const char *mime_type)
-{
- SDL_WaylandDataOffer *offer = data;
- Wayland_data_offer_add_mime(offer, mime_type);
-}
-
-static void
-data_offer_handle_source_actions(void *data, struct wl_data_offer *wl_data_offer,
- uint32_t source_actions)
-{
-}
-
-static void
-data_offer_handle_actions(void *data, struct wl_data_offer *wl_data_offer,
- uint32_t dnd_action)
-{
-}
-
-static const struct wl_data_offer_listener data_offer_listener = {
- data_offer_handle_offer,
- data_offer_handle_source_actions, // Version 3
- data_offer_handle_actions, // Version 3
-};
-
-static void
-data_device_handle_data_offer(void *data, struct wl_data_device *wl_data_device,
- struct wl_data_offer *id)
-{
- SDL_WaylandDataOffer *data_offer = NULL;
-
- data_offer = SDL_calloc(1, sizeof *data_offer);
- if (data_offer == NULL) {
- SDL_OutOfMemory();
- } else {
- data_offer->offer = id;
- data_offer->data_device = data;
- WAYLAND_wl_list_init(&(data_offer->mimes));
- wl_data_offer_set_user_data(id, data_offer);
- wl_data_offer_add_listener(id, &data_offer_listener, data_offer);
- }
-}
-
-static void
-data_device_handle_enter(void *data, struct wl_data_device *wl_data_device,
- uint32_t serial, struct wl_surface *surface,
- wl_fixed_t x, wl_fixed_t y, struct wl_data_offer *id)
-{
- SDL_WaylandDataDevice *data_device = data;
- SDL_bool has_mime = SDL_FALSE;
- uint32_t dnd_action = WL_DATA_DEVICE_MANAGER_DND_ACTION_NONE;
-
- data_device->drag_serial = serial;
-
- if (id != NULL) {
- data_device->drag_offer = wl_data_offer_get_user_data(id);
-
- /* TODO: SDL Support more mime types */
- has_mime = Wayland_data_offer_has_mime(
- data_device->drag_offer, FILE_MIME);
-
- /* If drag_mime is NULL this will decline the offer */
- wl_data_offer_accept(id, serial,
- (has_mime == SDL_TRUE) ? FILE_MIME : NULL);
-
- /* SDL only supports "copy" style drag and drop */
- if (has_mime == SDL_TRUE) {
- dnd_action = WL_DATA_DEVICE_MANAGER_DND_ACTION_COPY;
- }
- wl_data_offer_set_actions(data_device->drag_offer->offer,
- dnd_action, dnd_action);
- }
-}
-
-static void
-data_device_handle_leave(void *data, struct wl_data_device *wl_data_device)
-{
- SDL_WaylandDataDevice *data_device = data;
- SDL_WaylandDataOffer *offer = NULL;
-
- if (data_device->selection_offer != NULL) {
- data_device->selection_offer = NULL;
- Wayland_data_offer_destroy(offer);
- }
-}
-
-static void
-data_device_handle_motion(void *data, struct wl_data_device *wl_data_device,
- uint32_t time, wl_fixed_t x, wl_fixed_t y)
-{
-}
-
-static void
-data_device_handle_drop(void *data, struct wl_data_device *wl_data_device)
-{
- SDL_WaylandDataDevice *data_device = data;
- void *buffer = NULL;
- size_t length = 0;
-
- const char *current_uri = NULL;
- const char *last_char = NULL;
- char *current_char = NULL;
-
- if (data_device->drag_offer != NULL) {
- /* TODO: SDL Support more mime types */
- buffer = Wayland_data_offer_receive(data_device->drag_offer,
- &length, FILE_MIME, SDL_FALSE);
-
- /* uri-list */
- current_uri = (const char *)buffer;
- last_char = (const char *)buffer + length;
- for (current_char = buffer; current_char < last_char; ++current_char) {
- if (*current_char == '\n' || *current_char == 0) {
- if (*current_uri != 0 && *current_uri != '#') {
- *current_char = 0;
- SDL_SendDropFile(NULL, current_uri);
- }
- current_uri = (const char *)current_char + 1;
- }
- }
-
- SDL_free(buffer);
- }
-}
-
-static void
-data_device_handle_selection(void *data, struct wl_data_device *wl_data_device,
- struct wl_data_offer *id)
-{
- SDL_WaylandDataDevice *data_device = data;
- SDL_WaylandDataOffer *offer = NULL;
-
- if (id != NULL) {
- offer = wl_data_offer_get_user_data(id);
- }
-
- if (data_device->selection_offer != offer) {
- Wayland_data_offer_destroy(data_device->selection_offer);
- data_device->selection_offer = offer;
- }
-
- SDL_SendClipboardUpdate();
-}
-
-static const struct wl_data_device_listener data_device_listener = {
- data_device_handle_data_offer,
- data_device_handle_enter,
- data_device_handle_leave,
- data_device_handle_motion,
- data_device_handle_drop,
- data_device_handle_selection
-};
-
-void
-Wayland_display_add_input(SDL_VideoData *d, uint32_t id)
-{
- struct SDL_WaylandInput *input;
- SDL_WaylandDataDevice *data_device = NULL;
-
- input = SDL_calloc(1, sizeof *input);
- if (input == NULL)
- return;
-
- input->display = d;
- input->seat = wl_registry_bind(d->registry, id, &wl_seat_interface, 1);
- input->sx_w = wl_fixed_from_int(0);
- input->sy_w = wl_fixed_from_int(0);
- d->input = input;
-
- if (d->data_device_manager != NULL) {
- data_device = SDL_calloc(1, sizeof *data_device);
- if (data_device == NULL) {
- return;
- }
-
- data_device->data_device = wl_data_device_manager_get_data_device(
- d->data_device_manager, input->seat
- );
- data_device->video_data = d;
-
- if (data_device->data_device == NULL) {
- SDL_free(data_device);
- } else {
- wl_data_device_set_user_data(data_device->data_device, data_device);
- wl_data_device_add_listener(data_device->data_device,
- &data_device_listener, data_device);
- input->data_device = data_device;
- }
- }
-
- wl_seat_add_listener(input->seat, &seat_listener, input);
- wl_seat_set_user_data(input->seat, input);
-
- WAYLAND_wl_display_flush(d->display);
-}
-
-void Wayland_display_destroy_input(SDL_VideoData *d)
-{
- struct SDL_WaylandInput *input = d->input;
-
- if (!input)
- return;
-
- if (input->data_device != NULL) {
- Wayland_data_device_clear_selection(input->data_device);
- if (input->data_device->selection_offer != NULL) {
- Wayland_data_offer_destroy(input->data_device->selection_offer);
- }
- if (input->data_device->drag_offer != NULL) {
- Wayland_data_offer_destroy(input->data_device->drag_offer);
- }
- if (input->data_device->data_device != NULL) {
- wl_data_device_release(input->data_device->data_device);
- }
- SDL_free(input->data_device);
- }
-
- if (input->keyboard)
- wl_keyboard_destroy(input->keyboard);
-
- if (input->pointer)
- wl_pointer_destroy(input->pointer);
-
- if (input->touch) {
- SDL_DelTouch(1);
- wl_touch_destroy(input->touch);
- }
-
- if (input->seat)
- wl_seat_destroy(input->seat);
-
- if (input->xkb.state)
- WAYLAND_xkb_state_unref(input->xkb.state);
-
- if (input->xkb.keymap)
- WAYLAND_xkb_keymap_unref(input->xkb.keymap);
-
- SDL_free(input);
- d->input = NULL;
-}
-
-SDL_WaylandDataDevice* Wayland_get_data_device(struct SDL_WaylandInput *input)
-{
- if (input == NULL) {
- return NULL;
- }
-
- return input->data_device;
-}
-
-/* !!! FIXME: just merge these into display_handle_global(). */
-void Wayland_display_add_relative_pointer_manager(SDL_VideoData *d, uint32_t id)
-{
- d->relative_pointer_manager =
- wl_registry_bind(d->registry, id,
- &zwp_relative_pointer_manager_v1_interface, 1);
-}
-
-void Wayland_display_destroy_relative_pointer_manager(SDL_VideoData *d)
-{
- if (d->relative_pointer_manager)
- zwp_relative_pointer_manager_v1_destroy(d->relative_pointer_manager);
-}
-
-void Wayland_display_add_pointer_constraints(SDL_VideoData *d, uint32_t id)
-{
- d->pointer_constraints =
- wl_registry_bind(d->registry, id,
- &zwp_pointer_constraints_v1_interface, 1);
-}
-
-void Wayland_display_destroy_pointer_constraints(SDL_VideoData *d)
-{
- if (d->pointer_constraints)
- zwp_pointer_constraints_v1_destroy(d->pointer_constraints);
-}
-
-static void
-relative_pointer_handle_relative_motion(void *data,
- struct zwp_relative_pointer_v1 *pointer,
- uint32_t time_hi,
- uint32_t time_lo,
- wl_fixed_t dx_w,
- wl_fixed_t dy_w,
- wl_fixed_t dx_unaccel_w,
- wl_fixed_t dy_unaccel_w)
-{
- struct SDL_WaylandInput *input = data;
- SDL_VideoData *d = input->display;
- SDL_WindowData *window = input->pointer_focus;
- double dx_unaccel;
- double dy_unaccel;
- double dx;
- double dy;
-
- dx_unaccel = wl_fixed_to_double(dx_unaccel_w);
- dy_unaccel = wl_fixed_to_double(dy_unaccel_w);
-
- /* Add left over fraction from last event. */
- dx_unaccel += input->dx_frac;
- dy_unaccel += input->dy_frac;
-
- input->dx_frac = modf(dx_unaccel, &dx);
- input->dy_frac = modf(dy_unaccel, &dy);
-
- if (input->pointer_focus && d->relative_mouse_mode) {
- SDL_SendMouseMotion(window->sdlwindow, 0, 1, (int)dx, (int)dy);
- }
-}
-
-static const struct zwp_relative_pointer_v1_listener relative_pointer_listener = {
- relative_pointer_handle_relative_motion,
-};
-
-static void
-locked_pointer_locked(void *data,
- struct zwp_locked_pointer_v1 *locked_pointer)
-{
-}
-
-static void
-locked_pointer_unlocked(void *data,
- struct zwp_locked_pointer_v1 *locked_pointer)
-{
-}
-
-static const struct zwp_locked_pointer_v1_listener locked_pointer_listener = {
- locked_pointer_locked,
- locked_pointer_unlocked,
-};
-
-static void
-lock_pointer_to_window(SDL_Window *window,
- struct SDL_WaylandInput *input)
-{
- SDL_WindowData *w = window->driverdata;
- SDL_VideoData *d = input->display;
- struct zwp_locked_pointer_v1 *locked_pointer;
-
- if (w->locked_pointer)
- return;
-
- locked_pointer =
- zwp_pointer_constraints_v1_lock_pointer(d->pointer_constraints,
- w->surface,
- input->pointer,
- NULL,
- ZWP_POINTER_CONSTRAINTS_V1_LIFETIME_PERSISTENT);
- zwp_locked_pointer_v1_add_listener(locked_pointer,
- &locked_pointer_listener,
- window);
-
- w->locked_pointer = locked_pointer;
-}
-
-int Wayland_input_lock_pointer(struct SDL_WaylandInput *input)
-{
- SDL_VideoDevice *vd = SDL_GetVideoDevice();
- SDL_VideoData *d = input->display;
- SDL_Window *window;
- struct zwp_relative_pointer_v1 *relative_pointer;
-
- if (!d->relative_pointer_manager)
- return -1;
-
- if (!d->pointer_constraints)
- return -1;
-
- if (!input->relative_pointer) {
- relative_pointer =
- zwp_relative_pointer_manager_v1_get_relative_pointer(
- d->relative_pointer_manager,
- input->pointer);
- zwp_relative_pointer_v1_add_listener(relative_pointer,
- &relative_pointer_listener,
- input);
- input->relative_pointer = relative_pointer;
- }
-
- for (window = vd->windows; window; window = window->next)
- lock_pointer_to_window(window, input);
-
- d->relative_mouse_mode = 1;
-
- return 0;
-}
-
-int Wayland_input_unlock_pointer(struct SDL_WaylandInput *input)
-{
- SDL_VideoDevice *vd = SDL_GetVideoDevice();
- SDL_VideoData *d = input->display;
- SDL_Window *window;
- SDL_WindowData *w;
-
- for (window = vd->windows; window; window = window->next) {
- w = window->driverdata;
- if (w->locked_pointer)
- zwp_locked_pointer_v1_destroy(w->locked_pointer);
- w->locked_pointer = NULL;
- }
-
- zwp_relative_pointer_v1_destroy(input->relative_pointer);
- input->relative_pointer = NULL;
-
- d->relative_mouse_mode = 0;
-
- return 0;
-}
-
-#endif /* SDL_VIDEO_DRIVER_WAYLAND */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/Source/3rdParty/SDL2/src/video/wayland/SDL_waylandevents_c.h b/Source/3rdParty/SDL2/src/video/wayland/SDL_waylandevents_c.h
deleted file mode 100644
index 1c5ffe5..0000000
--- a/Source/3rdParty/SDL2/src/video/wayland/SDL_waylandevents_c.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- Simple DirectMedia Layer
- Copyright (C) 1997-2018 Sam Lantinga <slouken@libsdl.org>
-
- This software is provided 'as-is', without any express or implied
- warranty. In no event will the authors be held liable for any damages
- arising from the use of this software.
-
- Permission is granted to anyone to use this software for any purpose,
- including commercial applications, and to alter it and redistribute it
- freely, subject to the following restrictions:
-
- 1. The origin of this software must not be misrepresented; you must not
- claim that you wrote the original software. If you use this software
- in a product, an acknowledgment in the product documentation would be
- appreciated but is not required.
- 2. Altered source versions must be plainly marked as such, and must not be
- misrepresented as being the original software.
- 3. This notice may not be removed or altered from any source distribution.
-*/
-
-#include "../../SDL_internal.h"
-
-#ifndef SDL_waylandevents_h_
-#define SDL_waylandevents_h_
-
-#include "SDL_waylandvideo.h"
-#include "SDL_waylandwindow.h"
-#include "SDL_waylanddatamanager.h"
-
-struct SDL_WaylandInput;
-
-extern void Wayland_PumpEvents(_THIS);
-
-extern void Wayland_display_add_input(SDL_VideoData *d, uint32_t id);
-extern void Wayland_display_destroy_input(SDL_VideoData *d);
-
-extern SDL_WaylandDataDevice* Wayland_get_data_device(struct SDL_WaylandInput *input);
-
-extern void Wayland_display_add_pointer_constraints(SDL_VideoData *d, uint32_t id);
-extern void Wayland_display_destroy_pointer_constraints(SDL_VideoData *d);
-
-extern int Wayland_input_lock_pointer(struct SDL_WaylandInput *input);
-extern int Wayland_input_unlock_pointer(struct SDL_WaylandInput *input);
-
-extern void Wayland_display_add_relative_pointer_manager(SDL_VideoData *d, uint32_t id);
-extern void Wayland_display_destroy_relative_pointer_manager(SDL_VideoData *d);
-
-#endif /* SDL_waylandevents_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/Source/3rdParty/SDL2/src/video/wayland/SDL_waylandmouse.c b/Source/3rdParty/SDL2/src/video/wayland/SDL_waylandmouse.c
deleted file mode 100644
index c77b53e..0000000
--- a/Source/3rdParty/SDL2/src/video/wayland/SDL_waylandmouse.c
+++ /dev/null
@@ -1,396 +0,0 @@
-/*
- Simple DirectMedia Layer
- Copyright (C) 1997-2018 Sam Lantinga <slouken@libsdl.org>
-
- This software is provided 'as-is', without any express or implied
- warranty. In no event will the authors be held liable for any damages
- arising from the use of this software.
-
- Permission is granted to anyone to use this software for any purpose,
- including commercial applications, and to alter it and redistribute it
- freely, subject to the following restrictions:
-
- 1. The origin of this software must not be misrepresented; you must not
- claim that you wrote the original software. If you use this software
- in a product, an acknowledgment in the product documentation would be
- appreciated but is not required.
- 2. Altered source versions must be plainly marked as such, and must not be
- misrepresented as being the original software.
- 3. This notice may not be removed or altered from any source distribution.
-*/
-
-#include "../../SDL_internal.h"
-
-#if SDL_VIDEO_DRIVER_WAYLAND
-
-#include <sys/types.h>
-#include <sys/mman.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <stdlib.h>
-#include <limits.h>
-
-#include "../SDL_sysvideo.h"
-
-#include "SDL_mouse.h"
-#include "../../events/SDL_mouse_c.h"
-#include "SDL_waylandvideo.h"
-#include "SDL_waylandevents_c.h"
-
-#include "SDL_waylanddyn.h"
-#include "wayland-cursor.h"
-
-#include "SDL_assert.h"
-
-
-typedef struct {
- struct wl_buffer *buffer;
- struct wl_surface *surface;
-
- int hot_x, hot_y;
- int w, h;
-
- /* Either a preloaded cursor, or one we created ourselves */
- struct wl_cursor *cursor;
- void *shm_data;
-} Wayland_CursorData;
-
-static int
-wayland_create_tmp_file(off_t size)
-{
- static const char template[] = "/sdl-shared-XXXXXX";
- char *xdg_path;
- char tmp_path[PATH_MAX];
- int fd;
-
- xdg_path = SDL_getenv("XDG_RUNTIME_DIR");
- if (!xdg_path) {
- return -1;
- }
-
- SDL_strlcpy(tmp_path, xdg_path, PATH_MAX);
- SDL_strlcat(tmp_path, template, PATH_MAX);
-
- fd = mkostemp(tmp_path, O_CLOEXEC);
- if (fd < 0)
- return -1;
-
- if (ftruncate(fd, size) < 0) {
- close(fd);
- return -1;
- }
-
- return fd;
-}
-
-static void
-mouse_buffer_release(void *data, struct wl_buffer *buffer)
-{
-}
-
-static const struct wl_buffer_listener mouse_buffer_listener = {
- mouse_buffer_release
-};
-
-static int
-create_buffer_from_shm(Wayland_CursorData *d,
- int width,
- int height,
- uint32_t format)
-{
- SDL_VideoDevice *vd = SDL_GetVideoDevice();
- SDL_VideoData *data = (SDL_VideoData *) vd->driverdata;
- struct wl_shm_pool *shm_pool;
-
- int stride = width * 4;
- int size = stride * height;
-
- int shm_fd;
-
- shm_fd = wayland_create_tmp_file(size);
- if (shm_fd < 0)
- {
- return SDL_SetError("Creating mouse cursor buffer failed.");
- }
-
- d->shm_data = mmap(NULL,
- size,
- PROT_READ | PROT_WRITE,
- MAP_SHARED,
- shm_fd,
- 0);
- if (d->shm_data == MAP_FAILED) {
- d->shm_data = NULL;
- close (shm_fd);
- return SDL_SetError("mmap() failed.");
- }
-
- shm_pool = wl_shm_create_pool(data->shm, shm_fd, size);
- d->buffer = wl_shm_pool_create_buffer(shm_pool,
- 0,
- width,
- height,
- stride,
- format);
- wl_buffer_add_listener(d->buffer,
- &mouse_buffer_listener,
- d);
-
- wl_shm_pool_destroy (shm_pool);
- close (shm_fd);
-
- return 0;
-}
-
-static SDL_Cursor *
-Wayland_CreateCursor(SDL_Surface *surface, int hot_x, int hot_y)
-{
- SDL_Cursor *cursor;
-
- cursor = calloc(1, sizeof (*cursor));
- if (cursor) {
- SDL_VideoDevice *vd = SDL_GetVideoDevice ();
- SDL_VideoData *wd = (SDL_VideoData *) vd->driverdata;
- Wayland_CursorData *data = calloc (1, sizeof (Wayland_CursorData));
- if (!data) {
- SDL_OutOfMemory();
- free(cursor);
- return NULL;
- }
- cursor->driverdata = (void *) data;
-
- /* Assume ARGB8888 */
- SDL_assert(surface->format->format == SDL_PIXELFORMAT_ARGB8888);
- SDL_assert(surface->pitch == surface->w * 4);
-
- /* Allocate shared memory buffer for this cursor */
- if (create_buffer_from_shm (data,
- surface->w,
- surface->h,
- WL_SHM_FORMAT_ARGB8888) < 0)
- {
- free (cursor->driverdata);
- free (cursor);
- return NULL;
- }
-
- SDL_memcpy(data->shm_data,
- surface->pixels,
- surface->h * surface->pitch);
-
- data->surface = wl_compositor_create_surface(wd->compositor);
- wl_surface_set_user_data(data->surface, NULL);
-
- data->hot_x = hot_x;
- data->hot_y = hot_y;
- data->w = surface->w;
- data->h = surface->h;
- } else {
- SDL_OutOfMemory();
- }
-
- return cursor;
-}
-
-static SDL_Cursor *
-CreateCursorFromWlCursor(SDL_VideoData *d, struct wl_cursor *wlcursor)
-{
- SDL_Cursor *cursor;
-
- cursor = calloc(1, sizeof (*cursor));
- if (cursor) {
- Wayland_CursorData *data = calloc (1, sizeof (Wayland_CursorData));
- if (!data) {
- SDL_OutOfMemory();
- free(cursor);
- return NULL;
- }
- cursor->driverdata = (void *) data;
-
- data->buffer = WAYLAND_wl_cursor_image_get_buffer(wlcursor->images[0]);
- data->surface = wl_compositor_create_surface(d->compositor);
- wl_surface_set_user_data(data->surface, NULL);
- data->hot_x = wlcursor->images[0]->hotspot_x;
- data->hot_y = wlcursor->images[0]->hotspot_y;
- data->w = wlcursor->images[0]->width;
- data->h = wlcursor->images[0]->height;
- data->cursor= wlcursor;
- } else {
- SDL_OutOfMemory ();
- }
-
- return cursor;
-}
-
-static SDL_Cursor *
-Wayland_CreateDefaultCursor()
-{
- SDL_VideoDevice *device = SDL_GetVideoDevice();
- SDL_VideoData *data = device->driverdata;
-
- return CreateCursorFromWlCursor (data,
- WAYLAND_wl_cursor_theme_get_cursor(data->cursor_theme,
- "left_ptr"));
-}
-
-static SDL_Cursor *
-Wayland_CreateSystemCursor(SDL_SystemCursor id)
-{
- SDL_VideoDevice *vd = SDL_GetVideoDevice();
- SDL_VideoData *d = vd->driverdata;
-
- struct wl_cursor *cursor = NULL;
-
- switch(id)
- {
- default:
- SDL_assert(0);
- return NULL;
- case SDL_SYSTEM_CURSOR_ARROW:
- cursor = WAYLAND_wl_cursor_theme_get_cursor(d->cursor_theme, "left_ptr");
- break;
- case SDL_SYSTEM_CURSOR_IBEAM:
- cursor = WAYLAND_wl_cursor_theme_get_cursor(d->cursor_theme, "xterm");
- break;
- case SDL_SYSTEM_CURSOR_WAIT:
- cursor = WAYLAND_wl_cursor_theme_get_cursor(d->cursor_theme, "watch");
- break;
- case SDL_SYSTEM_CURSOR_CROSSHAIR:
- cursor = WAYLAND_wl_cursor_theme_get_cursor(d->cursor_theme, "hand1");
- break;
- case SDL_SYSTEM_CURSOR_WAITARROW:
- cursor = WAYLAND_wl_cursor_theme_get_cursor(d->cursor_theme, "watch");
- break;
- case SDL_SYSTEM_CURSOR_SIZENWSE:
- cursor = WAYLAND_wl_cursor_theme_get_cursor(d->cursor_theme, "hand1");
- break;
- case SDL_SYSTEM_CURSOR_SIZENESW:
- cursor = WAYLAND_wl_cursor_theme_get_cursor(d->cursor_theme, "hand1");
- break;
- case SDL_SYSTEM_CURSOR_SIZEWE:
- cursor = WAYLAND_wl_cursor_theme_get_cursor(d->cursor_theme, "hand1");
- break;
- case SDL_SYSTEM_CURSOR_SIZENS:
- cursor = WAYLAND_wl_cursor_theme_get_cursor(d->cursor_theme, "hand1");
- break;
- case SDL_SYSTEM_CURSOR_SIZEALL:
- cursor = WAYLAND_wl_cursor_theme_get_cursor(d->cursor_theme, "hand1");
- break;
- case SDL_SYSTEM_CURSOR_NO:
- cursor = WAYLAND_wl_cursor_theme_get_cursor(d->cursor_theme, "xterm");
- break;
- case SDL_SYSTEM_CURSOR_HAND:
- cursor = WAYLAND_wl_cursor_theme_get_cursor(d->cursor_theme, "hand1");
- break;
- }
-
- return CreateCursorFromWlCursor(d, cursor);
-}
-
-static void
-Wayland_FreeCursor(SDL_Cursor *cursor)
-{
- Wayland_CursorData *d;
-
- if (!cursor)
- return;
-
- d = cursor->driverdata;
-
- /* Probably not a cursor we own */
- if (!d)
- return;
-
- if (d->buffer && !d->cursor)
- wl_buffer_destroy(d->buffer);
-
- if (d->surface)
- wl_surface_destroy(d->surface);
-
- /* Not sure what's meant to happen to shm_data */
- free (cursor->driverdata);
- SDL_free(cursor);
-}
-
-static int
-Wayland_ShowCursor(SDL_Cursor *cursor)
-{
- SDL_VideoDevice *vd = SDL_GetVideoDevice();
- SDL_VideoData *d = vd->driverdata;
-
- struct wl_pointer *pointer = d->pointer;
-
- if (!pointer)
- return -1;
-
- if (cursor)
- {
- Wayland_CursorData *data = cursor->driverdata;
-
- wl_pointer_set_cursor (pointer, 0,
- data->surface,
- data->hot_x,
- data->hot_y);
- wl_surface_attach(data->surface, data->buffer, 0, 0);
- wl_surface_damage(data->surface, 0, 0, data->w, data->h);
- wl_surface_commit(data->surface);
- }
- else
- {
- wl_pointer_set_cursor (pointer, 0,
- NULL,
- 0,
- 0);
- }
-
- return 0;
-}
-
-static void
-Wayland_WarpMouse(SDL_Window *window, int x, int y)
-{
- SDL_Unsupported();
-}
-
-static int
-Wayland_WarpMouseGlobal(int x, int y)
-{
- return SDL_Unsupported();
-}
-
-static int
-Wayland_SetRelativeMouseMode(SDL_bool enabled)
-{
- SDL_VideoDevice *vd = SDL_GetVideoDevice();
- SDL_VideoData *data = (SDL_VideoData *) vd->driverdata;
-
- if (enabled)
- return Wayland_input_lock_pointer(data->input);
- else
- return Wayland_input_unlock_pointer(data->input);
-}
-
-void
-Wayland_InitMouse(void)
-{
- SDL_Mouse *mouse = SDL_GetMouse();
-
- mouse->CreateCursor = Wayland_CreateCursor;
- mouse->CreateSystemCursor = Wayland_CreateSystemCursor;
- mouse->ShowCursor = Wayland_ShowCursor;
- mouse->FreeCursor = Wayland_FreeCursor;
- mouse->WarpMouse = Wayland_WarpMouse;
- mouse->WarpMouseGlobal = Wayland_WarpMouseGlobal;
- mouse->SetRelativeMouseMode = Wayland_SetRelativeMouseMode;
-
- SDL_SetDefaultCursor(Wayland_CreateDefaultCursor());
-}
-
-void
-Wayland_FiniMouse(void)
-{
- /* This effectively assumes that nobody else
- * touches SDL_Mouse which is effectively
- * a singleton */
-}
-#endif /* SDL_VIDEO_DRIVER_WAYLAND */
diff --git a/Source/3rdParty/SDL2/src/video/wayland/SDL_waylandmouse.h b/Source/3rdParty/SDL2/src/video/wayland/SDL_waylandmouse.h
deleted file mode 100644
index 2c50e5f..0000000
--- a/Source/3rdParty/SDL2/src/video/wayland/SDL_waylandmouse.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- Simple DirectMedia Layer
- Copyright (C) 1997-2018 Sam Lantinga <slouken@libsdl.org>
-
- This software is provided 'as-is', without any express or implied
- warranty. In no event will the authors be held liable for any damages
- arising from the use of this software.
-
- Permission is granted to anyone to use this software for any purpose,
- including commercial applications, and to alter it and redistribute it
- freely, subject to the following restrictions:
-
- 1. The origin of this software must not be misrepresented; you must not
- claim that you wrote the original software. If you use this software
- in a product, an acknowledgment in the product documentation would be
- appreciated but is not required.
- 2. Altered source versions must be plainly marked as such, and must not be
- misrepresented as being the original software.
- 3. This notice may not be removed or altered from any source distribution.
-*/
-
-#include "../../SDL_internal.h"
-#include "SDL_mouse.h"
-#include "SDL_waylandvideo.h"
-
-#if SDL_VIDEO_DRIVER_WAYLAND
-
-extern void Wayland_InitMouse(void);
-extern void Wayland_FiniMouse(void);
-
-#endif
diff --git a/Source/3rdParty/SDL2/src/video/wayland/SDL_waylandopengles.c b/Source/3rdParty/SDL2/src/video/wayland/SDL_waylandopengles.c
deleted file mode 100644
index 9c0b845..0000000
--- a/Source/3rdParty/SDL2/src/video/wayland/SDL_waylandopengles.c
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- Simple DirectMedia Layer
- Copyright (C) 1997-2018 Sam Lantinga <slouken@libsdl.org>
-
- This software is provided 'as-is', without any express or implied
- warranty. In no event will the authors be held liable for any damages
- arising from the use of this software.
-
- Permission is granted to anyone to use this software for any purpose,
- including commercial applications, and to alter it and redistribute it
- freely, subject to the following restrictions:
-
- 1. The origin of this software must not be misrepresented; you must not
- claim that you wrote the original software. If you use this software
- in a product, an acknowledgment in the product documentation would be
- appreciated but is not required.
- 2. Altered source versions must be plainly marked as such, and must not be
- misrepresented as being the original software.
- 3. This notice may not be removed or altered from any source distribution.
-*/
-#include "../../SDL_internal.h"
-
-#if SDL_VIDEO_DRIVER_WAYLAND && SDL_VIDEO_OPENGL_EGL
-
-#include "SDL_waylandvideo.h"
-#include "SDL_waylandopengles.h"
-#include "SDL_waylandwindow.h"
-#include "SDL_waylandevents_c.h"
-#include "SDL_waylanddyn.h"
-
-/* EGL implementation of SDL OpenGL ES support */
-
-int
-Wayland_GLES_LoadLibrary(_THIS, const char *path) {
- int ret;
- SDL_VideoData *data = (SDL_VideoData *) _this->driverdata;
-
- ret = SDL_EGL_LoadLibrary(_this, path, (NativeDisplayType) data->display, 0);
-
- Wayland_PumpEvents(_this);
- WAYLAND_wl_display_flush(data->display);
-
- return ret;
-}
-
-
-SDL_GLContext
-Wayland_GLES_CreateContext(_THIS, SDL_Window * window)
-{
- SDL_GLContext context;
- context = SDL_EGL_CreateContext(_this, ((SDL_WindowData *) window->driverdata)->egl_surface);
- WAYLAND_wl_display_flush( ((SDL_VideoData*)_this->driverdata)->display );
-
- return context;
-}
-
-int
-Wayland_GLES_SwapWindow(_THIS, SDL_Window *window)
-{
- if (SDL_EGL_SwapBuffers(_this, ((SDL_WindowData *) window->driverdata)->egl_surface) < 0) {
- return -1;
- }
- WAYLAND_wl_display_flush( ((SDL_VideoData*)_this->driverdata)->display );
- return 0;
-}
-
-int
-Wayland_GLES_MakeCurrent(_THIS, SDL_Window * window, SDL_GLContext context)
-{
- int ret;
-
- if (window && context) {
- ret = SDL_EGL_MakeCurrent(_this, ((SDL_WindowData *) window->driverdata)->egl_surface, context);
- }
- else {
- ret = SDL_EGL_MakeCurrent(_this, NULL, NULL);
- }
-
- WAYLAND_wl_display_flush( ((SDL_VideoData*)_this->driverdata)->display );
-
- return ret;
-}
-
-void
-Wayland_GLES_DeleteContext(_THIS, SDL_GLContext context)
-{
- SDL_EGL_DeleteContext(_this, context);
- WAYLAND_wl_display_flush( ((SDL_VideoData*)_this->driverdata)->display );
-}
-
-#endif /* SDL_VIDEO_DRIVER_WAYLAND && SDL_VIDEO_OPENGL_EGL */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/Source/3rdParty/SDL2/src/video/wayland/SDL_waylandopengles.h b/Source/3rdParty/SDL2/src/video/wayland/SDL_waylandopengles.h
deleted file mode 100644
index 58d7f9b..0000000
--- a/Source/3rdParty/SDL2/src/video/wayland/SDL_waylandopengles.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- Simple DirectMedia Layer
- Copyright (C) 1997-2018 Sam Lantinga <slouken@libsdl.org>
-
- This software is provided 'as-is', without any express or implied
- warranty. In no event will the authors be held liable for any damages
- arising from the use of this software.
-
- Permission is granted to anyone to use this software for any purpose,
- including commercial applications, and to alter it and redistribute it
- freely, subject to the following restrictions:
-
- 1. The origin of this software must not be misrepresented; you must not
- claim that you wrote the original software. If you use this software
- in a product, an acknowledgment in the product documentation would be
- appreciated but is not required.
- 2. Altered source versions must be plainly marked as such, and must not be
- misrepresented as being the original software.
- 3. This notice may not be removed or altered from any source distribution.
-*/
-#include "../../SDL_internal.h"
-
-#ifndef SDL_waylandopengles_h_
-#define SDL_waylandopengles_h_
-
-#include "../SDL_sysvideo.h"
-#include "../SDL_egl_c.h"
-
-typedef struct SDL_PrivateGLESData
-{
- int dummy;
-} SDL_PrivateGLESData;
-
-/* OpenGLES functions */
-#define Wayland_GLES_GetAttribute SDL_EGL_GetAttribute
-#define Wayland_GLES_GetProcAddress SDL_EGL_GetProcAddress
-#define Wayland_GLES_UnloadLibrary SDL_EGL_UnloadLibrary
-#define Wayland_GLES_SetSwapInterval SDL_EGL_SetSwapInterval
-#define Wayland_GLES_GetSwapInterval SDL_EGL_GetSwapInterval
-
-extern int Wayland_GLES_LoadLibrary(_THIS, const char *path);
-extern SDL_GLContext Wayland_GLES_CreateContext(_THIS, SDL_Window * window);
-extern int Wayland_GLES_SwapWindow(_THIS, SDL_Window * window);
-extern int Wayland_GLES_MakeCurrent(_THIS, SDL_Window * window, SDL_GLContext context);
-extern void Wayland_GLES_DeleteContext(_THIS, SDL_GLContext context);
-
-#endif /* SDL_waylandopengles_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/Source/3rdParty/SDL2/src/video/wayland/SDL_waylandsym.h b/Source/3rdParty/SDL2/src/video/wayland/SDL_waylandsym.h
deleted file mode 100644
index 77783df..0000000
--- a/Source/3rdParty/SDL2/src/video/wayland/SDL_waylandsym.h
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
- Simple DirectMedia Layer
- Copyright (C) 1997-2018 Sam Lantinga <slouken@libsdl.org>
-
- This software is provided 'as-is', without any express or implied
- warranty. In no event will the authors be held liable for any damages
- arising from the use of this software.
-
- Permission is granted to anyone to use this software for any purpose,
- including commercial applications, and to alter it and redistribute it
- freely, subject to the following restrictions:
-
- 1. The origin of this software must not be misrepresented; you must not
- claim that you wrote the original software. If you use this software
- in a product, an acknowledgment in the product documentation would be
- appreciated but is not required.
- 2. Altered source versions must be plainly marked as such, and must not be
- misrepresented as being the original software.
- 3. This notice may not be removed or altered from any source distribution.
-*/
-
-/* *INDENT-OFF* */
-
-#ifndef SDL_WAYLAND_MODULE
-#define SDL_WAYLAND_MODULE(modname)
-#endif
-
-#ifndef SDL_WAYLAND_SYM
-#define SDL_WAYLAND_SYM(rc,fn,params)
-#endif
-
-#ifndef SDL_WAYLAND_INTERFACE
-#define SDL_WAYLAND_INTERFACE(iface)
-#endif
-
-SDL_WAYLAND_MODULE(WAYLAND_CLIENT)
-SDL_WAYLAND_SYM(void, wl_proxy_marshal, (struct wl_proxy *, uint32_t, ...))
-SDL_WAYLAND_SYM(struct wl_proxy *, wl_proxy_create, (struct wl_proxy *, const struct wl_interface *))
-SDL_WAYLAND_SYM(void, wl_proxy_destroy, (struct wl_proxy *))
-SDL_WAYLAND_SYM(int, wl_proxy_add_listener, (struct wl_proxy *, void (**)(void), void *))
-SDL_WAYLAND_SYM(void, wl_proxy_set_user_data, (struct wl_proxy *, void *))
-SDL_WAYLAND_SYM(void *, wl_proxy_get_user_data, (struct wl_proxy *))
-SDL_WAYLAND_SYM(uint32_t, wl_proxy_get_id, (struct wl_proxy *))
-SDL_WAYLAND_SYM(const char *, wl_proxy_get_class, (struct wl_proxy *))
-SDL_WAYLAND_SYM(void, wl_proxy_set_queue, (struct wl_proxy *, struct wl_event_queue *))
-SDL_WAYLAND_SYM(struct wl_display *, wl_display_connect, (const char *))
-SDL_WAYLAND_SYM(struct wl_display *, wl_display_connect_to_fd, (int))
-SDL_WAYLAND_SYM(void, wl_display_disconnect, (struct wl_display *))
-SDL_WAYLAND_SYM(int, wl_display_get_fd, (struct wl_display *))
-SDL_WAYLAND_SYM(int, wl_display_dispatch, (struct wl_display *))
-SDL_WAYLAND_SYM(int, wl_display_dispatch_queue, (struct wl_display *, struct wl_event_queue *))
-SDL_WAYLAND_SYM(int, wl_display_dispatch_queue_pending, (struct wl_display *, struct wl_event_queue *))
-SDL_WAYLAND_SYM(int, wl_display_dispatch_pending, (struct wl_display *))
-SDL_WAYLAND_SYM(int, wl_display_get_error, (struct wl_display *))
-SDL_WAYLAND_SYM(int, wl_display_flush, (struct wl_display *))
-SDL_WAYLAND_SYM(int, wl_display_roundtrip, (struct wl_display *))
-SDL_WAYLAND_SYM(struct wl_event_queue *, wl_display_create_queue, (struct wl_display *))
-SDL_WAYLAND_SYM(void, wl_log_set_handler_client, (wl_log_func_t))
-SDL_WAYLAND_SYM(void, wl_list_init, (struct wl_list *))
-SDL_WAYLAND_SYM(void, wl_list_insert, (struct wl_list *, struct wl_list *) )
-SDL_WAYLAND_SYM(void, wl_list_remove, (struct wl_list *))
-SDL_WAYLAND_SYM(int, wl_list_length, (const struct wl_list *))
-SDL_WAYLAND_SYM(int, wl_list_empty, (const struct wl_list *))
-SDL_WAYLAND_SYM(void, wl_list_insert_list, (struct wl_list *, struct wl_list *))
-
-/* These functions are available in Wayland >= 1.4 */
-SDL_WAYLAND_MODULE(WAYLAND_CLIENT_1_4)
-SDL_WAYLAND_SYM(struct wl_proxy *, wl_proxy_marshal_constructor, (struct wl_proxy *, uint32_t opcode, const struct wl_interface *interface, ...))
-
-SDL_WAYLAND_MODULE(WAYLAND_CLIENT_1_10)
-SDL_WAYLAND_SYM(struct wl_proxy *, wl_proxy_marshal_constructor_versioned, (struct wl_proxy *proxy, uint32_t opcode, const struct wl_interface *interface, uint32_t version, ...))
-
-SDL_WAYLAND_INTERFACE(wl_seat_interface)
-SDL_WAYLAND_INTERFACE(wl_surface_interface)
-SDL_WAYLAND_INTERFACE(wl_shm_pool_interface)
-SDL_WAYLAND_INTERFACE(wl_buffer_interface)
-SDL_WAYLAND_INTERFACE(wl_registry_interface)
-SDL_WAYLAND_INTERFACE(wl_shell_surface_interface)
-SDL_WAYLAND_INTERFACE(wl_region_interface)
-SDL_WAYLAND_INTERFACE(wl_pointer_interface)
-SDL_WAYLAND_INTERFACE(wl_keyboard_interface)
-SDL_WAYLAND_INTERFACE(wl_compositor_interface)
-SDL_WAYLAND_INTERFACE(wl_output_interface)
-SDL_WAYLAND_INTERFACE(wl_shell_interface)
-SDL_WAYLAND_INTERFACE(wl_shm_interface)
-SDL_WAYLAND_INTERFACE(wl_data_device_interface)
-SDL_WAYLAND_INTERFACE(wl_data_source_interface)
-SDL_WAYLAND_INTERFACE(wl_data_offer_interface)
-SDL_WAYLAND_INTERFACE(wl_data_device_manager_interface)
-
-SDL_WAYLAND_MODULE(WAYLAND_EGL)
-SDL_WAYLAND_SYM(struct wl_egl_window *, wl_egl_window_create, (struct wl_surface *, int, int))
-SDL_WAYLAND_SYM(void, wl_egl_window_destroy, (struct wl_egl_window *))
-SDL_WAYLAND_SYM(void, wl_egl_window_resize, (struct wl_egl_window *, int, int, int, int))
-SDL_WAYLAND_SYM(void, wl_egl_window_get_attached_size, (struct wl_egl_window *, int *, int *))
-
-SDL_WAYLAND_MODULE(WAYLAND_CURSOR)
-SDL_WAYLAND_SYM(struct wl_cursor_theme *, wl_cursor_theme_load, (const char *, int , struct wl_shm *))
-SDL_WAYLAND_SYM(void, wl_cursor_theme_destroy, (struct wl_cursor_theme *))
-SDL_WAYLAND_SYM(struct wl_cursor *, wl_cursor_theme_get_cursor, (struct wl_cursor_theme *, const char *))
-SDL_WAYLAND_SYM(struct wl_buffer *, wl_cursor_image_get_buffer, (struct wl_cursor_image *))
-SDL_WAYLAND_SYM(int, wl_cursor_frame, (struct wl_cursor *, uint32_t))
-
-SDL_WAYLAND_MODULE(WAYLAND_XKB)
-SDL_WAYLAND_SYM(int, xkb_state_key_get_syms, (struct xkb_state *, xkb_keycode_t, const xkb_keysym_t **))
-SDL_WAYLAND_SYM(int, xkb_keysym_to_utf8, (xkb_keysym_t, char *, size_t) )
-SDL_WAYLAND_SYM(struct xkb_keymap *, xkb_keymap_new_from_string, (struct xkb_context *, const char *, enum xkb_keymap_format, enum xkb_keymap_compile_flags))
-SDL_WAYLAND_SYM(struct xkb_state *, xkb_state_new, (struct xkb_keymap *) )
-SDL_WAYLAND_SYM(void, xkb_keymap_unref, (struct xkb_keymap *) )
-SDL_WAYLAND_SYM(void, xkb_state_unref, (struct xkb_state *) )
-SDL_WAYLAND_SYM(void, xkb_context_unref, (struct xkb_context *) )
-SDL_WAYLAND_SYM(struct xkb_context *, xkb_context_new, (enum xkb_context_flags flags) )
-SDL_WAYLAND_SYM(enum xkb_state_component, xkb_state_update_mask, (struct xkb_state *state,\
- xkb_mod_mask_t depressed_mods,\
- xkb_mod_mask_t latched_mods,\
- xkb_mod_mask_t locked_mods,\
- xkb_layout_index_t depressed_layout,\
- xkb_layout_index_t latched_layout,\
- xkb_layout_index_t locked_layout) )
-
-#undef SDL_WAYLAND_MODULE
-#undef SDL_WAYLAND_SYM
-#undef SDL_WAYLAND_INTERFACE
-
-/* *INDENT-ON* */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/Source/3rdParty/SDL2/src/video/wayland/SDL_waylandtouch.c b/Source/3rdParty/SDL2/src/video/wayland/SDL_waylandtouch.c
deleted file mode 100644
index 1cf37c1..0000000
--- a/Source/3rdParty/SDL2/src/video/wayland/SDL_waylandtouch.c
+++ /dev/null
@@ -1,265 +0,0 @@
-/*
- Simple DirectMedia Layer
- Copyright (C) 1997-2018 Sam Lantinga <slouken@libsdl.org>
-
- This software is provided 'as-is', without any express or implied
- warranty. In no event will the authors be held liable for any damages
- arising from the use of this software.
-
- Permission is granted to anyone to use this software for any purpose,
- including commercial applications, and to alter it and redistribute it
- freely, subject to the following restrictions:
-
- 1. The origin of this software must not be misrepresented; you must not
- claim that you wrote the original software. If you use this software
- in a product, an acknowledgment in the product documentation would be
- appreciated but is not required.
- 2. Altered source versions must be plainly marked as such, and must not be
- misrepresented as being the original software.
- 3. This notice may not be removed or altered from any source distribution.
-*/
-
-/* Contributed by Thomas Perl <thomas.perl@jollamobile.com> */
-
-#include "../../SDL_internal.h"
-
-#ifdef SDL_VIDEO_DRIVER_WAYLAND_QT_TOUCH
-
-#include "SDL_log.h"
-#include "SDL_waylandtouch.h"
-#include "../../events/SDL_touch_c.h"
-
-struct SDL_WaylandTouch {
- struct qt_touch_extension *touch_extension;
-};
-
-
-/**
- * Qt TouchPointState
- * adapted from qtbase/src/corelib/global/qnamespace.h
- **/
-enum QtWaylandTouchPointState {
- QtWaylandTouchPointPressed = 0x01,
- QtWaylandTouchPointMoved = 0x02,
- /*
- Never sent by the server:
- QtWaylandTouchPointStationary = 0x04,
- */
- QtWaylandTouchPointReleased = 0x08,
-};
-
-static void
-touch_handle_touch(void *data,
- struct qt_touch_extension *qt_touch_extension,
- uint32_t time,
- uint32_t id,
- uint32_t state,
- int32_t x,
- int32_t y,
- int32_t normalized_x,
- int32_t normalized_y,
- int32_t width,
- int32_t height,
- uint32_t pressure,
- int32_t velocity_x,
- int32_t velocity_y,
- uint32_t flags,
- struct wl_array *rawdata)
-{
- /**
- * Event is assembled in QtWayland in TouchExtensionGlobal::postTouchEvent
- * (src/compositor/wayland_wrapper/qwltouch.cpp)
- **/
-
- float FIXED_TO_FLOAT = 1. / 10000.;
- float xf = FIXED_TO_FLOAT * x;
- float yf = FIXED_TO_FLOAT * y;
-
- float PRESSURE_TO_FLOAT = 1. / 255.;
- float pressuref = PRESSURE_TO_FLOAT * pressure;
-
- uint32_t touchState = state & 0xFFFF;
- /*
- Other fields that are sent by the server (qwltouch.cpp),
- but not used at the moment can be decoded in this way:
-
- uint32_t sentPointCount = state >> 16;
- uint32_t touchFlags = flags & 0xFFFF;
- uint32_t capabilities = flags >> 16;
- */
-
- SDL_TouchID deviceId = 1;
- if (SDL_AddTouch(deviceId, "qt_touch_extension") < 0) {
- SDL_Log("error: can't add touch %s, %d", __FILE__, __LINE__);
- }
-
- switch (touchState) {
- case QtWaylandTouchPointPressed:
- case QtWaylandTouchPointReleased:
- SDL_SendTouch(deviceId, (SDL_FingerID)id,
- (touchState == QtWaylandTouchPointPressed) ? SDL_TRUE : SDL_FALSE,
- xf, yf, pressuref);
- break;
- case QtWaylandTouchPointMoved:
- SDL_SendTouchMotion(deviceId, (SDL_FingerID)id, xf, yf, pressuref);
- break;
- default:
- /* Should not happen */
- break;
- }
-}
-
-static void
-touch_handle_configure(void *data,
- struct qt_touch_extension *qt_touch_extension,
- uint32_t flags)
-{
-}
-
-
-/* wayland-qt-touch-extension.c BEGINS */
-
-static const struct qt_touch_extension_listener touch_listener = {
- touch_handle_touch,
- touch_handle_configure,
-};
-
-static const struct wl_interface *qt_touch_extension_types[] = {
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
-};
-
-static const struct wl_message qt_touch_extension_requests[] = {
- { "dummy", "", qt_touch_extension_types + 0 },
-};
-
-static const struct wl_message qt_touch_extension_events[] = {
- { "touch", "uuuiiiiiiuiiua", qt_touch_extension_types + 0 },
- { "configure", "u", qt_touch_extension_types + 0 },
-};
-
-WL_EXPORT const struct wl_interface qt_touch_extension_interface = {
- "qt_touch_extension", 1,
- 1, qt_touch_extension_requests,
- 2, qt_touch_extension_events,
-};
-
-/* wayland-qt-touch-extension.c ENDS */
-
-/* wayland-qt-windowmanager.c BEGINS */
-static const struct wl_interface *qt_windowmanager_types[] = {
- NULL,
- NULL,
-};
-
-static const struct wl_message qt_windowmanager_requests[] = {
- { "open_url", "us", qt_windowmanager_types + 0 },
-};
-
-static const struct wl_message qt_windowmanager_events[] = {
- { "hints", "i", qt_windowmanager_types + 0 },
- { "quit", "", qt_windowmanager_types + 0 },
-};
-
-WL_EXPORT const struct wl_interface qt_windowmanager_interface = {
- "qt_windowmanager", 1,
- 1, qt_windowmanager_requests,
- 2, qt_windowmanager_events,
-};
-/* wayland-qt-windowmanager.c ENDS */
-
-/* wayland-qt-surface-extension.c BEGINS */
-extern const struct wl_interface qt_extended_surface_interface;
-#ifndef SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC
-extern const struct wl_interface wl_surface_interface;
-#endif
-
-static const struct wl_interface *qt_surface_extension_types[] = {
- NULL,
- NULL,
- &qt_extended_surface_interface,
-#ifdef SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC
- /* FIXME: Set this dynamically to (*WAYLAND_wl_surface_interface) ?
- * The value comes from auto generated code and does
- * not appear to actually be used anywhere
- */
- NULL,
-#else
- &wl_surface_interface,
-#endif
-};
-
-static const struct wl_message qt_surface_extension_requests[] = {
- { "get_extended_surface", "no", qt_surface_extension_types + 2 },
-};
-
-WL_EXPORT const struct wl_interface qt_surface_extension_interface = {
- "qt_surface_extension", 1,
- 1, qt_surface_extension_requests,
- 0, NULL,
-};
-
-static const struct wl_message qt_extended_surface_requests[] = {
- { "update_generic_property", "sa", qt_surface_extension_types + 0 },
- { "set_content_orientation", "i", qt_surface_extension_types + 0 },
- { "set_window_flags", "i", qt_surface_extension_types + 0 },
-};
-
-static const struct wl_message qt_extended_surface_events[] = {
- { "onscreen_visibility", "i", qt_surface_extension_types + 0 },
- { "set_generic_property", "sa", qt_surface_extension_types + 0 },
- { "close", "", qt_surface_extension_types + 0 },
-};
-
-WL_EXPORT const struct wl_interface qt_extended_surface_interface = {
- "qt_extended_surface", 1,
- 3, qt_extended_surface_requests,
- 3, qt_extended_surface_events,
-};
-
-/* wayland-qt-surface-extension.c ENDS */
-
-void
-Wayland_touch_create(SDL_VideoData *data, uint32_t id)
-{
- struct SDL_WaylandTouch *touch;
-
- if (data->touch) {
- Wayland_touch_destroy(data);
- }
-
- /* !!! FIXME: check for failure, call SDL_OutOfMemory() */
- data->touch = SDL_malloc(sizeof(struct SDL_WaylandTouch));
-
- touch = data->touch;
- touch->touch_extension = wl_registry_bind(data->registry, id, &qt_touch_extension_interface, 1);
- qt_touch_extension_add_listener(touch->touch_extension, &touch_listener, data);
-}
-
-void
-Wayland_touch_destroy(SDL_VideoData *data)
-{
- if (data->touch) {
- struct SDL_WaylandTouch *touch = data->touch;
- if (touch->touch_extension) {
- qt_touch_extension_destroy(touch->touch_extension);
- }
-
- SDL_free(data->touch);
- data->touch = NULL;
- }
-}
-
-#endif /* SDL_VIDEO_DRIVER_WAYLAND_QT_TOUCH */
diff --git a/Source/3rdParty/SDL2/src/video/wayland/SDL_waylandtouch.h b/Source/3rdParty/SDL2/src/video/wayland/SDL_waylandtouch.h
deleted file mode 100644
index eba0da8..0000000
--- a/Source/3rdParty/SDL2/src/video/wayland/SDL_waylandtouch.h
+++ /dev/null
@@ -1,352 +0,0 @@
-/*
- Simple DirectMedia Layer
- Copyright (C) 1997-2018 Sam Lantinga <slouken@libsdl.org>
-
- This software is provided 'as-is', without any express or implied
- warranty. In no event will the authors be held liable for any damages
- arising from the use of this software.
-
- Permission is granted to anyone to use this software for any purpose,
- including commercial applications, and to alter it and redistribute it
- freely, subject to the following restrictions:
-
- 1. The origin of this software must not be misrepresented; you must not
- claim that you wrote the original software. If you use this software
- in a product, an acknowledgment in the product documentation would be
- appreciated but is not required.
- 2. Altered source versions must be plainly marked as such, and must not be
- misrepresented as being the original software.
- 3. This notice may not be removed or altered from any source distribution.
-*/
-
-#ifndef SDL_waylandtouch_h_
-#define SDL_waylandtouch_h_
-
-#include "../../SDL_internal.h"
-
-#ifdef SDL_VIDEO_DRIVER_WAYLAND_QT_TOUCH
-
-#include "SDL_waylandvideo.h"
-#include <stdint.h>
-#include <stddef.h>
-#include "wayland-util.h"
-#include "SDL_waylanddyn.h"
-
-
-void Wayland_touch_create(SDL_VideoData *data, uint32_t id);
-void Wayland_touch_destroy(SDL_VideoData *data);
-
-struct qt_touch_extension;
-
-/* Autogenerated QT headers */
-
-/*
- Support for Wayland with QmlCompositor as Server
-================================================
-
-The Wayland video driver has support for some additional features when
-using QtWayland's "qmlcompositor" as Wayland server. This is needed for touch
-input when running SDL applications under a qmlcompositor Wayland server.
-
-The files following headers have been
-generated from the Wayland XML Protocol Definition in QtWayland as follows:
-
-Clone QtWayland from Git:
- http://qt.gitorious.org/qt/qtwayland/
-
-Generate headers and glue code:
- for extension in touch-extension surface-extension windowmanager; do
- wayland-scanner client-header < src/extensions/$extension.xml > wayland-qt-$extension.h
- wayland-scanner code < src/extensions/$extension.xml > wayland-qt-$extension.c
- done
-
-*/
-
-/* wayland-qt-surface-extension.h */
-
-struct wl_client;
-struct wl_resource;
-
-struct qt_surface_extension;
-struct qt_extended_surface;
-
-extern const struct wl_interface qt_surface_extension_interface;
-extern const struct wl_interface qt_extended_surface_interface;
-
-#define QT_SURFACE_EXTENSION_GET_EXTENDED_SURFACE 0
-
-static inline void
-qt_surface_extension_set_user_data(struct qt_surface_extension *qt_surface_extension, void *user_data)
-{
- wl_proxy_set_user_data((struct wl_proxy *) qt_surface_extension, user_data);
-}
-
-static inline void *
-qt_surface_extension_get_user_data(struct qt_surface_extension *qt_surface_extension)
-{
- return wl_proxy_get_user_data((struct wl_proxy *) qt_surface_extension);
-}
-
-static inline void
-qt_surface_extension_destroy(struct qt_surface_extension *qt_surface_extension)
-{
- WAYLAND_wl_proxy_destroy((struct wl_proxy *) qt_surface_extension);
-}
-
-static inline struct qt_extended_surface *
-qt_surface_extension_get_extended_surface(struct qt_surface_extension *qt_surface_extension, struct wl_surface *surface)
-{
- struct wl_proxy *id;
-
- id = wl_proxy_create((struct wl_proxy *) qt_surface_extension,
- &qt_extended_surface_interface);
- if (!id)
- return NULL;
-
- WAYLAND_wl_proxy_marshal((struct wl_proxy *) qt_surface_extension,
- QT_SURFACE_EXTENSION_GET_EXTENDED_SURFACE, id, surface);
-
- return (struct qt_extended_surface *) id;
-}
-
-#ifndef QT_EXTENDED_SURFACE_ORIENTATION_ENUM
-#define QT_EXTENDED_SURFACE_ORIENTATION_ENUM
-enum qt_extended_surface_orientation {
- QT_EXTENDED_SURFACE_ORIENTATION_PRIMARYORIENTATION = 0,
- QT_EXTENDED_SURFACE_ORIENTATION_PORTRAITORIENTATION = 1,
- QT_EXTENDED_SURFACE_ORIENTATION_LANDSCAPEORIENTATION = 2,
- QT_EXTENDED_SURFACE_ORIENTATION_INVERTEDPORTRAITORIENTATION = 4,
- QT_EXTENDED_SURFACE_ORIENTATION_INVERTEDLANDSCAPEORIENTATION = 8,
-};
-#endif /* QT_EXTENDED_SURFACE_ORIENTATION_ENUM */
-
-#ifndef QT_EXTENDED_SURFACE_WINDOWFLAG_ENUM
-#define QT_EXTENDED_SURFACE_WINDOWFLAG_ENUM
-enum qt_extended_surface_windowflag {
- QT_EXTENDED_SURFACE_WINDOWFLAG_OVERRIDESSYSTEMGESTURES = 1,
- QT_EXTENDED_SURFACE_WINDOWFLAG_STAYSONTOP = 2,
-};
-#endif /* QT_EXTENDED_SURFACE_WINDOWFLAG_ENUM */
-
-struct qt_extended_surface_listener {
- /**
- * onscreen_visibility - (none)
- * @visible: (none)
- */
- void (*onscreen_visibility)(void *data,
- struct qt_extended_surface *qt_extended_surface,
- int32_t visible);
- /**
- * set_generic_property - (none)
- * @name: (none)
- * @value: (none)
- */
- void (*set_generic_property)(void *data,
- struct qt_extended_surface *qt_extended_surface,
- const char *name,
- struct wl_array *value);
- /**
- * close - (none)
- */
- void (*close)(void *data,
- struct qt_extended_surface *qt_extended_surface);
-};
-
-static inline int
-qt_extended_surface_add_listener(struct qt_extended_surface *qt_extended_surface,
- const struct qt_extended_surface_listener *listener, void *data)
-{
- return wl_proxy_add_listener((struct wl_proxy *) qt_extended_surface,
- (void (**)(void)) listener, data);
-}
-
-#define QT_EXTENDED_SURFACE_UPDATE_GENERIC_PROPERTY 0
-#define QT_EXTENDED_SURFACE_SET_CONTENT_ORIENTATION 1
-#define QT_EXTENDED_SURFACE_SET_WINDOW_FLAGS 2
-
-static inline void
-qt_extended_surface_set_user_data(struct qt_extended_surface *qt_extended_surface, void *user_data)
-{
- WAYLAND_wl_proxy_set_user_data((struct wl_proxy *) qt_extended_surface, user_data);
-}
-
-static inline void *
-qt_extended_surface_get_user_data(struct qt_extended_surface *qt_extended_surface)
-{
- return WAYLAND_wl_proxy_get_user_data((struct wl_proxy *) qt_extended_surface);
-}
-
-static inline void
-qt_extended_surface_destroy(struct qt_extended_surface *qt_extended_surface)
-{
- WAYLAND_wl_proxy_destroy((struct wl_proxy *) qt_extended_surface);
-}
-
-static inline void
-qt_extended_surface_update_generic_property(struct qt_extended_surface *qt_extended_surface, const char *name, struct wl_array *value)
-{
- WAYLAND_wl_proxy_marshal((struct wl_proxy *) qt_extended_surface,
- QT_EXTENDED_SURFACE_UPDATE_GENERIC_PROPERTY, name, value);
-}
-
-static inline void
-qt_extended_surface_set_content_orientation(struct qt_extended_surface *qt_extended_surface, int32_t orientation)
-{
- WAYLAND_wl_proxy_marshal((struct wl_proxy *) qt_extended_surface,
- QT_EXTENDED_SURFACE_SET_CONTENT_ORIENTATION, orientation);
-}
-
-static inline void
-qt_extended_surface_set_window_flags(struct qt_extended_surface *qt_extended_surface, int32_t flags)
-{
- WAYLAND_wl_proxy_marshal((struct wl_proxy *) qt_extended_surface,
- QT_EXTENDED_SURFACE_SET_WINDOW_FLAGS, flags);
-}
-
-/* wayland-qt-touch-extension.h */
-
-extern const struct wl_interface qt_touch_extension_interface;
-
-#ifndef QT_TOUCH_EXTENSION_FLAGS_ENUM
-#define QT_TOUCH_EXTENSION_FLAGS_ENUM
-enum qt_touch_extension_flags {
- QT_TOUCH_EXTENSION_FLAGS_MOUSE_FROM_TOUCH = 0x1,
-};
-#endif /* QT_TOUCH_EXTENSION_FLAGS_ENUM */
-
-struct qt_touch_extension_listener {
- /**
- * touch - (none)
- * @time: (none)
- * @id: (none)
- * @state: (none)
- * @x: (none)
- * @y: (none)
- * @normalized_x: (none)
- * @normalized_y: (none)
- * @width: (none)
- * @height: (none)
- * @pressure: (none)
- * @velocity_x: (none)
- * @velocity_y: (none)
- * @flags: (none)
- * @rawdata: (none)
- */
- void (*touch)(void *data,
- struct qt_touch_extension *qt_touch_extension,
- uint32_t time,
- uint32_t id,
- uint32_t state,
- int32_t x,
- int32_t y,
- int32_t normalized_x,
- int32_t normalized_y,
- int32_t width,
- int32_t height,
- uint32_t pressure,
- int32_t velocity_x,
- int32_t velocity_y,
- uint32_t flags,
- struct wl_array *rawdata);
- /**
- * configure - (none)
- * @flags: (none)
- */
- void (*configure)(void *data,
- struct qt_touch_extension *qt_touch_extension,
- uint32_t flags);
-};
-
-static inline int
-qt_touch_extension_add_listener(struct qt_touch_extension *qt_touch_extension,
- const struct qt_touch_extension_listener *listener, void *data)
-{
- return wl_proxy_add_listener((struct wl_proxy *) qt_touch_extension,
- (void (**)(void)) listener, data);
-}
-
-#define QT_TOUCH_EXTENSION_DUMMY 0
-
-static inline void
-qt_touch_extension_set_user_data(struct qt_touch_extension *qt_touch_extension, void *user_data)
-{
- WAYLAND_wl_proxy_set_user_data((struct wl_proxy *) qt_touch_extension, user_data);
-}
-
-static inline void *
-qt_touch_extension_get_user_data(struct qt_touch_extension *qt_touch_extension)
-{
- return WAYLAND_wl_proxy_get_user_data((struct wl_proxy *) qt_touch_extension);
-}
-
-static inline void
-qt_touch_extension_destroy(struct qt_touch_extension *qt_touch_extension)
-{
- WAYLAND_wl_proxy_destroy((struct wl_proxy *) qt_touch_extension);
-}
-
-static inline void
-qt_touch_extension_dummy(struct qt_touch_extension *qt_touch_extension)
-{
- WAYLAND_wl_proxy_marshal((struct wl_proxy *) qt_touch_extension,
- QT_TOUCH_EXTENSION_DUMMY);
-}
-
-
-/* wayland-qt-windowmanager.h */
-
-extern const struct wl_interface qt_windowmanager_interface;
-
-struct qt_windowmanager_listener {
- /**
- * hints - (none)
- * @show_is_fullscreen: (none)
- */
- void (*hints)(void *data,
- struct qt_windowmanager *qt_windowmanager,
- int32_t show_is_fullscreen);
- /**
- * quit - (none)
- */
- void (*quit)(void *data,
- struct qt_windowmanager *qt_windowmanager);
-};
-
-static inline int
-qt_windowmanager_add_listener(struct qt_windowmanager *qt_windowmanager,
- const struct qt_windowmanager_listener *listener, void *data)
-{
- return wl_proxy_add_listener((struct wl_proxy *) qt_windowmanager,
- (void (**)(void)) listener, data);
-}
-
-#define QT_WINDOWMANAGER_OPEN_URL 0
-
-static inline void
-qt_windowmanager_set_user_data(struct qt_windowmanager *qt_windowmanager, void *user_data)
-{
- WAYLAND_wl_proxy_set_user_data((struct wl_proxy *) qt_windowmanager, user_data);
-}
-
-static inline void *
-qt_windowmanager_get_user_data(struct qt_windowmanager *qt_windowmanager)
-{
- return WAYLAND_wl_proxy_get_user_data((struct wl_proxy *) qt_windowmanager);
-}
-
-static inline void
-qt_windowmanager_destroy(struct qt_windowmanager *qt_windowmanager)
-{
- WAYLAND_wl_proxy_destroy((struct wl_proxy *) qt_windowmanager);
-}
-
-static inline void
-qt_windowmanager_open_url(struct qt_windowmanager *qt_windowmanager, uint32_t remaining, const char *url)
-{
- WAYLAND_wl_proxy_marshal((struct wl_proxy *) qt_windowmanager,
- QT_WINDOWMANAGER_OPEN_URL, remaining, url);
-}
-
-#endif /* SDL_VIDEO_DRIVER_WAYLAND_QT_TOUCH */
-
-#endif /* SDL_waylandtouch_h_ */
diff --git a/Source/3rdParty/SDL2/src/video/wayland/SDL_waylandvideo.c b/Source/3rdParty/SDL2/src/video/wayland/SDL_waylandvideo.c
deleted file mode 100644
index b6155e7..0000000
--- a/Source/3rdParty/SDL2/src/video/wayland/SDL_waylandvideo.c
+++ /dev/null
@@ -1,517 +0,0 @@
-/*
- Simple DirectMedia Layer
- Copyright (C) 1997-2018 Sam Lantinga <slouken@libsdl.org>
-
- This software is provided 'as-is', without any express or implied
- warranty. In no event will the authors be held liable for any damages
- arising from the use of this software.
-
- Permission is granted to anyone to use this software for any purpose,
- including commercial applications, and to alter it and redistribute it
- freely, subject to the following restrictions:
-
- 1. The origin of this software must not be misrepresented; you must not
- claim that you wrote the original software. If you use this software
- in a product, an acknowledgment in the product documentation would be
- appreciated but is not required.
- 2. Altered source versions must be plainly marked as such, and must not be
- misrepresented as being the original software.
- 3. This notice may not be removed or altered from any source distribution.
-*/
-
-#include "../../SDL_internal.h"
-
-#if SDL_VIDEO_DRIVER_WAYLAND
-
-#include "SDL_video.h"
-#include "SDL_mouse.h"
-#include "SDL_stdinc.h"
-#include "../../events/SDL_events_c.h"
-
-#include "SDL_waylandvideo.h"
-#include "SDL_waylandevents_c.h"
-#include "SDL_waylandwindow.h"
-#include "SDL_waylandopengles.h"
-#include "SDL_waylandmouse.h"
-#include "SDL_waylandtouch.h"
-#include "SDL_waylandclipboard.h"
-#include "SDL_waylandvulkan.h"
-
-#include <sys/types.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <xkbcommon/xkbcommon.h>
-
-#include "SDL_waylanddyn.h"
-#include <wayland-util.h>
-
-#include "xdg-shell-client-protocol.h"
-#include "xdg-shell-unstable-v6-client-protocol.h"
-
-#define WAYLANDVID_DRIVER_NAME "wayland"
-
-/* Initialization/Query functions */
-static int
-Wayland_VideoInit(_THIS);
-
-static void
-Wayland_GetDisplayModes(_THIS, SDL_VideoDisplay *sdl_display);
-static int
-Wayland_SetDisplayMode(_THIS, SDL_VideoDisplay *display, SDL_DisplayMode *mode);
-
-static void
-Wayland_VideoQuit(_THIS);
-
-/* Find out what class name we should use
- * Based on src/video/x11/SDL_x11video.c */
-static char *
-get_classname()
-{
-/* !!! FIXME: this is probably wrong, albeit harmless in many common cases. From protocol spec:
- "The surface class identifies the general class of applications
- to which the surface belongs. A common convention is to use the
- file name (or the full path if it is a non-standard location) of
- the application's .desktop file as the class." */
-
- char *spot;
-#if defined(__LINUX__) || defined(__FREEBSD__)
- char procfile[1024];
- char linkfile[1024];
- int linksize;
-#endif
-
- /* First allow environment variable override */
- spot = SDL_getenv("SDL_VIDEO_WAYLAND_WMCLASS");
- if (spot) {
- return SDL_strdup(spot);
- } else {
- /* Fallback to the "old" envvar */
- spot = SDL_getenv("SDL_VIDEO_X11_WMCLASS");
- if (spot) {
- return SDL_strdup(spot);
- }
- }
-
- /* Next look at the application's executable name */
-#if defined(__LINUX__) || defined(__FREEBSD__)
-#if defined(__LINUX__)
- SDL_snprintf(procfile, SDL_arraysize(procfile), "/proc/%d/exe", getpid());
-#elif defined(__FREEBSD__)
- SDL_snprintf(procfile, SDL_arraysize(procfile), "/proc/%d/file",
- getpid());
-#else
-#error Where can we find the executable name?
-#endif
- linksize = readlink(procfile, linkfile, sizeof(linkfile) - 1);
- if (linksize > 0) {
- linkfile[linksize] = '\0';
- spot = SDL_strrchr(linkfile, '/');
- if (spot) {
- return SDL_strdup(spot + 1);
- } else {
- return SDL_strdup(linkfile);
- }
- }
-#endif /* __LINUX__ || __FREEBSD__ */
-
- /* Finally use the default we've used forever */
- return SDL_strdup("SDL_App");
-}
-
-/* Wayland driver bootstrap functions */
-static int
-Wayland_Available(void)
-{
- struct wl_display *display = NULL;
- if (SDL_WAYLAND_LoadSymbols()) {
- display = WAYLAND_wl_display_connect(NULL);
- if (display != NULL) {
- WAYLAND_wl_display_disconnect(display);
- }
- SDL_WAYLAND_UnloadSymbols();
- }
-
- return (display != NULL);
-}
-
-static void
-Wayland_DeleteDevice(SDL_VideoDevice *device)
-{
- SDL_free(device);
- SDL_WAYLAND_UnloadSymbols();
-}
-
-static SDL_VideoDevice *
-Wayland_CreateDevice(int devindex)
-{
- SDL_VideoDevice *device;
-
- if (!SDL_WAYLAND_LoadSymbols()) {
- return NULL;
- }
-
- /* Initialize all variables that we clean on shutdown */
- device = SDL_calloc(1, sizeof(SDL_VideoDevice));
- if (!device) {
- SDL_WAYLAND_UnloadSymbols();
- SDL_OutOfMemory();
- return NULL;
- }
-
- /* Set the function pointers */
- device->VideoInit = Wayland_VideoInit;
- device->VideoQuit = Wayland_VideoQuit;
- device->SetDisplayMode = Wayland_SetDisplayMode;
- device->GetDisplayModes = Wayland_GetDisplayModes;
- device->GetWindowWMInfo = Wayland_GetWindowWMInfo;
-
- device->PumpEvents = Wayland_PumpEvents;
-
- device->GL_SwapWindow = Wayland_GLES_SwapWindow;
- device->GL_GetSwapInterval = Wayland_GLES_GetSwapInterval;
- device->GL_SetSwapInterval = Wayland_GLES_SetSwapInterval;
- device->GL_MakeCurrent = Wayland_GLES_MakeCurrent;
- device->GL_CreateContext = Wayland_GLES_CreateContext;
- device->GL_LoadLibrary = Wayland_GLES_LoadLibrary;
- device->GL_UnloadLibrary = Wayland_GLES_UnloadLibrary;
- device->GL_GetProcAddress = Wayland_GLES_GetProcAddress;
- device->GL_DeleteContext = Wayland_GLES_DeleteContext;
-
- device->CreateSDLWindow = Wayland_CreateWindow;
- device->ShowWindow = Wayland_ShowWindow;
- device->SetWindowFullscreen = Wayland_SetWindowFullscreen;
- device->MaximizeWindow = Wayland_MaximizeWindow;
- device->RestoreWindow = Wayland_RestoreWindow;
- device->SetWindowSize = Wayland_SetWindowSize;
- device->SetWindowTitle = Wayland_SetWindowTitle;
- device->DestroyWindow = Wayland_DestroyWindow;
- device->SetWindowHitTest = Wayland_SetWindowHitTest;
-
- device->SetClipboardText = Wayland_SetClipboardText;
- device->GetClipboardText = Wayland_GetClipboardText;
- device->HasClipboardText = Wayland_HasClipboardText;
-
-#if SDL_VIDEO_VULKAN
- device->Vulkan_LoadLibrary = Wayland_Vulkan_LoadLibrary;
- device->Vulkan_UnloadLibrary = Wayland_Vulkan_UnloadLibrary;
- device->Vulkan_GetInstanceExtensions = Wayland_Vulkan_GetInstanceExtensions;
- device->Vulkan_CreateSurface = Wayland_Vulkan_CreateSurface;
-#endif
-
- device->free = Wayland_DeleteDevice;
-
- return device;
-}
-
-VideoBootStrap Wayland_bootstrap = {
- WAYLANDVID_DRIVER_NAME, "SDL Wayland video driver",
- Wayland_Available, Wayland_CreateDevice
-};
-
-static void
-display_handle_geometry(void *data,
- struct wl_output *output,
- int x, int y,
- int physical_width,
- int physical_height,
- int subpixel,
- const char *make,
- const char *model,
- int transform)
-
-{
- SDL_VideoDisplay *display = data;
-
- display->name = SDL_strdup(model);
- display->driverdata = output;
-}
-
-static void
-display_handle_mode(void *data,
- struct wl_output *output,
- uint32_t flags,
- int width,
- int height,
- int refresh)
-{
- SDL_VideoDisplay *display = data;
- SDL_DisplayMode mode;
-
- SDL_zero(mode);
- mode.format = SDL_PIXELFORMAT_RGB888;
- mode.w = width;
- mode.h = height;
- mode.refresh_rate = refresh / 1000; // mHz to Hz
- mode.driverdata = display->driverdata;
- SDL_AddDisplayMode(display, &mode);
-
- if (flags & WL_OUTPUT_MODE_CURRENT) {
- display->current_mode = mode;
- display->desktop_mode = mode;
- }
-}
-
-static void
-display_handle_done(void *data,
- struct wl_output *output)
-{
- SDL_VideoDisplay *display = data;
- SDL_AddVideoDisplay(display);
- SDL_free(display->name);
- SDL_free(display);
-}
-
-static void
-display_handle_scale(void *data,
- struct wl_output *output,
- int32_t factor)
-{
- // TODO: do HiDPI stuff.
-}
-
-static const struct wl_output_listener output_listener = {
- display_handle_geometry,
- display_handle_mode,
- display_handle_done,
- display_handle_scale
-};
-
-static void
-Wayland_add_display(SDL_VideoData *d, uint32_t id)
-{
- struct wl_output *output;
- SDL_VideoDisplay *display = SDL_malloc(sizeof *display);
- if (!display) {
- SDL_OutOfMemory();
- return;
- }
- SDL_zero(*display);
-
- output = wl_registry_bind(d->registry, id, &wl_output_interface, 2);
- if (!output) {
- SDL_SetError("Failed to retrieve output.");
- SDL_free(display);
- return;
- }
-
- wl_output_add_listener(output, &output_listener, display);
-}
-
-#ifdef SDL_VIDEO_DRIVER_WAYLAND_QT_TOUCH
-static void
-windowmanager_hints(void *data, struct qt_windowmanager *qt_windowmanager,
- int32_t show_is_fullscreen)
-{
-}
-
-static void
-windowmanager_quit(void *data, struct qt_windowmanager *qt_windowmanager)
-{
- SDL_SendQuit();
-}
-
-static const struct qt_windowmanager_listener windowmanager_listener = {
- windowmanager_hints,
- windowmanager_quit,
-};
-#endif /* SDL_VIDEO_DRIVER_WAYLAND_QT_TOUCH */
-
-
-static void
-handle_ping_zxdg_shell(void *data, struct zxdg_shell_v6 *zxdg, uint32_t serial)
-{
- zxdg_shell_v6_pong(zxdg, serial);
-}
-
-static const struct zxdg_shell_v6_listener shell_listener_zxdg = {
- handle_ping_zxdg_shell
-};
-
-
-static void
-handle_ping_xdg_wm_base(void *data, struct xdg_wm_base *xdg, uint32_t serial)
-{
- xdg_wm_base_pong(xdg, serial);
-}
-
-static const struct xdg_wm_base_listener shell_listener_xdg = {
- handle_ping_xdg_wm_base
-};
-
-
-static void
-display_handle_global(void *data, struct wl_registry *registry, uint32_t id,
- const char *interface, uint32_t version)
-{
- SDL_VideoData *d = data;
-
- if (strcmp(interface, "wl_compositor") == 0) {
- d->compositor = wl_registry_bind(d->registry, id, &wl_compositor_interface, 1);
- } else if (strcmp(interface, "wl_output") == 0) {
- Wayland_add_display(d, id);
- } else if (strcmp(interface, "wl_seat") == 0) {
- Wayland_display_add_input(d, id);
- } else if (strcmp(interface, "xdg_wm_base") == 0) {
- d->shell.xdg = wl_registry_bind(d->registry, id, &xdg_wm_base_interface, 1);
- xdg_wm_base_add_listener(d->shell.xdg, &shell_listener_xdg, NULL);
- } else if (strcmp(interface, "zxdg_shell_v6") == 0) {
- d->shell.zxdg = wl_registry_bind(d->registry, id, &zxdg_shell_v6_interface, 1);
- zxdg_shell_v6_add_listener(d->shell.zxdg, &shell_listener_zxdg, NULL);
- } else if (strcmp(interface, "wl_shell") == 0) {
- d->shell.wl = wl_registry_bind(d->registry, id, &wl_shell_interface, 1);
- } else if (strcmp(interface, "wl_shm") == 0) {
- d->shm = wl_registry_bind(registry, id, &wl_shm_interface, 1);
- d->cursor_theme = WAYLAND_wl_cursor_theme_load(NULL, 32, d->shm);
- } else if (strcmp(interface, "zwp_relative_pointer_manager_v1") == 0) {
- Wayland_display_add_relative_pointer_manager(d, id);
- } else if (strcmp(interface, "zwp_pointer_constraints_v1") == 0) {
- Wayland_display_add_pointer_constraints(d, id);
- } else if (strcmp(interface, "wl_data_device_manager") == 0) {
- d->data_device_manager = wl_registry_bind(d->registry, id, &wl_data_device_manager_interface, 3);
-
-#ifdef SDL_VIDEO_DRIVER_WAYLAND_QT_TOUCH
- } else if (strcmp(interface, "qt_touch_extension") == 0) {
- Wayland_touch_create(d, id);
- } else if (strcmp(interface, "qt_surface_extension") == 0) {
- d->surface_extension = wl_registry_bind(registry, id,
- &qt_surface_extension_interface, 1);
- } else if (strcmp(interface, "qt_windowmanager") == 0) {
- d->windowmanager = wl_registry_bind(registry, id,
- &qt_windowmanager_interface, 1);
- qt_windowmanager_add_listener(d->windowmanager, &windowmanager_listener, d);
-#endif /* SDL_VIDEO_DRIVER_WAYLAND_QT_TOUCH */
- }
-}
-
-static const struct wl_registry_listener registry_listener = {
- display_handle_global,
- NULL, /* global_remove */
-};
-
-int
-Wayland_VideoInit(_THIS)
-{
- SDL_VideoData *data = SDL_malloc(sizeof *data);
- if (data == NULL)
- return SDL_OutOfMemory();
- memset(data, 0, sizeof *data);
-
- _this->driverdata = data;
-
- data->xkb_context = WAYLAND_xkb_context_new(0);
- if (!data->xkb_context) {
- return SDL_SetError("Failed to create XKB context");
- }
-
- data->display = WAYLAND_wl_display_connect(NULL);
- if (data->display == NULL) {
- return SDL_SetError("Failed to connect to a Wayland display");
- }
-
- data->registry = wl_display_get_registry(data->display);
- if (data->registry == NULL) {
- return SDL_SetError("Failed to get the Wayland registry");
- }
-
- wl_registry_add_listener(data->registry, &registry_listener, data);
-
- // First roundtrip to receive all registry objects.
- WAYLAND_wl_display_roundtrip(data->display);
-
- // Second roundtrip to receive all output events.
- WAYLAND_wl_display_roundtrip(data->display);
-
- Wayland_InitMouse();
-
- /* Get the surface class name, usually the name of the application */
- data->classname = get_classname();
-
- WAYLAND_wl_display_flush(data->display);
-
- return 0;
-}
-
-static void
-Wayland_GetDisplayModes(_THIS, SDL_VideoDisplay *sdl_display)
-{
- // Nothing to do here, everything was already done in the wl_output
- // callbacks.
-}
-
-static int
-Wayland_SetDisplayMode(_THIS, SDL_VideoDisplay *display, SDL_DisplayMode *mode)
-{
- return SDL_Unsupported();
-}
-
-void
-Wayland_VideoQuit(_THIS)
-{
- SDL_VideoData *data = _this->driverdata;
- int i, j;
-
- Wayland_FiniMouse ();
-
- for (i = 0; i < _this->num_displays; ++i) {
- SDL_VideoDisplay *display = &_this->displays[i];
- wl_output_destroy(display->driverdata);
- display->driverdata = NULL;
-
- for (j = display->num_display_modes; j--;) {
- display->display_modes[j].driverdata = NULL;
- }
- display->desktop_mode.driverdata = NULL;
- }
-
- Wayland_display_destroy_input(data);
- Wayland_display_destroy_pointer_constraints(data);
- Wayland_display_destroy_relative_pointer_manager(data);
-
- if (data->xkb_context) {
- WAYLAND_xkb_context_unref(data->xkb_context);
- data->xkb_context = NULL;
- }
-#ifdef SDL_VIDEO_DRIVER_WAYLAND_QT_TOUCH
- if (data->windowmanager)
- qt_windowmanager_destroy(data->windowmanager);
-
- if (data->surface_extension)
- qt_surface_extension_destroy(data->surface_extension);
-
- Wayland_touch_destroy(data);
-#endif /* SDL_VIDEO_DRIVER_WAYLAND_QT_TOUCH */
-
- if (data->shm)
- wl_shm_destroy(data->shm);
-
- if (data->cursor_theme)
- WAYLAND_wl_cursor_theme_destroy(data->cursor_theme);
-
- if (data->shell.wl)
- wl_shell_destroy(data->shell.wl);
-
- if (data->shell.xdg)
- xdg_wm_base_destroy(data->shell.xdg);
-
- if (data->shell.zxdg)
- zxdg_shell_v6_destroy(data->shell.zxdg);
-
- if (data->compositor)
- wl_compositor_destroy(data->compositor);
-
- if (data->registry)
- wl_registry_destroy(data->registry);
-
- if (data->display) {
- WAYLAND_wl_display_flush(data->display);
- WAYLAND_wl_display_disconnect(data->display);
- }
-
- SDL_free(data->classname);
- SDL_free(data);
- _this->driverdata = NULL;
-}
-
-#endif /* SDL_VIDEO_DRIVER_WAYLAND */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/Source/3rdParty/SDL2/src/video/wayland/SDL_waylandvideo.h b/Source/3rdParty/SDL2/src/video/wayland/SDL_waylandvideo.h
deleted file mode 100644
index c16c0bd..0000000
--- a/Source/3rdParty/SDL2/src/video/wayland/SDL_waylandvideo.h
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- Simple DirectMedia Layer
- Copyright (C) 1997-2018 Sam Lantinga <slouken@libsdl.org>
-
- This software is provided 'as-is', without any express or implied
- warranty. In no event will the authors be held liable for any damages
- arising from the use of this software.
-
- Permission is granted to anyone to use this software for any purpose,
- including commercial applications, and to alter it and redistribute it
- freely, subject to the following restrictions:
-
- 1. The origin of this software must not be misrepresented; you must not
- claim that you wrote the original software. If you use this software
- in a product, an acknowledgment in the product documentation would be
- appreciated but is not required.
- 2. Altered source versions must be plainly marked as such, and must not be
- misrepresented as being the original software.
- 3. This notice may not be removed or altered from any source distribution.
-*/
-
-#include "../../SDL_internal.h"
-
-#ifndef SDL_waylandvideo_h_
-#define SDL_waylandvideo_h_
-
-
-/*
-!!! FIXME: xdg_wm_base is the stable replacement for zxdg_shell_v6. While it's
-!!! FIXME: harmless to leave it here, consider deleting the obsolete codepath
-!!! FIXME: soon, since Wayland (with xdg_wm_base) will probably be mainline
-!!! FIXME: by the time people are relying on this SDL target. It's available
-!!! FIXME: in Ubuntu 18.04 (and other distros).
-*/
-
-
-#include <EGL/egl.h>
-#include "wayland-util.h"
-
-struct xkb_context;
-struct SDL_WaylandInput;
-
-#ifdef SDL_VIDEO_DRIVER_WAYLAND_QT_TOUCH
-struct SDL_WaylandTouch;
-struct qt_surface_extension;
-struct qt_windowmanager;
-#endif /* SDL_VIDEO_DRIVER_WAYLAND_QT_TOUCH */
-
-typedef struct {
- struct wl_display *display;
- struct wl_registry *registry;
- struct wl_compositor *compositor;
- struct wl_shm *shm;
- struct wl_cursor_theme *cursor_theme;
- struct wl_pointer *pointer;
- struct {
- struct xdg_wm_base *xdg;
- struct zxdg_shell_v6 *zxdg;
- struct wl_shell *wl;
- } shell;
- struct zwp_relative_pointer_manager_v1 *relative_pointer_manager;
- struct zwp_pointer_constraints_v1 *pointer_constraints;
- struct wl_data_device_manager *data_device_manager;
-
- EGLDisplay edpy;
- EGLContext context;
- EGLConfig econf;
-
- struct xkb_context *xkb_context;
- struct SDL_WaylandInput *input;
-
-#ifdef SDL_VIDEO_DRIVER_WAYLAND_QT_TOUCH
- struct SDL_WaylandTouch *touch;
- struct qt_surface_extension *surface_extension;
- struct qt_windowmanager *windowmanager;
-#endif /* SDL_VIDEO_DRIVER_WAYLAND_QT_TOUCH */
-
- char *classname;
-
- int relative_mouse_mode;
-} SDL_VideoData;
-
-#endif /* SDL_waylandvideo_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/Source/3rdParty/SDL2/src/video/wayland/SDL_waylandvulkan.c b/Source/3rdParty/SDL2/src/video/wayland/SDL_waylandvulkan.c
deleted file mode 100644
index d67472c..0000000
--- a/Source/3rdParty/SDL2/src/video/wayland/SDL_waylandvulkan.c
+++ /dev/null
@@ -1,176 +0,0 @@
-/*
- Simple DirectMedia Layer
- Copyright (C) 1997-2018 Sam Lantinga <slouken@libsdl.org>
-
- This software is provided 'as-is', without any express or implied
- warranty. In no event will the authors be held liable for any damages
- arising from the use of this software.
-
- Permission is granted to anyone to use this software for any purpose,
- including commercial applications, and to alter it and redistribute it
- freely, subject to the following restrictions:
-
- 1. The origin of this software must not be misrepresented; you must not
- claim that you wrote the original software. If you use this software
- in a product, an acknowledgment in the product documentation would be
- appreciated but is not required.
- 2. Altered source versions must be plainly marked as such, and must not be
- misrepresented as being the original software.
- 3. This notice may not be removed or altered from any source distribution.
-*/
-
-/*
- * @author Mark Callow, www.edgewise-consulting.com. Based on Jacob Lifshay's
- * SDL_x11vulkan.c.
- */
-
-#include "../../SDL_internal.h"
-
-#if SDL_VIDEO_VULKAN && SDL_VIDEO_DRIVER_WAYLAND
-
-#include "SDL_waylandvideo.h"
-#include "SDL_waylandwindow.h"
-#include "SDL_assert.h"
-
-#include "SDL_loadso.h"
-#include "SDL_waylandvulkan.h"
-#include "SDL_syswm.h"
-
-int Wayland_Vulkan_LoadLibrary(_THIS, const char *path)
-{
- VkExtensionProperties *extensions = NULL;
- Uint32 i, extensionCount = 0;
- SDL_bool hasSurfaceExtension = SDL_FALSE;
- SDL_bool hasWaylandSurfaceExtension = SDL_FALSE;
- PFN_vkGetInstanceProcAddr vkGetInstanceProcAddr = NULL;
- if(_this->vulkan_config.loader_handle)
- return SDL_SetError("Vulkan already loaded");
-
- /* Load the Vulkan loader library */
- if(!path)
- path = SDL_getenv("SDL_VULKAN_LIBRARY");
- if(!path)
- path = "libvulkan.so.1";
- _this->vulkan_config.loader_handle = SDL_LoadObject(path);
- if(!_this->vulkan_config.loader_handle)
- return -1;
- SDL_strlcpy(_this->vulkan_config.loader_path, path,
- SDL_arraysize(_this->vulkan_config.loader_path));
- vkGetInstanceProcAddr = (PFN_vkGetInstanceProcAddr)SDL_LoadFunction(
- _this->vulkan_config.loader_handle, "vkGetInstanceProcAddr");
- if(!vkGetInstanceProcAddr)
- goto fail;
- _this->vulkan_config.vkGetInstanceProcAddr = (void *)vkGetInstanceProcAddr;
- _this->vulkan_config.vkEnumerateInstanceExtensionProperties =
- (void *)((PFN_vkGetInstanceProcAddr)_this->vulkan_config.vkGetInstanceProcAddr)(
- VK_NULL_HANDLE, "vkEnumerateInstanceExtensionProperties");
- if(!_this->vulkan_config.vkEnumerateInstanceExtensionProperties)
- goto fail;
- extensions = SDL_Vulkan_CreateInstanceExtensionsList(
- (PFN_vkEnumerateInstanceExtensionProperties)
- _this->vulkan_config.vkEnumerateInstanceExtensionProperties,
- &extensionCount);
- if(!extensions)
- goto fail;
- for(i = 0; i < extensionCount; i++)
- {
- if(SDL_strcmp(VK_KHR_SURFACE_EXTENSION_NAME, extensions[i].extensionName) == 0)
- hasSurfaceExtension = SDL_TRUE;
- else if(SDL_strcmp(VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME, extensions[i].extensionName) == 0)
- hasWaylandSurfaceExtension = SDL_TRUE;
- }
- SDL_free(extensions);
- if(!hasSurfaceExtension)
- {
- SDL_SetError("Installed Vulkan doesn't implement the "
- VK_KHR_SURFACE_EXTENSION_NAME " extension");
- goto fail;
- }
- else if(!hasWaylandSurfaceExtension)
- {
- SDL_SetError("Installed Vulkan doesn't implement the "
- VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME "extension");
- goto fail;
- }
- return 0;
-
-fail:
- SDL_UnloadObject(_this->vulkan_config.loader_handle);
- _this->vulkan_config.loader_handle = NULL;
- return -1;
-}
-
-void Wayland_Vulkan_UnloadLibrary(_THIS)
-{
- if(_this->vulkan_config.loader_handle)
- {
- SDL_UnloadObject(_this->vulkan_config.loader_handle);
- _this->vulkan_config.loader_handle = NULL;
- }
-}
-
-SDL_bool Wayland_Vulkan_GetInstanceExtensions(_THIS,
- SDL_Window *window,
- unsigned *count,
- const char **names)
-{
- static const char *const extensionsForWayland[] = {
- VK_KHR_SURFACE_EXTENSION_NAME, VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME
- };
- if(!_this->vulkan_config.loader_handle)
- {
- SDL_SetError("Vulkan is not loaded");
- return SDL_FALSE;
- }
- return SDL_Vulkan_GetInstanceExtensions_Helper(
- count, names, SDL_arraysize(extensionsForWayland),
- extensionsForWayland);
-}
-
-SDL_bool Wayland_Vulkan_CreateSurface(_THIS,
- SDL_Window *window,
- VkInstance instance,
- VkSurfaceKHR *surface)
-{
- SDL_WindowData *windowData = (SDL_WindowData *)window->driverdata;
- PFN_vkGetInstanceProcAddr vkGetInstanceProcAddr =
- (PFN_vkGetInstanceProcAddr)_this->vulkan_config.vkGetInstanceProcAddr;
- PFN_vkCreateWaylandSurfaceKHR vkCreateWaylandSurfaceKHR =
- (PFN_vkCreateWaylandSurfaceKHR)vkGetInstanceProcAddr(
- (VkInstance)instance,
- "vkCreateWaylandSurfaceKHR");
- VkWaylandSurfaceCreateInfoKHR createInfo;
- VkResult result;
-
- if(!_this->vulkan_config.loader_handle)
- {
- SDL_SetError("Vulkan is not loaded");
- return SDL_FALSE;
- }
-
- if(!vkCreateWaylandSurfaceKHR)
- {
- SDL_SetError(VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME
- " extension is not enabled in the Vulkan instance.");
- return SDL_FALSE;
- }
- SDL_zero(createInfo);
- createInfo.sType = VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR;
- createInfo.pNext = NULL;
- createInfo.flags = 0;
- createInfo.display = windowData->waylandData->display;
- createInfo.surface = windowData->surface;
- result = vkCreateWaylandSurfaceKHR(instance, &createInfo,
- NULL, surface);
- if(result != VK_SUCCESS)
- {
- SDL_SetError("vkCreateWaylandSurfaceKHR failed: %s",
- SDL_Vulkan_GetResultString(result));
- return SDL_FALSE;
- }
- return SDL_TRUE;
-}
-
-#endif
-
-/* vim: set ts=4 sw=4 expandtab: */
diff --git a/Source/3rdParty/SDL2/src/video/wayland/SDL_waylandvulkan.h b/Source/3rdParty/SDL2/src/video/wayland/SDL_waylandvulkan.h
deleted file mode 100644
index 5ad3a46..0000000
--- a/Source/3rdParty/SDL2/src/video/wayland/SDL_waylandvulkan.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- Simple DirectMedia Layer
- Copyright (C) 1997-2018 Sam Lantinga <slouken@libsdl.org>
-
- This software is provided 'as-is', without any express or implied
- warranty. In no event will the authors be held liable for any damages
- arising from the use of this software.
-
- Permission is granted to anyone to use this software for any purpose,
- including commercial applications, and to alter it and redistribute it
- freely, subject to the following restrictions:
-
- 1. The origin of this software must not be misrepresented; you must not
- claim that you wrote the original software. If you use this software
- in a product, an acknowledgment in the product documentation would be
- appreciated but is not required.
- 2. Altered source versions must be plainly marked as such, and must not be
- misrepresented as being the original software.
- 3. This notice may not be removed or altered from any source distribution.
-*/
-
-/*
- * @author Mark Callow, www.edgewise-consulting.com. Based on Jacob Lifshay's
- * SDL_x11vulkan.h.
- */
-
-#include "../../SDL_internal.h"
-
-#ifndef SDL_waylandvulkan_h_
-#define SDL_waylandvulkan_h_
-
-#include "../SDL_vulkan_internal.h"
-#include "../SDL_sysvideo.h"
-
-#if SDL_VIDEO_VULKAN && SDL_VIDEO_DRIVER_WAYLAND
-
-int Wayland_Vulkan_LoadLibrary(_THIS, const char *path);
-void Wayland_Vulkan_UnloadLibrary(_THIS);
-SDL_bool Wayland_Vulkan_GetInstanceExtensions(_THIS,
- SDL_Window *window,
- unsigned *count,
- const char **names);
-SDL_bool Wayland_Vulkan_CreateSurface(_THIS,
- SDL_Window *window,
- VkInstance instance,
- VkSurfaceKHR *surface);
-
-#endif
-
-#endif /* SDL_waylandvulkan_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/Source/3rdParty/SDL2/src/video/wayland/SDL_waylandwindow.c b/Source/3rdParty/SDL2/src/video/wayland/SDL_waylandwindow.c
deleted file mode 100644
index aa72991..0000000
--- a/Source/3rdParty/SDL2/src/video/wayland/SDL_waylandwindow.c
+++ /dev/null
@@ -1,676 +0,0 @@
-/*
- Simple DirectMedia Layer
- Copyright (C) 1997-2018 Sam Lantinga <slouken@libsdl.org>
-
- This software is provided 'as-is', without any express or implied
- warranty. In no event will the authors be held liable for any damages
- arising from the use of this software.
-
- Permission is granted to anyone to use this software for any purpose,
- including commercial applications, and to alter it and redistribute it
- freely, subject to the following restrictions:
-
- 1. The origin of this software must not be misrepresented; you must not
- claim that you wrote the original software. If you use this software
- in a product, an acknowledgment in the product documentation would be
- appreciated but is not required.
- 2. Altered source versions must be plainly marked as such, and must not be
- misrepresented as being the original software.
- 3. This notice may not be removed or altered from any source distribution.
-*/
-
-#include "../../SDL_internal.h"
-
-#if SDL_VIDEO_DRIVER_WAYLAND && SDL_VIDEO_OPENGL_EGL
-
-#include "../SDL_sysvideo.h"
-#include "../../events/SDL_windowevents_c.h"
-#include "../SDL_egl_c.h"
-#include "SDL_waylandevents_c.h"
-#include "SDL_waylandwindow.h"
-#include "SDL_waylandvideo.h"
-#include "SDL_waylandtouch.h"
-#include "SDL_waylanddyn.h"
-#include "SDL_hints.h"
-
-#include "xdg-shell-client-protocol.h"
-#include "xdg-shell-unstable-v6-client-protocol.h"
-
-/* On modern desktops, we probably will use the xdg-shell protocol instead
- of wl_shell, but wl_shell might be useful on older Wayland installs that
- don't have the newer protocol, or embedded things that don't have a full
- window manager. */
-
-static void
-handle_ping_wl_shell_surface(void *data, struct wl_shell_surface *shell_surface,
- uint32_t serial)
-{
- wl_shell_surface_pong(shell_surface, serial);
-}
-
-static void
-handle_configure_wl_shell_surface(void *data, struct wl_shell_surface *shell_surface,
- uint32_t edges, int32_t width, int32_t height)
-{
- SDL_WindowData *wind = (SDL_WindowData *)data;
- SDL_Window *window = wind->sdlwindow;
- struct wl_region *region;
-
- /* wl_shell_surface spec states that this is a suggestion.
- Ignore if less than or greater than max/min size. */
-
- if (width == 0 || height == 0) {
- return;
- }
-
- if (!(window->flags & SDL_WINDOW_FULLSCREEN)) {
- if ((window->flags & SDL_WINDOW_RESIZABLE)) {
- if (window->max_w > 0) {
- width = SDL_min(width, window->max_w);
- }
- width = SDL_max(width, window->min_w);
-
- if (window->max_h > 0) {
- height = SDL_min(height, window->max_h);
- }
- height = SDL_max(height, window->min_h);
- } else {
- return;
- }
- }
-
- WAYLAND_wl_egl_window_resize(wind->egl_window, width, height, 0, 0);
- region = wl_compositor_create_region(wind->waylandData->compositor);
- wl_region_add(region, 0, 0, width, height);
- wl_surface_set_opaque_region(wind->surface, region);
- wl_region_destroy(region);
-
- SDL_SendWindowEvent(window, SDL_WINDOWEVENT_RESIZED, width, height);
- window->w = width;
- window->h = height;
-}
-
-static void
-handle_popup_done_wl_shell_surface(void *data, struct wl_shell_surface *shell_surface)
-{
-}
-
-static const struct wl_shell_surface_listener shell_surface_listener_wl = {
- handle_ping_wl_shell_surface,
- handle_configure_wl_shell_surface,
- handle_popup_done_wl_shell_surface
-};
-
-
-
-
-static void
-handle_configure_zxdg_shell_surface(void *data, struct zxdg_surface_v6 *zxdg, uint32_t serial)
-{
- SDL_WindowData *wind = (SDL_WindowData *)data;
- SDL_Window *window = wind->sdlwindow;
- struct wl_region *region;
-
- wind->shell_surface.zxdg.initial_configure_seen = SDL_TRUE;
-
- WAYLAND_wl_egl_window_resize(wind->egl_window, window->w, window->h, 0, 0);
-
- region = wl_compositor_create_region(wind->waylandData->compositor);
- wl_region_add(region, 0, 0, window->w, window->h);
- wl_surface_set_opaque_region(wind->surface, region);
- wl_region_destroy(region);
- zxdg_surface_v6_ack_configure(zxdg, serial);
-}
-
-static const struct zxdg_surface_v6_listener shell_surface_listener_zxdg = {
- handle_configure_zxdg_shell_surface
-};
-
-
-static void
-handle_configure_zxdg_toplevel(void *data,
- struct zxdg_toplevel_v6 *zxdg_toplevel_v6,
- int32_t width,
- int32_t height,
- struct wl_array *states)
-{
- SDL_WindowData *wind = (SDL_WindowData *)data;
- SDL_Window *window = wind->sdlwindow;
-
- /* wl_shell_surface spec states that this is a suggestion.
- Ignore if less than or greater than max/min size. */
-
- if (width == 0 || height == 0) {
- return;
- }
-
- if (!(window->flags & SDL_WINDOW_FULLSCREEN)) {
- if ((window->flags & SDL_WINDOW_RESIZABLE)) {
- if (window->max_w > 0) {
- width = SDL_min(width, window->max_w);
- }
- width = SDL_max(width, window->min_w);
-
- if (window->max_h > 0) {
- height = SDL_min(height, window->max_h);
- }
- height = SDL_max(height, window->min_h);
- } else {
- return;
- }
- }
-
- SDL_SendWindowEvent(window, SDL_WINDOWEVENT_RESIZED, width, height);
- window->w = width;
- window->h = height;
-}
-
-static void
-handle_close_zxdg_toplevel(void *data, struct zxdg_toplevel_v6 *zxdg_toplevel_v6)
-{
- SDL_WindowData *window = (SDL_WindowData *)data;
- SDL_SendWindowEvent(window->sdlwindow, SDL_WINDOWEVENT_CLOSE, 0, 0);
-}
-
-static const struct zxdg_toplevel_v6_listener toplevel_listener_zxdg = {
- handle_configure_zxdg_toplevel,
- handle_close_zxdg_toplevel
-};
-
-
-
-static void
-handle_configure_xdg_shell_surface(void *data, struct xdg_surface *xdg, uint32_t serial)
-{
- SDL_WindowData *wind = (SDL_WindowData *)data;
- SDL_Window *window = wind->sdlwindow;
- struct wl_region *region;
-
- wind->shell_surface.xdg.initial_configure_seen = SDL_TRUE;
-
- WAYLAND_wl_egl_window_resize(wind->egl_window, window->w, window->h, 0, 0);
-
- region = wl_compositor_create_region(wind->waylandData->compositor);
- wl_region_add(region, 0, 0, window->w, window->h);
- wl_surface_set_opaque_region(wind->surface, region);
- wl_region_destroy(region);
- xdg_surface_ack_configure(xdg, serial);
-}
-
-static const struct xdg_surface_listener shell_surface_listener_xdg = {
- handle_configure_xdg_shell_surface
-};
-
-
-static void
-handle_configure_xdg_toplevel(void *data,
- struct xdg_toplevel *xdg_toplevel,
- int32_t width,
- int32_t height,
- struct wl_array *states)
-{
- SDL_WindowData *wind = (SDL_WindowData *)data;
- SDL_Window *window = wind->sdlwindow;
-
- /* wl_shell_surface spec states that this is a suggestion.
- Ignore if less than or greater than max/min size. */
-
- if (width == 0 || height == 0) {
- return;
- }
-
- if (!(window->flags & SDL_WINDOW_FULLSCREEN)) {
- if ((window->flags & SDL_WINDOW_RESIZABLE)) {
- if (window->max_w > 0) {
- width = SDL_min(width, window->max_w);
- }
- width = SDL_max(width, window->min_w);
-
- if (window->max_h > 0) {
- height = SDL_min(height, window->max_h);
- }
- height = SDL_max(height, window->min_h);
- } else {
- return;
- }
- }
-
- if (width == window->w && height == window->h) {
- return;
- }
-
- SDL_SendWindowEvent(window, SDL_WINDOWEVENT_RESIZED, width, height);
- window->w = width;
- window->h = height;
-}
-
-static void
-handle_close_xdg_toplevel(void *data, struct xdg_toplevel *xdg_toplevel)
-{
- SDL_WindowData *window = (SDL_WindowData *)data;
- SDL_SendWindowEvent(window->sdlwindow, SDL_WINDOWEVENT_CLOSE, 0, 0);
-}
-
-static const struct xdg_toplevel_listener toplevel_listener_xdg = {
- handle_configure_xdg_toplevel,
- handle_close_xdg_toplevel
-};
-
-
-
-
-#ifdef SDL_VIDEO_DRIVER_WAYLAND_QT_TOUCH
-static void
-handle_onscreen_visibility(void *data,
- struct qt_extended_surface *qt_extended_surface, int32_t visible)
-{
-}
-
-static void
-handle_set_generic_property(void *data,
- struct qt_extended_surface *qt_extended_surface, const char *name,
- struct wl_array *value)
-{
-}
-
-static void
-handle_close(void *data, struct qt_extended_surface *qt_extended_surface)
-{
- SDL_WindowData *window = (SDL_WindowData *)data;
- SDL_SendWindowEvent(window->sdlwindow, SDL_WINDOWEVENT_CLOSE, 0, 0);
-}
-
-static const struct qt_extended_surface_listener extended_surface_listener = {
- handle_onscreen_visibility,
- handle_set_generic_property,
- handle_close,
-};
-#endif /* SDL_VIDEO_DRIVER_WAYLAND_QT_TOUCH */
-
-SDL_bool
-Wayland_GetWindowWMInfo(_THIS, SDL_Window * window, SDL_SysWMinfo * info)
-{
- SDL_WindowData *data = (SDL_WindowData *) window->driverdata;
- const Uint32 version = ((((Uint32) info->version.major) * 1000000) +
- (((Uint32) info->version.minor) * 10000) +
- (((Uint32) info->version.patch)));
-
- /* Before 2.0.6, it was possible to build an SDL with Wayland support
- (SDL_SysWMinfo will be large enough to hold Wayland info), but build
- your app against SDL headers that didn't have Wayland support
- (SDL_SysWMinfo could be smaller than Wayland needs. This would lead
- to an app properly using SDL_GetWindowWMInfo() but we'd accidentally
- overflow memory on the stack or heap. To protect against this, we've
- padded out the struct unconditionally in the headers and Wayland will
- just return an error for older apps using this function. Those apps
- will need to be recompiled against newer headers or not use Wayland,
- maybe by forcing SDL_VIDEODRIVER=x11. */
- if (version < 2000006) {
- info->subsystem = SDL_SYSWM_UNKNOWN;
- SDL_SetError("Version must be 2.0.6 or newer");
- return SDL_FALSE;
- }
-
- info->info.wl.display = data->waylandData->display;
- info->info.wl.surface = data->surface;
- info->info.wl.shell_surface = data->shell_surface.wl;
- info->subsystem = SDL_SYSWM_WAYLAND;
-
- return SDL_TRUE;
-}
-
-int
-Wayland_SetWindowHitTest(SDL_Window *window, SDL_bool enabled)
-{
- return 0; /* just succeed, the real work is done elsewhere. */
-}
-
-static void
-SetFullscreen(_THIS, SDL_Window * window, struct wl_output *output)
-{
- const SDL_VideoData *viddata = (const SDL_VideoData *) _this->driverdata;
- SDL_WindowData *wind = window->driverdata;
-
- if (viddata->shell.xdg) {
- if (output) {
- xdg_toplevel_set_fullscreen(wind->shell_surface.xdg.roleobj.toplevel, output);
- } else {
- xdg_toplevel_unset_fullscreen(wind->shell_surface.xdg.roleobj.toplevel);
- }
- } else if (viddata->shell.zxdg) {
- if (output) {
- zxdg_toplevel_v6_set_fullscreen(wind->shell_surface.zxdg.roleobj.toplevel, output);
- } else {
- zxdg_toplevel_v6_unset_fullscreen(wind->shell_surface.zxdg.roleobj.toplevel);
- }
- } else {
- if (output) {
- wl_shell_surface_set_fullscreen(wind->shell_surface.wl,
- WL_SHELL_SURFACE_FULLSCREEN_METHOD_DEFAULT,
- 0, output);
- } else {
- wl_shell_surface_set_toplevel(wind->shell_surface.wl);
- }
- }
-
- WAYLAND_wl_display_flush( ((SDL_VideoData*)_this->driverdata)->display );
-}
-
-void Wayland_ShowWindow(_THIS, SDL_Window *window)
-{
- struct wl_output *output = (struct wl_output *) window->fullscreen_mode.driverdata;
- SetFullscreen(_this, window, (window->flags & SDL_WINDOW_FULLSCREEN) ? output : NULL);
-}
-
-#ifdef SDL_VIDEO_DRIVER_WAYLAND_QT_TOUCH
-static void SDLCALL
-QtExtendedSurface_OnHintChanged(void *userdata, const char *name,
- const char *oldValue, const char *newValue)
-{
- struct qt_extended_surface *qt_extended_surface = userdata;
-
- if (name == NULL) {
- return;
- }
-
- if (strcmp(name, SDL_HINT_QTWAYLAND_CONTENT_ORIENTATION) == 0) {
- int32_t orientation = QT_EXTENDED_SURFACE_ORIENTATION_PRIMARYORIENTATION;
-
- if (newValue != NULL) {
- if (strcmp(newValue, "portrait") == 0) {
- orientation = QT_EXTENDED_SURFACE_ORIENTATION_PORTRAITORIENTATION;
- } else if (strcmp(newValue, "landscape") == 0) {
- orientation = QT_EXTENDED_SURFACE_ORIENTATION_LANDSCAPEORIENTATION;
- } else if (strcmp(newValue, "inverted-portrait") == 0) {
- orientation = QT_EXTENDED_SURFACE_ORIENTATION_INVERTEDPORTRAITORIENTATION;
- } else if (strcmp(newValue, "inverted-landscape") == 0) {
- orientation = QT_EXTENDED_SURFACE_ORIENTATION_INVERTEDLANDSCAPEORIENTATION;
- }
- }
-
- qt_extended_surface_set_content_orientation(qt_extended_surface, orientation);
- } else if (strcmp(name, SDL_HINT_QTWAYLAND_WINDOW_FLAGS) == 0) {
- uint32_t flags = 0;
-
- if (newValue != NULL) {
- char *tmp = strdup(newValue);
- char *saveptr = NULL;
-
- char *flag = strtok_r(tmp, " ", &saveptr);
- while (flag) {
- if (strcmp(flag, "OverridesSystemGestures") == 0) {
- flags |= QT_EXTENDED_SURFACE_WINDOWFLAG_OVERRIDESSYSTEMGESTURES;
- } else if (strcmp(flag, "StaysOnTop") == 0) {
- flags |= QT_EXTENDED_SURFACE_WINDOWFLAG_STAYSONTOP;
- } else if (strcmp(flag, "BypassWindowManager") == 0) {
- // See https://github.com/qtproject/qtwayland/commit/fb4267103d
- flags |= 4 /* QT_EXTENDED_SURFACE_WINDOWFLAG_BYPASSWINDOWMANAGER */;
- }
-
- flag = strtok_r(NULL, " ", &saveptr);
- }
-
- free(tmp);
- }
-
- qt_extended_surface_set_window_flags(qt_extended_surface, flags);
- }
-}
-
-static void QtExtendedSurface_Subscribe(struct qt_extended_surface *surface, const char *name)
-{
- SDL_AddHintCallback(name, QtExtendedSurface_OnHintChanged, surface);
-}
-
-static void QtExtendedSurface_Unsubscribe(struct qt_extended_surface *surface, const char *name)
-{
- SDL_DelHintCallback(name, QtExtendedSurface_OnHintChanged, surface);
-}
-#endif /* SDL_VIDEO_DRIVER_WAYLAND_QT_TOUCH */
-
-void
-Wayland_SetWindowFullscreen(_THIS, SDL_Window * window,
- SDL_VideoDisplay * _display, SDL_bool fullscreen)
-{
- struct wl_output *output = (struct wl_output *) _display->driverdata;
- SetFullscreen(_this, window, fullscreen ? output : NULL);
-}
-
-void
-Wayland_RestoreWindow(_THIS, SDL_Window * window)
-{
- SDL_WindowData *wind = window->driverdata;
- const SDL_VideoData *viddata = (const SDL_VideoData *) _this->driverdata;
-
- if (viddata->shell.xdg) {
- } else if (viddata->shell.zxdg) {
- } else {
- wl_shell_surface_set_toplevel(wind->shell_surface.wl);
- }
-
- WAYLAND_wl_display_flush( ((SDL_VideoData*)_this->driverdata)->display );
-}
-
-void
-Wayland_MaximizeWindow(_THIS, SDL_Window * window)
-{
- SDL_WindowData *wind = window->driverdata;
- SDL_VideoData *viddata = (SDL_VideoData *) _this->driverdata;
-
- if (viddata->shell.xdg) {
- xdg_toplevel_set_maximized(wind->shell_surface.xdg.roleobj.toplevel);
- } else if (viddata->shell.zxdg) {
- zxdg_toplevel_v6_set_maximized(wind->shell_surface.zxdg.roleobj.toplevel);
- } else {
- wl_shell_surface_set_maximized(wind->shell_surface.wl, NULL);
- }
-
- WAYLAND_wl_display_flush( viddata->display );
-}
-
-int Wayland_CreateWindow(_THIS, SDL_Window *window)
-{
- SDL_WindowData *data;
- SDL_VideoData *c;
- struct wl_region *region;
-
- data = calloc(1, sizeof *data);
- if (data == NULL)
- return SDL_OutOfMemory();
-
- c = _this->driverdata;
- window->driverdata = data;
-
- if (!(window->flags & SDL_WINDOW_OPENGL)) {
- SDL_GL_LoadLibrary(NULL);
- window->flags |= SDL_WINDOW_OPENGL;
- }
-
- if (window->x == SDL_WINDOWPOS_UNDEFINED) {
- window->x = 0;
- }
- if (window->y == SDL_WINDOWPOS_UNDEFINED) {
- window->y = 0;
- }
-
- data->waylandData = c;
- data->sdlwindow = window;
-
- data->surface =
- wl_compositor_create_surface(c->compositor);
- wl_surface_set_user_data(data->surface, data);
-
- if (c->shell.xdg) {
- data->shell_surface.xdg.surface = xdg_wm_base_get_xdg_surface(c->shell.xdg, data->surface);
- /* !!! FIXME: add popup role */
- data->shell_surface.xdg.roleobj.toplevel = xdg_surface_get_toplevel(data->shell_surface.xdg.surface);
- xdg_toplevel_add_listener(data->shell_surface.xdg.roleobj.toplevel, &toplevel_listener_xdg, data);
- xdg_toplevel_set_app_id(data->shell_surface.xdg.roleobj.toplevel, c->classname);
- } else if (c->shell.zxdg) {
- data->shell_surface.zxdg.surface = zxdg_shell_v6_get_xdg_surface(c->shell.zxdg, data->surface);
- /* !!! FIXME: add popup role */
- data->shell_surface.zxdg.roleobj.toplevel = zxdg_surface_v6_get_toplevel(data->shell_surface.zxdg.surface);
- zxdg_toplevel_v6_add_listener(data->shell_surface.zxdg.roleobj.toplevel, &toplevel_listener_zxdg, data);
- zxdg_toplevel_v6_set_app_id(data->shell_surface.zxdg.roleobj.toplevel, c->classname);
- } else {
- data->shell_surface.wl = wl_shell_get_shell_surface(c->shell.wl, data->surface);
- wl_shell_surface_set_class(data->shell_surface.wl, c->classname);
- }
-
-#ifdef SDL_VIDEO_DRIVER_WAYLAND_QT_TOUCH
- if (c->surface_extension) {
- data->extended_surface = qt_surface_extension_get_extended_surface(
- c->surface_extension, data->surface);
-
- QtExtendedSurface_Subscribe(data->extended_surface, SDL_HINT_QTWAYLAND_CONTENT_ORIENTATION);
- QtExtendedSurface_Subscribe(data->extended_surface, SDL_HINT_QTWAYLAND_WINDOW_FLAGS);
- }
-#endif /* SDL_VIDEO_DRIVER_WAYLAND_QT_TOUCH */
-
- data->egl_window = WAYLAND_wl_egl_window_create(data->surface,
- window->w, window->h);
-
- /* Create the GLES window surface */
- data->egl_surface = SDL_EGL_CreateSurface(_this, (NativeWindowType) data->egl_window);
-
- if (data->egl_surface == EGL_NO_SURFACE) {
- return SDL_SetError("failed to create a window surface");
- }
-
- if (c->shell.xdg) {
- if (data->shell_surface.xdg.surface) {
- xdg_surface_set_user_data(data->shell_surface.xdg.surface, data);
- xdg_surface_add_listener(data->shell_surface.xdg.surface, &shell_surface_listener_xdg, data);
- }
- } else if (c->shell.zxdg) {
- if (data->shell_surface.zxdg.surface) {
- zxdg_surface_v6_set_user_data(data->shell_surface.zxdg.surface, data);
- zxdg_surface_v6_add_listener(data->shell_surface.zxdg.surface, &shell_surface_listener_zxdg, data);
- }
- } else {
- if (data->shell_surface.wl) {
- wl_shell_surface_set_user_data(data->shell_surface.wl, data);
- wl_shell_surface_add_listener(data->shell_surface.wl, &shell_surface_listener_wl, data);
- }
- }
-
-#ifdef SDL_VIDEO_DRIVER_WAYLAND_QT_TOUCH
- if (data->extended_surface) {
- qt_extended_surface_set_user_data(data->extended_surface, data);
- qt_extended_surface_add_listener(data->extended_surface,
- &extended_surface_listener, data);
- }
-#endif /* SDL_VIDEO_DRIVER_WAYLAND_QT_TOUCH */
-
- region = wl_compositor_create_region(c->compositor);
- wl_region_add(region, 0, 0, window->w, window->h);
- wl_surface_set_opaque_region(data->surface, region);
- wl_region_destroy(region);
-
- if (c->relative_mouse_mode) {
- Wayland_input_lock_pointer(c->input);
- }
-
- wl_surface_commit(data->surface);
- WAYLAND_wl_display_flush(c->display);
-
- /* we have to wait until the surface gets a "configure" event, or
- use of this surface will fail. This is a new rule for xdg_shell. */
- if (c->shell.xdg) {
- if (data->shell_surface.xdg.surface) {
- while (!data->shell_surface.xdg.initial_configure_seen) {
- WAYLAND_wl_display_flush(c->display);
- WAYLAND_wl_display_dispatch(c->display);
- }
- }
- } else if (c->shell.zxdg) {
- if (data->shell_surface.zxdg.surface) {
- while (!data->shell_surface.zxdg.initial_configure_seen) {
- WAYLAND_wl_display_flush(c->display);
- WAYLAND_wl_display_dispatch(c->display);
- }
- }
- }
-
- return 0;
-}
-
-void Wayland_SetWindowSize(_THIS, SDL_Window * window)
-{
- SDL_VideoData *data = _this->driverdata;
- SDL_WindowData *wind = window->driverdata;
- struct wl_region *region;
-
- WAYLAND_wl_egl_window_resize(wind->egl_window, window->w, window->h, 0, 0);
-
- region =wl_compositor_create_region(data->compositor);
- wl_region_add(region, 0, 0, window->w, window->h);
- wl_surface_set_opaque_region(wind->surface, region);
- wl_region_destroy(region);
-}
-
-void Wayland_SetWindowTitle(_THIS, SDL_Window * window)
-{
- SDL_WindowData *wind = window->driverdata;
- SDL_VideoData *viddata = (SDL_VideoData *) _this->driverdata;
-
- if (window->title != NULL) {
- if (viddata->shell.xdg) {
- xdg_toplevel_set_title(wind->shell_surface.xdg.roleobj.toplevel, window->title);
- } else if (viddata->shell.zxdg) {
- zxdg_toplevel_v6_set_title(wind->shell_surface.zxdg.roleobj.toplevel, window->title);
- } else {
- wl_shell_surface_set_title(wind->shell_surface.wl, window->title);
- }
- }
-
- WAYLAND_wl_display_flush( ((SDL_VideoData*)_this->driverdata)->display );
-}
-
-void Wayland_DestroyWindow(_THIS, SDL_Window *window)
-{
- SDL_VideoData *data = _this->driverdata;
- SDL_WindowData *wind = window->driverdata;
-
- if (data) {
- SDL_EGL_DestroySurface(_this, wind->egl_surface);
- WAYLAND_wl_egl_window_destroy(wind->egl_window);
-
- if (data->shell.xdg) {
- if (wind->shell_surface.xdg.roleobj.toplevel) {
- xdg_toplevel_destroy(wind->shell_surface.xdg.roleobj.toplevel);
- }
- if (wind->shell_surface.zxdg.surface) {
- xdg_surface_destroy(wind->shell_surface.xdg.surface);
- }
- } else if (data->shell.zxdg) {
- if (wind->shell_surface.zxdg.roleobj.toplevel) {
- zxdg_toplevel_v6_destroy(wind->shell_surface.zxdg.roleobj.toplevel);
- }
- if (wind->shell_surface.zxdg.surface) {
- zxdg_surface_v6_destroy(wind->shell_surface.zxdg.surface);
- }
- } else {
- if (wind->shell_surface.wl) {
- wl_shell_surface_destroy(wind->shell_surface.wl);
- }
- }
-
-#ifdef SDL_VIDEO_DRIVER_WAYLAND_QT_TOUCH
- if (wind->extended_surface) {
- QtExtendedSurface_Unsubscribe(wind->extended_surface, SDL_HINT_QTWAYLAND_CONTENT_ORIENTATION);
- QtExtendedSurface_Unsubscribe(wind->extended_surface, SDL_HINT_QTWAYLAND_WINDOW_FLAGS);
- qt_extended_surface_destroy(wind->extended_surface);
- }
-#endif /* SDL_VIDEO_DRIVER_WAYLAND_QT_TOUCH */
- wl_surface_destroy(wind->surface);
-
- SDL_free(wind);
- WAYLAND_wl_display_flush(data->display);
- }
- window->driverdata = NULL;
-}
-
-#endif /* SDL_VIDEO_DRIVER_WAYLAND && SDL_VIDEO_OPENGL_EGL */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/Source/3rdParty/SDL2/src/video/wayland/SDL_waylandwindow.h b/Source/3rdParty/SDL2/src/video/wayland/SDL_waylandwindow.h
deleted file mode 100644
index 69b9889..0000000
--- a/Source/3rdParty/SDL2/src/video/wayland/SDL_waylandwindow.h
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- Simple DirectMedia Layer
- Copyright (C) 1997-2018 Sam Lantinga <slouken@libsdl.org>
-
- This software is provided 'as-is', without any express or implied
- warranty. In no event will the authors be held liable for any damages
- arising from the use of this software.
-
- Permission is granted to anyone to use this software for any purpose,
- including commercial applications, and to alter it and redistribute it
- freely, subject to the following restrictions:
-
- 1. The origin of this software must not be misrepresented; you must not
- claim that you wrote the original software. If you use this software
- in a product, an acknowledgment in the product documentation would be
- appreciated but is not required.
- 2. Altered source versions must be plainly marked as such, and must not be
- misrepresented as being the original software.
- 3. This notice may not be removed or altered from any source distribution.
-*/
-
-#include "../../SDL_internal.h"
-
-#ifndef SDL_waylandwindow_h_
-#define SDL_waylandwindow_h_
-
-#include "../SDL_sysvideo.h"
-#include "SDL_syswm.h"
-
-#include "SDL_waylandvideo.h"
-
-struct SDL_WaylandInput;
-
-typedef struct {
- struct zxdg_surface_v6 *surface;
- union {
- struct zxdg_toplevel_v6 *toplevel;
- struct zxdg_popup_v6 *popup;
- } roleobj;
- SDL_bool initial_configure_seen;
-} SDL_zxdg_shell_surface;
-
-typedef struct {
- struct xdg_surface *surface;
- union {
- struct xdg_toplevel *toplevel;
- struct xdg_popup *popup;
- } roleobj;
- SDL_bool initial_configure_seen;
-} SDL_xdg_shell_surface;
-
-typedef struct {
- SDL_Window *sdlwindow;
- SDL_VideoData *waylandData;
- struct wl_surface *surface;
- union {
- SDL_xdg_shell_surface xdg;
- SDL_zxdg_shell_surface zxdg;
- struct wl_shell_surface *wl;
- } shell_surface;
- struct wl_egl_window *egl_window;
- struct SDL_WaylandInput *keyboard_device;
- EGLSurface egl_surface;
- struct zwp_locked_pointer_v1 *locked_pointer;
-
-#ifdef SDL_VIDEO_DRIVER_WAYLAND_QT_TOUCH
- struct qt_extended_surface *extended_surface;
-#endif /* SDL_VIDEO_DRIVER_WAYLAND_QT_TOUCH */
-} SDL_WindowData;
-
-extern void Wayland_ShowWindow(_THIS, SDL_Window *window);
-extern void Wayland_SetWindowFullscreen(_THIS, SDL_Window * window,
- SDL_VideoDisplay * _display,
- SDL_bool fullscreen);
-extern void Wayland_MaximizeWindow(_THIS, SDL_Window * window);
-extern void Wayland_RestoreWindow(_THIS, SDL_Window * window);
-extern int Wayland_CreateWindow(_THIS, SDL_Window *window);
-extern void Wayland_SetWindowSize(_THIS, SDL_Window * window);
-extern void Wayland_SetWindowTitle(_THIS, SDL_Window * window);
-extern void Wayland_DestroyWindow(_THIS, SDL_Window *window);
-
-extern SDL_bool
-Wayland_GetWindowWMInfo(_THIS, SDL_Window * window, SDL_SysWMinfo * info);
-extern int Wayland_SetWindowHitTest(SDL_Window *window, SDL_bool enabled);
-
-#endif /* SDL_waylandwindow_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */