[mutter] compositor: Avoid thaw on inconsistent effect_completed calls
- From: Carlos Garnacho <carlosg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter] compositor: Avoid thaw on inconsistent effect_completed calls
- Date: Thu, 26 Jan 2017 11:34:09 +0000 (UTC)
commit 2cd78bffd90ed04295cd82f2b7e3e9c44b1511e9
Author: Carlos Garnacho <carlosg gnome org>
Date: Tue Jan 24 11:03:41 2017 +0100
compositor: Avoid thaw on inconsistent effect_completed calls
If the meta_window_actor_effect_completed() triggers inconsistent
accounting, there's also high chances that the thaw call will be
unexpected at this time too, which will lead to a g_error().
This makes mutter more lenient to effect_completed() calls of the
right type (i.e. those triggering freeze/thaw) being performed more
times than necessary in the upper parts. A warning will be issued,
but the process won't abort.
https://bugzilla.gnome.org/show_bug.cgi?id=777691
src/compositor/meta-window-actor.c | 8 +++++++-
1 files changed, 7 insertions(+), 1 deletions(-)
---
diff --git a/src/compositor/meta-window-actor.c b/src/compositor/meta-window-actor.c
index 6b1b3c3..2d2158f 100644
--- a/src/compositor/meta-window-actor.c
+++ b/src/compositor/meta-window-actor.c
@@ -1130,6 +1130,7 @@ meta_window_actor_effect_completed (MetaWindowActor *self,
MetaPluginEffect event)
{
MetaWindowActorPrivate *priv = self->priv;
+ gboolean inconsistent = FALSE;
/* NB: Keep in mind that when effects get completed it possible
* that the corresponding MetaWindow may have be been destroyed.
@@ -1146,6 +1147,7 @@ meta_window_actor_effect_completed (MetaWindowActor *self,
{
g_warning ("Error in minimize accounting.");
priv->minimize_in_progress = 0;
+ inconsistent = TRUE;
}
}
break;
@@ -1156,6 +1158,7 @@ meta_window_actor_effect_completed (MetaWindowActor *self,
{
g_warning ("Error in unminimize accounting.");
priv->unminimize_in_progress = 0;
+ inconsistent = TRUE;
}
}
break;
@@ -1170,6 +1173,7 @@ meta_window_actor_effect_completed (MetaWindowActor *self,
{
g_warning ("Error in map accounting.");
priv->map_in_progress = 0;
+ inconsistent = TRUE;
}
break;
case META_PLUGIN_DESTROY:
@@ -1179,6 +1183,7 @@ meta_window_actor_effect_completed (MetaWindowActor *self,
{
g_warning ("Error in destroy accounting.");
priv->destroy_in_progress = 0;
+ inconsistent = TRUE;
}
break;
case META_PLUGIN_SIZE_CHANGE:
@@ -1187,6 +1192,7 @@ meta_window_actor_effect_completed (MetaWindowActor *self,
{
g_warning ("Error in size change accounting.");
priv->size_change_in_progress = 0;
+ inconsistent = TRUE;
}
break;
case META_PLUGIN_SWITCH_WORKSPACE:
@@ -1194,7 +1200,7 @@ meta_window_actor_effect_completed (MetaWindowActor *self,
break;
}
- if (is_freeze_thaw_effect (event))
+ if (is_freeze_thaw_effect (event) && !inconsistent)
meta_window_actor_thaw (self);
if (!meta_window_actor_effect_in_progress (self))
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]