[gnome-shell] notificationDaemon: Work around JS interpreter bug
- From: Colin Walters <walters src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell] notificationDaemon: Work around JS interpreter bug
- Date: Thu, 25 Aug 2011 13:45:10 +0000 (UTC)
commit b76efe17d6049693374053d60bd7c358f6a0d83c
Author: Colin Walters <walters verbum org>
Date: Thu Aug 25 09:20:00 2011 -0400
notificationDaemon: Work around JS interpreter bug
The "id" variable was being sporadically reset to null, and as far as
Florian and I could determine, this is actually a Spidermonkey bug.
The issue has something to do with:
1) use of "let" for the variable
2) Nesting a dynamic closure inside of a for() loop
Work around it here for now - I tried to create a minimized test case
to hand to the Spidermonkey developers, but failed. A big part of
the problem is it's only sporadically reproducible.
js/ui/notificationDaemon.js | 8 ++++----
1 files changed, 4 insertions(+), 4 deletions(-)
---
diff --git a/js/ui/notificationDaemon.js b/js/ui/notificationDaemon.js
index 86bd4a2..915808f 100644
--- a/js/ui/notificationDaemon.js
+++ b/js/ui/notificationDaemon.js
@@ -305,7 +305,7 @@ NotificationDaemon.prototype = {
ndata.notification = notification;
notification.connect('destroy', Lang.bind(this,
function(n, reason) {
- delete this._notifications[id];
+ delete this._notifications[ndata.id];
let notificationClosedReason;
switch (reason) {
case MessageTray.NotificationDestroyedReason.EXPIRED:
@@ -318,11 +318,11 @@ NotificationDaemon.prototype = {
notificationClosedReason = NotificationClosedReason.APP_CLOSED;
break;
}
- this._emitNotificationClosed(id, notificationClosedReason);
+ this._emitNotificationClosed(ndata.id, notificationClosedReason);
}));
notification.connect('action-invoked', Lang.bind(this,
function(n, actionId) {
- this._emitActionInvoked(id, actionId);
+ this._emitActionInvoked(ndata.id, actionId);
}));
} else {
notification.update(summary, body, { icon: iconActor,
@@ -336,7 +336,7 @@ NotificationDaemon.prototype = {
if (actions[i] == 'default')
notification.connect('clicked', Lang.bind(this,
function() {
- this._emitActionInvoked(id, "default");
+ this._emitActionInvoked(ndata.id, "default");
}));
else
notification.addButton(actions[i], actions[i + 1]);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]