wayland: Don't roundtrip in ShowWindow unless restoring a hidden window
Don't call the roundtrip in ShowWindow unless restoring a previously hidden window. This fixes a regression in GNOME when creating a window with the fullscreen flag set, as the fullscreen window will be positioned down the screen by the height of the top bar if the window is made fullscreen on the primary display and the roundtrip is called when initially displaying the window.main
parent
3046d55d0e
commit
74bdb2115d
|
@ -1370,7 +1370,10 @@ void Wayland_ShowWindow(_THIS, SDL_Window *window)
|
||||||
* Roundtrip required to avoid a possible protocol violation when
|
* Roundtrip required to avoid a possible protocol violation when
|
||||||
* HideWindow was called immediately before ShowWindow.
|
* HideWindow was called immediately before ShowWindow.
|
||||||
*/
|
*/
|
||||||
WAYLAND_wl_display_roundtrip(c->display);
|
if (data->needs_roundtrip) {
|
||||||
|
data->needs_roundtrip = SDL_FALSE;
|
||||||
|
WAYLAND_wl_display_roundtrip(c->display);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -1447,6 +1450,7 @@ void Wayland_HideWindow(_THIS, SDL_Window *window)
|
||||||
* Roundtrip required to avoid a possible protocol violation when
|
* Roundtrip required to avoid a possible protocol violation when
|
||||||
* ShowWindow is called immediately after HideWindow.
|
* ShowWindow is called immediately after HideWindow.
|
||||||
*/
|
*/
|
||||||
|
wind->needs_roundtrip = SDL_TRUE;
|
||||||
WAYLAND_wl_display_roundtrip(data->display);
|
WAYLAND_wl_display_roundtrip(data->display);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -107,6 +107,7 @@ typedef struct {
|
||||||
SDL_Rect viewport_rect;
|
SDL_Rect viewport_rect;
|
||||||
SDL_bool needs_resize_event;
|
SDL_bool needs_resize_event;
|
||||||
SDL_bool floating_resize_pending;
|
SDL_bool floating_resize_pending;
|
||||||
|
SDL_bool needs_roundtrip;
|
||||||
} SDL_WindowData;
|
} SDL_WindowData;
|
||||||
|
|
||||||
extern void Wayland_ShowWindow(_THIS, SDL_Window *window);
|
extern void Wayland_ShowWindow(_THIS, SDL_Window *window);
|
||||||
|
|
Loading…
Reference in New Issue