diff --git a/js/ui/messageTray.js b/js/ui/messageTray.js index c66c9f6fa..7a8403c8b 100644 --- a/js/ui/messageTray.js +++ b/js/ui/messageTray.js @@ -2392,6 +2392,13 @@ const MessageTray = new Lang.Class({ // _updateState() figures out what (if anything) needs to be done // at the present time. _updateState: function() { + // If our state changes caused _updateState to be called, + // just exit now to prevent reentrancy issues. + if (this._updatingState) + return; + + this._updatingState = true; + // Filter out acknowledged notifications. this._notificationQueue = this._notificationQueue.filter(function(n) { return !n.acknowledged; @@ -2474,6 +2481,8 @@ const MessageTray = new Lang.Class({ } else if (desktopCloneIsVisible && !desktopCloneShouldBeVisible) { this._hideDesktopClone(); } + + this._updatingState = false; }, _tween: function(actor, statevar, value, params) {