diff --git a/ChangeLog b/ChangeLog index d713b7953..a5c515216 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2002-10-27 Havoc Pennington + + * src/window.c (meta_window_free): move + meta_window_shutdown_group() much earlier in the destroy process. + May fix #96928 tracked down by Kjartan Maraas and Martin Garton. + + * src/group.c (meta_window_get_group): never add window to a group + after we've started unmanaging the window + 2002-10-26 Havoc Pennington * src/iconcache.c: include config.h diff --git a/src/group.c b/src/group.c index 61e175ff2..9deb9bfa0 100644 --- a/src/group.c +++ b/src/group.c @@ -85,6 +85,9 @@ meta_group_unref (MetaGroup *group) MetaGroup* meta_window_get_group (MetaWindow *window) { + if (window->unmanaging) + return NULL; + if (window->cached_group == NULL && window->xgroup_leader != None) /* some windows have no group */ { diff --git a/src/window.c b/src/window.c index c6c171509..0c042e461 100644 --- a/src/window.c +++ b/src/window.c @@ -840,7 +840,12 @@ meta_window_free (MetaWindow *window) meta_group_update_layers (group); meta_stack_thaw (window->screen->stack); } - + + meta_window_shutdown_group (window); /* safe to do this early as + * group.c won't re-add to the + * group if window->unmanaging + */ + /* If we have the focus, focus some other window. * This is done first, so that if the unmap causes * an EnterNotify the EnterNotify will have final say @@ -985,8 +990,6 @@ meta_window_free (MetaWindow *window) g_object_unref (G_OBJECT (window->mini_icon)); meta_icon_cache_free (&window->icon_cache); - - meta_window_shutdown_group (window); g_free (window->sm_client_id); g_free (window->wm_client_machine);