summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/compositor/meta-window-actor.c16
-rw-r--r--src/x11/window-x11.c5
2 files changed, 19 insertions, 2 deletions
diff --git a/src/compositor/meta-window-actor.c b/src/compositor/meta-window-actor.c
index efb939a20..6d384587c 100644
--- a/src/compositor/meta-window-actor.c
+++ b/src/compositor/meta-window-actor.c
@@ -53,6 +53,8 @@ struct _MetaWindowActorPrivate
MetaWindow *window;
MetaCompositor *compositor;
+ MetaCompEffect pending_effect;
+
MetaSurfaceActor *surface;
/* MetaShadowFactory only caches shadows that are actually in use;
@@ -117,6 +119,7 @@ struct _MetaWindowActorPrivate
guint updates_frozen : 1;
guint first_frame_state : 2; /* FirstFrameState */
+ guint has_pending_effect : 1;
};
typedef struct _FrameData FrameData;
@@ -363,6 +366,12 @@ meta_window_actor_sync_thawed_state (MetaWindowActor *self)
if (priv->first_frame_state == INITIALLY_FROZEN)
priv->first_frame_state = DRAWING_FIRST_FRAME;
+ if (priv->has_pending_effect)
+ {
+ meta_window_actor_show (self, priv->pending_effect);
+ priv->has_pending_effect = FALSE;
+ }
+
if (priv->surface)
meta_surface_actor_set_frozen (priv->surface, FALSE);
@@ -1321,6 +1330,13 @@ meta_window_actor_show (MetaWindowActor *self,
g_return_if_fail (!priv->visible);
+ if (is_frozen (self))
+ {
+ priv->pending_effect = effect;
+ priv->has_pending_effect = TRUE;
+ return;
+ }
+
self->priv->visible = TRUE;
switch (effect)
diff --git a/src/x11/window-x11.c b/src/x11/window-x11.c
index 94f62718b..c14f90070 100644
--- a/src/x11/window-x11.c
+++ b/src/x11/window-x11.c
@@ -1244,8 +1244,9 @@ meta_window_x11_move_resize_internal (MetaWindow *window,
{
meta_error_trap_push (window->display);
- if (window == window->display->grab_window &&
- meta_grab_op_is_resizing (window->display->grab_op) &&
+ if ((window->constructing ||
+ (window == window->display->grab_window &&
+ meta_grab_op_is_resizing (window->display->grab_op))) &&
!window->disable_sync &&
window->sync_request_counter != None &&
window->sync_request_alarm != None &&