Răsfoiți Sursa

x11: Fix boolean/enum comparison

This could set the pending flag even if there was no state change requested, which would cause errant sync timeouts in certain situations.

(cherry picked from commit 6a3b0413dced7a1b50b21c5d7e6649ed8b777972)
Frank Praznik 3 zile în urmă
părinte
comite
5dc7a5daed
1 a modificat fișierele cu 2 adăugiri și 1 ștergeri
  1. 2 1
      src/video/x11/SDL_x11window.c

+ 2 - 1
src/video/x11/SDL_x11window.c

@@ -1891,7 +1891,8 @@ static SDL_FullscreenResult X11_SetWindowFullscreenViaWM(SDL_VideoDevice *_this,
         X11_XSendEvent(display, RootWindow(display, displaydata->screen), 0,
                        SubstructureNotifyMask | SubstructureRedirectMask, &e);
 
-        if (!!(window->flags & SDL_WINDOW_FULLSCREEN) != fullscreen) {
+        // Only set the pending flag if the fullscreen state actually changed.
+        if (((window->flags & SDL_WINDOW_FULLSCREEN) != 0) != (fullscreen != 0)) {
             data->pending_operation |= X11_PENDING_OP_FULLSCREEN;
         }