Explorar o código

x11: Always send fullscreen dimensions except on XWayland

More non-compositing window managers than just openbox seem to need this, so always force sending the window position and dimensions when entering/leaving fullscreen. If they are wrong, they will be immediately overwritten by the correct dimensions from a subsequent ConfigureNotify event.

This is disabled on XWayland, as it seems to cause hitching on some compositors.

(cherry picked from commit 0657ece55dadb316adabd5d36b81f40ba6715c21)
Frank Praznik hai 10 meses
pai
achega
180171cad6
Modificáronse 1 ficheiros con 2 adicións e 25 borrados
  1. 2 25
      src/video/x11/SDL_x11video.c

+ 2 - 25
src/video/x11/SDL_x11video.c

@@ -75,23 +75,6 @@ static bool X11_IsXWayland(Display *d)
     return X11_XQueryExtension(d, "XWAYLAND", &opcode, &event, &error) == True;
 }
 
-static bool X11_CheckCurrentDesktop(const char *name)
-{
-    SDL_Environment *env = SDL_GetEnvironment();
-
-    const char *desktopVar = SDL_GetEnvironmentVariable(env, "DESKTOP_SESSION");
-    if (desktopVar && SDL_strcasecmp(desktopVar, name) == 0) {
-        return true;
-    }
-
-    desktopVar = SDL_GetEnvironmentVariable(env, "XDG_CURRENT_DESKTOP");
-    if (desktopVar && SDL_strcasestr(desktopVar, name)) {
-        return true;
-    }
-
-    return false;
-}
-
 static SDL_VideoDevice *X11_CreateDevice(void)
 {
     SDL_VideoDevice *device;
@@ -270,17 +253,11 @@ static SDL_VideoDevice *X11_CreateDevice(void)
 
     device->device_caps = VIDEO_DEVICE_CAPS_HAS_POPUP_WINDOW_SUPPORT;
 
-    /* Openbox doesn't send the new window dimensions when entering fullscreen, so the events must be synthesized.
-     * This is otherwise not wanted, as it can break fullscreen window positioning on multi-monitor configurations.
-     */
-    if (!X11_CheckCurrentDesktop("openbox")) {
-        device->device_caps |= VIDEO_DEVICE_CAPS_SENDS_FULLSCREEN_DIMENSIONS;
-    }
-
     data->is_xwayland = X11_IsXWayland(x11_display);
     if (data->is_xwayland) {
         device->device_caps |= VIDEO_DEVICE_CAPS_MODE_SWITCHING_EMULATED |
-                               VIDEO_DEVICE_CAPS_DISABLE_MOUSE_WARP_ON_FULLSCREEN_TRANSITIONS;
+                               VIDEO_DEVICE_CAPS_DISABLE_MOUSE_WARP_ON_FULLSCREEN_TRANSITIONS |
+                               VIDEO_DEVICE_CAPS_SENDS_FULLSCREEN_DIMENSIONS;
     }
 
     return device;