diff --git a/src/compositor/meta-window-actor.c b/src/compositor/meta-window-actor.c index 013a8ec66..eec18c947 100644 --- a/src/compositor/meta-window-actor.c +++ b/src/compositor/meta-window-actor.c @@ -1012,6 +1012,12 @@ meta_window_actor_effect_in_progress (MetaWindowActor *self) self->priv->destroy_in_progress); } +static gboolean +is_frozen (MetaWindowActor *self) +{ + return self->priv->freeze_count ? TRUE : FALSE; +} + static void meta_window_actor_queue_create_pixmap (MetaWindowActor *self) { @@ -1022,6 +1028,9 @@ meta_window_actor_queue_create_pixmap (MetaWindowActor *self) if (!priv->mapped) return; + if (is_frozen (self)) + return; + /* This will cause the compositor paint function to be run * if the actor is visible or a clone of the actor is visible. * if the actor isn't visible in any way, then we don't @@ -1360,12 +1369,6 @@ meta_window_actor_destroy (MetaWindowActor *self) clutter_actor_destroy (CLUTTER_ACTOR (self)); } -static gboolean -is_frozen (MetaWindowActor *self) -{ - return self->priv->freeze_count ? TRUE : FALSE; -} - void meta_window_actor_sync_actor_position (MetaWindowActor *self) { @@ -1374,9 +1377,6 @@ meta_window_actor_sync_actor_position (MetaWindowActor *self) meta_window_get_input_rect (priv->window, &window_rect); - if (is_frozen (self)) - return; - if (priv->last_width != window_rect.width || priv->last_height != window_rect.height) { @@ -2202,6 +2202,12 @@ check_needs_reshape (MetaWindowActor *self) if (!priv->needs_reshape) return; + if (priv->shadow_shape != NULL) + { + meta_window_shape_unref (priv->shadow_shape); + priv->shadow_shape = NULL; + } + meta_frame_calc_borders (priv->window->frame, &borders); client_area.x = borders.total.left; @@ -2315,11 +2321,9 @@ meta_window_actor_update_shape (MetaWindowActor *self) MetaWindowActorPrivate *priv = self->priv; priv->needs_reshape = TRUE; - if (priv->shadow_shape != NULL) - { - meta_window_shape_unref (priv->shadow_shape); - priv->shadow_shape = NULL; - } + + if (is_frozen (self)) + return; clutter_actor_queue_redraw (priv->actor); } @@ -2520,6 +2524,10 @@ meta_window_actor_invalidate_shadow (MetaWindowActor *self) priv->recompute_focused_shadow = TRUE; priv->recompute_unfocused_shadow = TRUE; + + if (is_frozen (self)) + return; + clutter_actor_queue_redraw (CLUTTER_ACTOR (self)); }