[gnome-shell] MessageTray: fix reentrancy when calling out to the grab helper



commit 809544800b9da8cd295837346b246484f0b8c5cc
Author: Giovanni Campagna <gcampagna src gnome org>
Date:   Tue Sep 11 00:44:28 2012 +0200

    MessageTray: fix reentrancy when calling out to the grab helper
    
    Similar to 683546. I'm not sure where this bug lives, but let's make
    the code robust.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=683986

 js/ui/messageTray.js |   12 ++++++++++++
 1 files changed, 12 insertions(+), 0 deletions(-)
---
diff --git a/js/ui/messageTray.js b/js/ui/messageTray.js
index 6a2e430..f1687d0 100644
--- a/js/ui/messageTray.js
+++ b/js/ui/messageTray.js
@@ -2310,6 +2310,18 @@ const MessageTray = new Lang.Class({
     },
 
     _hideNotification: function() {
+        // HACK!
+        // There seems to be a reentrancy issue in calling .ungrab() here,
+        // which causes _updateState to be called before _notificationState
+        // becomes HIDING. That hides the notification again, nullifying the
+        // object but not setting _notificationState (and that's the weird part)
+        // As then _notificationState is stuck into SHOWN but _notification
+        // is null, every new _updateState fails and the message tray is
+        // lost forever.
+        //
+        // See more at https://bugzilla.gnome.org/show_bug.cgi?id=683986
+        this._notificationState = State.HIDING;
+
         this._grabHelper.ungrab({ actor: this._notification.actor });
 
         if (this._idleMonitorBecameActiveId) {



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]