diff --git a/src/core/window.c b/src/core/window.c index 595177b9a..2545a1b5b 100644 --- a/src/core/window.c +++ b/src/core/window.c @@ -964,6 +964,8 @@ _meta_window_shared_new (MetaDisplay *display, MetaCompEffect effect, XWindowAttributes *attrs) { + MetaContext *context = meta_display_get_context (display); + MetaBackend *backend = meta_context_get_backend (context); MetaWorkspaceManager *workspace_manager = display->workspace_manager; MetaWindow *window; @@ -1157,7 +1159,11 @@ _meta_window_shared_new (MetaDisplay *display, window->compositor_private = NULL; - window->monitor = meta_window_calculate_main_logical_monitor (window); + if (window->rect.width > 0 && window->rect.height > 0) + window->monitor = meta_window_calculate_main_logical_monitor (window); + else + window->monitor = meta_backend_get_current_logical_monitor (backend); + if (window->monitor) window->preferred_output_winsys_id = window->monitor->winsys_id; else diff --git a/src/wayland/meta-window-wayland.c b/src/wayland/meta-window-wayland.c index 8190a01b4..2a923ef8f 100644 --- a/src/wayland/meta-window-wayland.c +++ b/src/wayland/meta-window-wayland.c @@ -468,6 +468,9 @@ meta_window_wayland_update_main_monitor (MetaWindow *window, return; } + if (window->rect.width == 0 || window->rect.height == 0) + return; + /* Require both the current and the new monitor would be the new main monitor, * even given the resulting scale the window would end up having. This is * needed to avoid jumping back and forth between the new and the old, since