Browse Source

Merge commit '20928550350d4d4c5d78f98b61e7e08d219a5475' into main

Sam Lantinga 4 years ago
parent
commit
95b7b879ee
1 changed files with 8 additions and 2 deletions
  1. 8 2
      src/video/wayland/SDL_waylandwindow.c

+ 8 - 2
src/video/wayland/SDL_waylandwindow.c

@@ -1012,8 +1012,14 @@ int Wayland_CreateWindow(_THIS, SDL_Window *window)
         wl_compositor_create_surface(c->compositor);
     wl_surface_add_listener(data->surface, &surface_listener, data);
 
-    /* fire a callback when the compositor wants a new frame rendered. */
-    wl_callback_add_listener(wl_surface_frame(data->surface), &surface_frame_listener, data);
+    /* Fire a callback when the compositor wants a new frame rendered.
+     * Right now this only matters for OpenGL; we use this callback to add a
+     * wait timeout that avoids getting deadlocked by the compositor when the
+     * window isn't visible.
+     */
+    if (window->flags & SDL_WINDOW_OPENGL) {
+        wl_callback_add_listener(wl_surface_frame(data->surface), &surface_frame_listener, data);
+    }
 
 #ifdef SDL_VIDEO_DRIVER_WAYLAND_QT_TOUCH
     if (c->surface_extension) {