dbusServices: Allow replacement

The REPLACE flag we currently pass is useless, as replacing the service
is disallowed when not started with the ALLOW_REPLACEMENT flag.

Fix this by adopting a more standard pattern where replacement is always
allowed, but only actually requested when `--replace` is passed on the
command line.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2152>
This commit is contained in:
Florian Müllner 2022-02-03 01:57:46 +01:00 committed by Marge Bot
parent ae053f954f
commit 8d8eba000f

View File

@ -6,6 +6,8 @@ const Signals = imports.signals;
const IDLE_SHUTDOWN_TIME = 2; // s const IDLE_SHUTDOWN_TIME = 2; // s
const { programArgs } = imports.system;
var ServiceImplementation = class { var ServiceImplementation = class {
constructor(info, objectPath) { constructor(info, objectPath) {
this._objectPath = objectPath; this._objectPath = objectPath;
@ -167,9 +169,13 @@ var DBusService = class {
this._service.register(); this._service.register();
let flags = Gio.BusNameOwnerFlags.ALLOW_REPLACEMENT;
if (programArgs.includes('--replace'))
flags |= Gio.BusNameOwnerFlags.REPLACE;
Gio.DBus.own_name(Gio.BusType.SESSION, Gio.DBus.own_name(Gio.BusType.SESSION,
this._name, this._name,
Gio.BusNameOwnerFlags.REPLACE, flags,
() => this._service.export(), () => this._service.export(),
null, null,
() => this._loop.quit()); () => this._loop.quit());