mirror of
https://github.com/brl/mutter.git
synced 2024-11-29 03:20:46 -05:00
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
This commit is contained in:
parent
1597b357a1
commit
2cd78bffd9
@ -1130,6 +1130,7 @@ meta_window_actor_effect_completed (MetaWindowActor *self,
|
|||||||
MetaPluginEffect event)
|
MetaPluginEffect event)
|
||||||
{
|
{
|
||||||
MetaWindowActorPrivate *priv = self->priv;
|
MetaWindowActorPrivate *priv = self->priv;
|
||||||
|
gboolean inconsistent = FALSE;
|
||||||
|
|
||||||
/* NB: Keep in mind that when effects get completed it possible
|
/* NB: Keep in mind that when effects get completed it possible
|
||||||
* that the corresponding MetaWindow may have be been destroyed.
|
* 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.");
|
g_warning ("Error in minimize accounting.");
|
||||||
priv->minimize_in_progress = 0;
|
priv->minimize_in_progress = 0;
|
||||||
|
inconsistent = TRUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -1156,6 +1158,7 @@ meta_window_actor_effect_completed (MetaWindowActor *self,
|
|||||||
{
|
{
|
||||||
g_warning ("Error in unminimize accounting.");
|
g_warning ("Error in unminimize accounting.");
|
||||||
priv->unminimize_in_progress = 0;
|
priv->unminimize_in_progress = 0;
|
||||||
|
inconsistent = TRUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -1170,6 +1173,7 @@ meta_window_actor_effect_completed (MetaWindowActor *self,
|
|||||||
{
|
{
|
||||||
g_warning ("Error in map accounting.");
|
g_warning ("Error in map accounting.");
|
||||||
priv->map_in_progress = 0;
|
priv->map_in_progress = 0;
|
||||||
|
inconsistent = TRUE;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case META_PLUGIN_DESTROY:
|
case META_PLUGIN_DESTROY:
|
||||||
@ -1179,6 +1183,7 @@ meta_window_actor_effect_completed (MetaWindowActor *self,
|
|||||||
{
|
{
|
||||||
g_warning ("Error in destroy accounting.");
|
g_warning ("Error in destroy accounting.");
|
||||||
priv->destroy_in_progress = 0;
|
priv->destroy_in_progress = 0;
|
||||||
|
inconsistent = TRUE;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case META_PLUGIN_SIZE_CHANGE:
|
case META_PLUGIN_SIZE_CHANGE:
|
||||||
@ -1187,6 +1192,7 @@ meta_window_actor_effect_completed (MetaWindowActor *self,
|
|||||||
{
|
{
|
||||||
g_warning ("Error in size change accounting.");
|
g_warning ("Error in size change accounting.");
|
||||||
priv->size_change_in_progress = 0;
|
priv->size_change_in_progress = 0;
|
||||||
|
inconsistent = TRUE;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case META_PLUGIN_SWITCH_WORKSPACE:
|
case META_PLUGIN_SWITCH_WORKSPACE:
|
||||||
@ -1194,7 +1200,7 @@ meta_window_actor_effect_completed (MetaWindowActor *self,
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (is_freeze_thaw_effect (event))
|
if (is_freeze_thaw_effect (event) && !inconsistent)
|
||||||
meta_window_actor_thaw (self);
|
meta_window_actor_thaw (self);
|
||||||
|
|
||||||
if (!meta_window_actor_effect_in_progress (self))
|
if (!meta_window_actor_effect_in_progress (self))
|
||||||
|
Loading…
Reference in New Issue
Block a user