Claim DBus names (Shell, Notifictions) *very* early
See commit f2158218bef0c51 in mutter. Basically, we need to grab org.freedesktop.Notifications before anything else in the session gets started. Note: I intentionally removed the Util.killall bits. I believe that for notification-daemon at least, if we specify DBUS_NAME_FLAG_REPLACE_EXISTING, we'll take over the name. Not sure about notify-osd; if that's still a problem, then what we need to do is add killing (and possibly respawning) of notify-osd to "gnome-shell --replace", and not have it embedded randomly in a JS file. https://bugzilla.gnome.org/show_bug.cgi?id=642666
This commit is contained in:
@ -93,16 +93,6 @@ NotificationDaemon.prototype = {
|
||||
_init: function() {
|
||||
DBus.session.exportObject('/org/freedesktop/Notifications', this);
|
||||
|
||||
this._everAcquiredName = false;
|
||||
DBus.session.acquire_name('org.freedesktop.Notifications',
|
||||
// We pass MANY_INSTANCES so that if
|
||||
// notification-daemon is running, we'll
|
||||
// get queued behind it and then get the
|
||||
// name after killing it below
|
||||
DBus.MANY_INSTANCES,
|
||||
Lang.bind(this, this._acquiredName),
|
||||
Lang.bind(this, this._lostName));
|
||||
|
||||
this._sources = {};
|
||||
this._senderToPid = {};
|
||||
this._notifications = {};
|
||||
@ -117,22 +107,6 @@ NotificationDaemon.prototype = {
|
||||
Lang.bind(this, this._onFocusAppChanged));
|
||||
},
|
||||
|
||||
_acquiredName: function() {
|
||||
this._everAcquiredName = true;
|
||||
},
|
||||
|
||||
_lostName: function() {
|
||||
if (this._everAcquiredName)
|
||||
log('Lost name org.freedesktop.Notifications!');
|
||||
else if (GLib.getenv('GNOME_SHELL_NO_REPLACE'))
|
||||
log('Failed to acquire org.freedesktop.Notifications');
|
||||
else {
|
||||
log('Failed to acquire org.freedesktop.Notifications; trying again');
|
||||
Util.killall('notification-daemon');
|
||||
Util.killall('notify-osd');
|
||||
}
|
||||
},
|
||||
|
||||
_iconForNotificationData: function(icon, hints, size) {
|
||||
let textureCache = St.TextureCache.get_default();
|
||||
|
||||
|
Reference in New Issue
Block a user