x11: Unmanage X11 windows on MetaX11Display finalization
This used to be relied upon meta_display_close(), but MetaDisplay and MetaX11Display lifetimes may be unrelated. https://gitlab.gnome.org/GNOME/mutter/merge_requests/420
This commit is contained in:
parent
465e13128b
commit
7713006f5b
@ -95,6 +95,27 @@ static void unset_wm_check_hint (MetaX11Display *x11_display);
|
|||||||
static void prefs_changed_callback (MetaPreference pref,
|
static void prefs_changed_callback (MetaPreference pref,
|
||||||
void *data);
|
void *data);
|
||||||
|
|
||||||
|
static void
|
||||||
|
meta_x11_display_unmanage_windows (MetaX11Display *x11_display)
|
||||||
|
{
|
||||||
|
GList *windows, *l;
|
||||||
|
MetaWindow *window;
|
||||||
|
|
||||||
|
if (!x11_display->xids)
|
||||||
|
return;
|
||||||
|
|
||||||
|
windows = g_hash_table_get_values (x11_display->xids);
|
||||||
|
g_list_foreach (windows, (GFunc) g_object_ref, NULL);
|
||||||
|
|
||||||
|
for (l = windows; l; l = l->next)
|
||||||
|
{
|
||||||
|
window = l->data;
|
||||||
|
if (!window->unmanaging)
|
||||||
|
meta_window_unmanage (window, META_CURRENT_TIME);
|
||||||
|
}
|
||||||
|
g_list_free_full (windows, g_object_unref);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
meta_x11_display_dispose (GObject *object)
|
meta_x11_display_dispose (GObject *object)
|
||||||
{
|
{
|
||||||
@ -107,6 +128,7 @@ meta_x11_display_dispose (GObject *object)
|
|||||||
meta_x11_display_ungrab_keys (x11_display);
|
meta_x11_display_ungrab_keys (x11_display);
|
||||||
|
|
||||||
meta_x11_selection_shutdown (x11_display);
|
meta_x11_selection_shutdown (x11_display);
|
||||||
|
meta_x11_display_unmanage_windows (x11_display);
|
||||||
|
|
||||||
g_clear_object (&x11_display->x11_stack);
|
g_clear_object (&x11_display->x11_stack);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user