Update window->visible_to_compositor before calling into compositor
To deal with reentrancy from compositor plugins doing things like moving windows between workspaces in an effect callback, update the visible_to_compositor flag before calling into the compositor. https://bugzilla.gnome.org/show_bug.cgi?id=613124
This commit is contained in:
parent
78092a404f
commit
0a821d2341
@ -2678,6 +2678,8 @@ meta_window_show (MetaWindow *window)
|
|||||||
|
|
||||||
if (!window->visible_to_compositor)
|
if (!window->visible_to_compositor)
|
||||||
{
|
{
|
||||||
|
window->visible_to_compositor = TRUE;
|
||||||
|
|
||||||
if (window->display->compositor)
|
if (window->display->compositor)
|
||||||
{
|
{
|
||||||
MetaCompEffect effect = META_COMP_EFFECT_NONE;
|
MetaCompEffect effect = META_COMP_EFFECT_NONE;
|
||||||
@ -2697,8 +2699,6 @@ meta_window_show (MetaWindow *window)
|
|||||||
meta_compositor_show_window (window->display->compositor,
|
meta_compositor_show_window (window->display->compositor,
|
||||||
window, effect);
|
window, effect);
|
||||||
}
|
}
|
||||||
|
|
||||||
window->visible_to_compositor = TRUE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* We don't want to worry about all cases from inside
|
/* We don't want to worry about all cases from inside
|
||||||
@ -2769,6 +2769,8 @@ meta_window_hide (MetaWindow *window)
|
|||||||
|
|
||||||
if (window->visible_to_compositor)
|
if (window->visible_to_compositor)
|
||||||
{
|
{
|
||||||
|
window->visible_to_compositor = FALSE;
|
||||||
|
|
||||||
if (window->display->compositor)
|
if (window->display->compositor)
|
||||||
{
|
{
|
||||||
MetaCompEffect effect = META_COMP_EFFECT_NONE;
|
MetaCompEffect effect = META_COMP_EFFECT_NONE;
|
||||||
@ -2788,8 +2790,6 @@ meta_window_hide (MetaWindow *window)
|
|||||||
meta_compositor_hide_window (window->display->compositor,
|
meta_compositor_hide_window (window->display->compositor,
|
||||||
window, effect);
|
window, effect);
|
||||||
}
|
}
|
||||||
|
|
||||||
window->visible_to_compositor = FALSE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
did_hide = FALSE;
|
did_hide = FALSE;
|
||||||
|
Loading…
Reference in New Issue
Block a user