window.c: Create xdg_surface up front
Fixes initial fullscreen for calibrator.
https://bugs.freedesktop.org/show_bug.cgi?id=76970
diff --git a/clients/window.c b/clients/window.c
index c510f50..e770a04 100644
--- a/clients/window.c
+++ b/clients/window.c
@@ -3933,15 +3933,7 @@
struct surface *surface;
if (!window->custom) {
- if (!window->xdg_popup && !window->xdg_surface) {
- window->xdg_surface = xdg_shell_get_xdg_surface(window->display->xdg_shell,
- window->main_surface->surface);
- fail_on_null(window->xdg_surface);
-
- xdg_surface_set_user_data(window->xdg_surface, window);
- xdg_surface_add_listener(window->xdg_surface,
- &xdg_surface_listener, window);
-
+ if (window->xdg_surface) {
window_sync_transient_for(window);
window_sync_margin(window);
}
@@ -4388,7 +4380,20 @@
struct window *
window_create(struct display *display)
{
- return window_create_internal(display, 0);
+ struct window *window;
+
+ window = window_create_internal(display, 0);
+
+ window->xdg_surface =
+ xdg_shell_get_xdg_surface(window->display->xdg_shell,
+ window->main_surface->surface);
+ fail_on_null(window->xdg_surface);
+
+ xdg_surface_set_user_data(window->xdg_surface, window);
+ xdg_surface_add_listener(window->xdg_surface,
+ &xdg_surface_listener, window);
+
+ return window;
}
struct window *