core: Disconnect notify::is-grabbed signal when closing display
Given destruction order, the display goes away before the stage, so this lingering signal connection may trigger unintended crashes. Fixes: 05eeb684d1 ("window: Postpone focusing until grab ended if uninteractable") Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3422>
This commit is contained in:
parent
8103ebc21a
commit
8de30c3b6e
@ -1223,6 +1223,8 @@ void
|
|||||||
meta_display_close (MetaDisplay *display,
|
meta_display_close (MetaDisplay *display,
|
||||||
guint32 timestamp)
|
guint32 timestamp)
|
||||||
{
|
{
|
||||||
|
MetaBackend *backend = backend_from_display (display);
|
||||||
|
ClutterActor *stage = meta_backend_get_stage (backend);
|
||||||
MetaCompositor *compositor;
|
MetaCompositor *compositor;
|
||||||
MetaLaters *laters;
|
MetaLaters *laters;
|
||||||
|
|
||||||
@ -1272,6 +1274,8 @@ meta_display_close (MetaDisplay *display,
|
|||||||
|
|
||||||
meta_display_shutdown_keys (display);
|
meta_display_shutdown_keys (display);
|
||||||
|
|
||||||
|
g_signal_handlers_disconnect_by_func (stage, on_is_grabbed_changed, display);
|
||||||
|
|
||||||
g_clear_object (&display->bell);
|
g_clear_object (&display->bell);
|
||||||
g_clear_object (&display->startup_notification);
|
g_clear_object (&display->startup_notification);
|
||||||
g_clear_object (&display->workspace_manager);
|
g_clear_object (&display->workspace_manager);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user