window-actor: Skip frame-sync when the corresponding window is gone

https://bugzilla.gnome.org/show_bug.cgi?id=735927
This commit is contained in:
Florian Müllner 2014-09-10 23:55:22 +02:00
parent d50f8afa9e
commit 8d53ae894b

View File

@ -927,7 +927,12 @@ meta_window_actor_queue_frame_drawn (MetaWindowActor *self,
gboolean no_delay_frame)
{
MetaWindowActorPrivate *priv = self->priv;
FrameData *frame = g_slice_new0 (FrameData);
FrameData *frame;
if (meta_window_actor_is_destroyed (self))
return;
frame = g_slice_new0 (FrameData);
priv->needs_frame_drawn = TRUE;
@ -1903,6 +1908,9 @@ meta_window_actor_pre_paint (MetaWindowActor *self)
MetaWindowActorPrivate *priv = self->priv;
GList *l;
if (meta_window_actor_is_destroyed (self))
return;
meta_window_actor_handle_updates (self);
for (l = priv->frames; l != NULL; l = l->next)
@ -1952,6 +1960,9 @@ meta_window_actor_post_paint (MetaWindowActor *self)
priv->repaint_scheduled = FALSE;
if (meta_window_actor_is_destroyed (self))
return;
/* This window had damage, but wasn't actually redrawn because
* it is obscured. So we should wait until timer expiration
* before sending _NET_WM_FRAME_* messages.
@ -2039,6 +2050,9 @@ meta_window_actor_frame_complete (MetaWindowActor *self,
MetaWindowActorPrivate *priv = self->priv;
GList *l;
if (meta_window_actor_is_destroyed (self))
return;
for (l = priv->frames; l;)
{
GList *l_next = l->next;