mutter/src/core
Jonas Ådahl 8ec8a26717 display: Unmanage windows before compositor
Prior to 'compositor: Destroy actors when unmanaging', window actors
were destroyed when the compositor object was destroyed, long after the
windows were unmanaged, however, when this instead changed to happen
when unmanaging, with the original goal to avoid having these actors try
to interact with the disposed MetaCompositor instance, it caused an
issue where window actors would be indirectly destroyed as a side effect
of their parents being destroyed, which caused some fallout in the logic
handling window-close animation tracking, which relies on
meta_window_actor_queue_destroy() being called before a window actor is
actually destroyed.

Fix this by unmanaging windows before unmanaging the compositor.

From an X11 point of view, this should be harmless, since all it really
do is call XCompositeUnredirectSubwindows().

For the native backend and the common behavior, all unmanaging the
compositor instance does is destroy clutter actors, so doing so after
window actors were already cleaned up should not be a problem, as this
was the case before too.

Fixes: 35ac3a096d
Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/5330
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2403>
2022-05-11 15:37:23 +00:00
..
bell.c *: Fix spelling mistakes found by codespell 2020-08-29 09:10:31 +00:00
bell.h frame: Remove flashing support 2019-03-12 00:27:07 +00:00
boxes-private.h boxes: Add function to check if rectangle is adjacent to region 2021-08-04 14:02:16 +00:00
boxes.c boxes: Make pointer declaration match code style 2022-01-14 20:02:26 +01:00
constraints.c constraints: Try place popup on the same monitor as the anchor rect 2022-01-31 13:14:22 +00:00
constraints.h window: Implement asynchronous popup moving 2020-02-29 21:01:50 +00:00
delete.c core: Drop the default close dialog implementation 2022-05-06 16:13:45 +02:00
display-private.h window: Move some display level window processing to MetaDisplay 2022-02-07 17:52:05 +00:00
display.c display: Unmanage windows before compositor 2022-05-11 15:37:23 +00:00
edge-resistance.c core: Drop code to do edge resistance on timeouts 2021-10-25 15:45:35 +02:00
edge-resistance.h core: Drop code to do edge resistance on timeouts 2021-10-25 15:45:35 +02:00
events.c display: Get the backend from the context 2022-04-29 18:58:38 +00:00
events.h Clean up include macros mess 2018-11-06 17:17:36 +01:00
frame.c Make meta_* logging utilities not require line break 2020-10-08 16:38:41 +02:00
frame.h frame: Pass the frame area for get_mask() 2020-01-29 10:44:50 +00:00
keybindings-private.h display: Expose window_grab_modifiers 2021-02-04 19:26:18 +00:00
keybindings.c core: Drop code to do edge resistance on timeouts 2021-10-25 15:45:35 +02:00
meta-accel-parse.c Clean up include macros mess 2018-11-06 17:17:36 +01:00
meta-accel-parse.h Clean up include macros mess 2018-11-06 17:17:36 +01:00
meta-anonymous-file.c Add read-only anonymous file abstraction MetaAnonymousFile 2020-04-21 17:52:08 +02:00
meta-anonymous-file.h Add read-only anonymous file abstraction MetaAnonymousFile 2020-04-21 17:52:08 +02:00
meta-border.c MetaBorder: Use float constants and functions instead of double variants 2016-02-16 19:02:48 +08:00
meta-border.h Move out generic math parts out of the native barrier implementation 2016-02-16 19:02:48 +08:00
meta-clipboard-manager.c core: Free clipboard selection source on shutdown 2020-06-08 12:11:11 +00:00
meta-clipboard-manager.h core: Add clipboard manager 2019-05-02 16:22:45 +02:00
meta-close-dialog.c Use a consistent style for enum braces 2019-02-28 09:31:01 +01:00
meta-context-main.c native: Replace 'headless' property with 'mode' property 2022-01-14 09:16:09 +00:00
meta-context-main.h Introduce MetaContextMain 2021-07-15 11:25:21 +02:00
meta-context-private.h context: Add :unsafe-mode property 2021-09-02 16:58:46 +00:00
meta-context.c context: Add a new API to raise and restore NOFILE limits 2022-02-07 16:11:42 +01:00
meta-fraction.c Add MetaFraction for dealing with fractions 2017-08-29 14:39:04 +08:00
meta-fraction.h Add MetaFraction for dealing with fractions 2017-08-29 14:39:04 +08:00
meta-gesture-tracker-private.h display: Move finishing of touch sequence to the backend 2019-10-28 18:40:43 +00:00
meta-gesture-tracker.c core: Drop repeated early return condition in function 2021-10-24 19:16:42 +02:00
meta-inhibit-shortcuts-dialog-default-private.h Clean up include macros mess 2018-11-06 17:17:36 +01:00
meta-inhibit-shortcuts-dialog-default.c Use a consistent style for enum braces 2019-02-28 09:31:01 +01:00
meta-inhibit-shortcuts-dialog.c core: add MetaInhibitShortcutsDialog 2017-08-02 11:58:55 +02:00
meta-launch-context.c core: Use DISPLAY envvar to forward in the launch context 2020-02-29 20:41:26 +00:00
meta-pad-action-mapper.c core: Port to input device capabilities in pad mapper 2022-03-30 12:06:52 +00:00
meta-pad-action-mapper.h backends: Split pad action mapping to a separate object 2020-11-27 15:14:33 +00:00
meta-private-enums.h window: Move some display level window processing to MetaDisplay 2022-02-07 17:52:05 +00:00
meta-selection-private.h core: Add private function to get the current selection owner 2020-04-09 21:30:05 +00:00
meta-selection-source-memory.c core: Fix task leak in meta_selection_source_memory_read_async 2020-02-01 14:02:19 +00:00
meta-selection-source-remote.c remote-desktop/session: Add support for SelectionTransfer/Write 2021-02-05 16:44:27 +00:00
meta-selection-source-remote.h remote-desktop/session: Add support for SelectionTransfer/Write 2021-02-05 16:44:27 +00:00
meta-selection-source.c Make MetaSelection, MetaSelectionSource and MetaMemorySelectionSource public 2019-05-02 16:31:45 +02:00
meta-selection.c core/selection: Cancel selection transfer requests after a timeout 2021-07-28 15:26:04 +00:00
meta-sound-player.c cleanup: remove controversial naming 2020-08-04 10:04:16 +02:00
meta-workspace-manager-private.h Move workspace related code from MetaDisplay to MetaWorkspaceManager 2018-07-06 19:47:17 +02:00
meta-workspace-manager.c util: Remove push/pop no msg prefix logging 2021-11-21 20:53:33 +00:00
mutter.c mutter: Raise the NOFILE limit if a Wayland compositor 2022-02-07 16:11:47 +01:00
place.c Make meta_* logging utilities not require line break 2020-10-08 16:38:41 +02:00
place.h place: Make placement rule processing provide relative coordinates 2020-02-29 21:01:50 +00:00
prefs-private.h prefs: Make init function private 2021-05-17 16:08:42 +00:00
prefs.c prefs: Make init function private 2021-05-17 16:08:42 +00:00
restart-helper.c Clean up include macros mess 2018-11-06 17:17:36 +01:00
restart.c core: Restore the NOFILE limit 2022-02-07 16:11:47 +01:00
stack-tracker.c util: Remove push/pop no msg prefix logging 2021-11-21 20:53:33 +00:00
stack-tracker.h meta: Hide libmutter symbols by default and selectively export them 2019-01-23 14:18:13 +01:00
stack.c window: Move some display level window processing to MetaDisplay 2022-02-07 17:52:05 +00:00
stack.h stack: Style and introspection doc fixes 2019-07-08 11:46:52 +02:00
startup-notification-private.h meta, startup-notification: Make type declarations public 2019-01-24 16:38:09 +00:00
startup-notification.c startup-notification: Fix some introspection annotations 2022-04-13 12:03:27 +02:00
util-private.h util: Export and annotate meta_get_clutter_debug_flags 2021-10-18 16:46:59 +00:00
util.c util: Fix compilation when !WITH_VERBOSE_MODE 2022-05-07 11:53:41 +09:00
window-private.h window: Add function to calculate current bounds 2022-03-04 14:48:25 +00:00
window.c mutter: Add missing nullable annotation when possible 2022-04-05 14:05:23 +02:00
workspace-private.h workspace: Add meta_workspace_get_default_focus_window() 2021-08-12 21:39:05 +05:00
workspace.c Revert "workspace: Use existing focus_window when asked to focus default window" 2022-05-04 23:29:39 +02:00