Răsfoiți Sursa

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 10 luni în urmă
părinte
comite
180171cad6
1 a modificat fișierele cu 2 adăugiri și 25 ștergeri
  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;