[mutter] window-actor: Keep in compositor's window list until destroyed
- From: Florian Müllner <fmuellner src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter] window-actor: Keep in compositor's window list until destroyed
- Date: Thu, 11 Sep 2014 15:51:20 +0000 (UTC)
commit 98fa34358817cbee70b0d714495bec9d6ccae3e9
Author: Florian Müllner <fmuellner gnome org>
Date: Wed Sep 10 22:24:26 2014 +0200
window-actor: Keep in compositor's window list until destroyed
When a window is destroyed, the corresponding actor may still be
kept around for the destroy effect. But as the actor is removed
from the compositor's stack list immediately, the compositor will
always stack it above "valid" window actors - this is not what we
want, so only update the compositor's list when the actor is
actually destroyed.
https://bugzilla.gnome.org/show_bug.cgi?id=735927
src/compositor/compositor.c | 4 ++--
src/compositor/meta-window-actor.c | 7 -------
2 files changed, 2 insertions(+), 9 deletions(-)
---
diff --git a/src/compositor/compositor.c b/src/compositor/compositor.c
index 586bdc1..47bea31 100644
--- a/src/compositor/compositor.c
+++ b/src/compositor/compositor.c
@@ -920,7 +920,7 @@ meta_compositor_sync_stack (MetaCompositor *compositor,
old_actor = old_stack->data;
old_window = meta_window_actor_get_meta_window (old_actor);
- if (old_window->hidden &&
+ if ((old_window->hidden || old_window->unmanaging) &&
!meta_window_actor_effect_in_progress (old_actor))
{
old_stack = g_list_delete_link (old_stack, old_stack);
@@ -954,7 +954,7 @@ meta_compositor_sync_stack (MetaCompositor *compositor,
* filtered out non-animating hidden windows above.
*/
if (old_actor &&
- (!stack_actor || old_window->hidden))
+ (!stack_actor || old_window->hidden || old_window->unmanaging))
{
actor = old_actor;
window = old_window;
diff --git a/src/compositor/meta-window-actor.c b/src/compositor/meta-window-actor.c
index 8043157..7b9d3a5 100644
--- a/src/compositor/meta-window-actor.c
+++ b/src/compositor/meta-window-actor.c
@@ -1171,7 +1171,6 @@ meta_window_actor_destroy (MetaWindowActor *self)
{
MetaWindowActorPrivate *priv = self->priv;
MetaWindow *window = priv->window;
- MetaCompositor *compositor = priv->compositor;
MetaWindowType window_type = meta_window_get_window_type (window);
meta_window_set_compositor_private (window, NULL);
@@ -1182,12 +1181,6 @@ meta_window_actor_destroy (MetaWindowActor *self)
priv->send_frame_messages_timer = 0;
}
- /*
- * We remove the window from internal lookup hashes and thus any other
- * unmap events etc fail
- */
- compositor->windows = g_list_remove (compositor->windows, (gconstpointer) self);
-
if (window_type == META_WINDOW_DROPDOWN_MENU ||
window_type == META_WINDOW_POPUP_MENU ||
window_type == META_WINDOW_TOOLTIP ||
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]