From dec7875a6e23212021e4d9080330a42832dfe02a Mon Sep 17 00:00:00 2001
From: Edward Rudd <urkle@outoforder.cc>
Date: Tue, 15 Jun 2021 01:40:19 +0000
Subject: [PATCH] update SDL soruce to 2.0.14

---
 source/src/video/wayland/SDL_waylandwindow.c |   39 +++++++++++++++++++++++++--------------
 1 files changed, 25 insertions(+), 14 deletions(-)

diff --git a/source/src/video/wayland/SDL_waylandwindow.c b/source/src/video/wayland/SDL_waylandwindow.c
index 395e941..787c614 100644
--- a/source/src/video/wayland/SDL_waylandwindow.c
+++ b/source/src/video/wayland/SDL_waylandwindow.c
@@ -408,19 +408,19 @@
     SDL_WindowData *window = data;
     int i;
 
-    if (window->num_outputs > 1) {
-       struct wl_output **new_outputs = SDL_malloc((window->num_outputs - 1) * sizeof *window->outputs), **iter = new_outputs;
-       for (i=0; i < window->num_outputs; i++) {
-           if (window->outputs[i] != output) {
-               *iter = window->outputs[i];
-               iter++;
-           }
-       }
-       SDL_free(window->outputs);
-       window->outputs = new_outputs;
-       window->num_outputs--;
-    } else {
-       window->num_outputs = 0;
+    for (i = 0; i < window->num_outputs; i++) {
+        if (window->outputs[i] == output) {  /* remove this one */
+            if (i == (window->num_outputs-1)) {
+                window->outputs[i] = NULL;
+            } else {
+                SDL_memmove(&window->outputs[i], &window->outputs[i+1], sizeof (output) * ((window->num_outputs - i) - 1));
+            }
+            window->num_outputs--;
+            i--;
+        }
+    }
+
+    if (window->num_outputs == 0) {
        SDL_free(window->outputs);
        window->outputs = NULL;
     }
@@ -628,13 +628,24 @@
     WAYLAND_wl_display_flush( viddata->display );
 }
 
+void
+Wayland_SetWindowGrab(_THIS, SDL_Window *window, SDL_bool grabbed)
+{
+    SDL_VideoData *data = (SDL_VideoData *) _this->driverdata;
+
+    if (grabbed)
+        Wayland_input_confine_pointer(window, data->input);
+    else
+        Wayland_input_unconfine_pointer(data->input);
+}
+
 int Wayland_CreateWindow(_THIS, SDL_Window *window)
 {
     SDL_WindowData *data;
     SDL_VideoData *c;
     struct wl_region *region;
 
-    data = calloc(1, sizeof *data);
+    data = SDL_calloc(1, sizeof *data);
     if (data == NULL)
         return SDL_OutOfMemory();
 

--
Gitblit v1.9.3