mirror of
https://github.com/edu4rdshl/gnome-shell.git
synced 2026-07-18 07:34:54 +00:00
messageTray: Prevent reentrancy issues in _updateState
The methods we call in _updateState may not be reentrant, so make sure that we never get into a situation where _updateState, through some crazy chain of events, calls itself. https://bugzilla.gnome.org/show_bug.cgi?id=711694
This commit is contained in:
parent
c85145d73c
commit
87f0e79749
1 changed files with 9 additions and 0 deletions
|
|
@ -2356,6 +2356,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;
|
||||
|
|
@ -2436,6 +2443,8 @@ const MessageTray = new Lang.Class({
|
|||
this._showDesktopClone();
|
||||
else if (desktopCloneIsVisible && !desktopCloneShouldBeVisible)
|
||||
this._hideDesktopClone();
|
||||
|
||||
this._updatingState = false;
|
||||
},
|
||||
|
||||
_tween: function(actor, statevar, value, params) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue