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:
Owen W. Taylor 2011-01-04 11:43:02 -05:00
parent 78092a404f
commit 0a821d2341

View File

@ -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;