Просмотр исходного кода

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 14 часов назад
Родитель
Сommit
5dc7a5daed
1 измененных файлов с 2 добавлено и 1 удалено
  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;
         }