core: Avoid consecutive workspace changes in window construction

We first set the workspace to the transient-for parent's, and then
try to set on the current workspace. If both happen, we double the
work on adding/removing it from the workspace, and everything that
happens in result.

Should reduce some activity while typing on the Epiphany address
bar, as the animation results in a number of xdg_popup being created
and destroyed to handle the animation.

https://gitlab.gnome.org/GNOME/mutter/issues/556
This commit is contained in:
Carlos Garnacho 2019-07-19 17:48:42 +02:00
parent aee8bfce3f
commit 09bab98b1e

View File

@ -1296,8 +1296,7 @@ _meta_window_shared_new (MetaDisplay *display,
window->transient_for->on_all_workspaces_requested, window->transient_for->on_all_workspaces_requested,
window->transient_for->workspace); window->transient_for->workspace);
} }
else if (window->on_all_workspaces)
if (window->on_all_workspaces)
{ {
meta_topic (META_DEBUG_PLACEMENT, meta_topic (META_DEBUG_PLACEMENT,
"Putting window %s on all workspaces\n", "Putting window %s on all workspaces\n",