From de6d9591c42074c503ccdb9fddbfa4165777e5b4 Mon Sep 17 00:00:00 2001 From: Adel Gadllah Date: Mon, 24 Jun 2013 09:49:44 +0200 Subject: [PATCH] window: Make sure override_redirect window have correct monitor info We need to update window->monitor on override_redirect windows as well, other wise they may end up with an invalid struct which triggers and assert when meta_window_is_monitor_sized is called. https://bugzilla.gnome.org/show_bug.cgi?id=702564 --- src/core/screen.c | 2 +- src/core/window.c | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/core/screen.c b/src/core/screen.c index 200724a78..6db3ea385 100644 --- a/src/core/screen.c +++ b/src/core/screen.c @@ -3039,7 +3039,7 @@ meta_screen_resize (MetaScreen *screen, /* Fix up monitor for all windows on this screen */ windows = meta_display_list_windows (screen->display, - META_LIST_DEFAULT); + META_LIST_INCLUDE_OVERRIDE_REDIRECT); for (tmp = windows; tmp != NULL; tmp = tmp->next) { MetaWindow *window = tmp->data; diff --git a/src/core/window.c b/src/core/window.c index 3145851d1..ae3c69460 100644 --- a/src/core/window.c +++ b/src/core/window.c @@ -145,6 +145,8 @@ static void meta_window_move_between_rects (MetaWindow *window, static void unmaximize_window_before_freeing (MetaWindow *window); static void unminimize_window_and_all_transient_parents (MetaWindow *window); +static void meta_window_update_monitor (MetaWindow *window); + /* Idle handlers for the three queues (run with meta_later_add()). The * "data" parameter in each case will be a GINT_TO_POINTER of the * index into the queue arrays to use. @@ -4788,6 +4790,12 @@ meta_window_update_for_monitors_changed (MetaWindow *window) if (window->type == META_WINDOW_DESKTOP) return; + if (window->override_redirect) + { + meta_window_update_monitor (window); + return; + } + old = window->monitor; /* Start on primary */