windowManager: Avoid reentrancy on the ::size-changed handler

We have no guarantees on the number of ::size-changed signals that we may
receive, so the _sizeChangedWindow handler may run multiple times, which
leads to multiple calls to meta_plugin_size_change_completed(). So double
check the actor is not already being animated in the _sizeChangedWindow
handler to avoid reentrancy.

https://bugzilla.gnome.org/show_bug.cgi?id=777784
This commit is contained in:
Carlos Garnacho 2017-01-25 17:47:18 +01:00
parent 6a40e72329
commit a82c564a73

View File

@ -1286,6 +1286,8 @@ const WindowManager = new Lang.Class({
_sizeChangedWindow: function(shellwm, actor) {
if (!actor.__fullscreenInfo)
return;
if (this._resizing.indexOf(actor) != -1)
return;
let actorClone = actor.__fullscreenInfo.clone;
let targetRect = actor.meta_window.get_frame_rect();