[gnome-shell] MessageTray: fix reentrancy when calling out to the grab helper
- From: Giovanni Campagna <gcampagna src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell] MessageTray: fix reentrancy when calling out to the grab helper
- Date: Sat, 10 Nov 2012 16:36:12 +0000 (UTC)
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]