From cb6c71ae1b7e2a19c876608e375f7ba7068977a3 Mon Sep 17 00:00:00 2001 From: David Edmundson Date: Mon, 17 Sep 2018 12:02:51 +0200 Subject: [PATCH] Keep org.freedesktop.FileManager1 registered across processes Summary: Currently if someone starts 2 dolphins, the second cannot register org.freedesktop.FileManager1 meaning and when the first dolphin quits, no-one has it registered. It doesn't cause a huge problem right now as we just dbus-activate a new one if needed, but it means the behaviour is a bit inconsistent and non-optimal. DBus has a system to queue names, meaning that as long as any dolphin is running this name is owned by one of the processes. Also this patch registers the service after the object which is technically safer. Test Plan: Ran d-feet Opened 2 dolphins, closed the first Service was still registered and the PID of the owning process changed. Reviewers: #dolphin, elvisangelaccio Reviewed By: #dolphin, elvisangelaccio Subscribers: elvisangelaccio, kfm-devel Tags: #dolphin Differential Revision: https://phabricator.kde.org/D15539 --- src/dbusinterface.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/dbusinterface.cpp b/src/dbusinterface.cpp index e5192f207..c780bc7cd 100644 --- a/src/dbusinterface.cpp +++ b/src/dbusinterface.cpp @@ -23,13 +23,15 @@ #include #include +#include DBusInterface::DBusInterface() : QObject() { - QDBusConnection::sessionBus().registerService(QStringLiteral("org.freedesktop.FileManager1")); QDBusConnection::sessionBus().registerObject(QStringLiteral("/org/freedesktop/FileManager1"), this, QDBusConnection::ExportScriptableContents | QDBusConnection::ExportAdaptors); + QDBusConnection::sessionBus().interface()->registerService(QStringLiteral("org.freedesktop.FileManager1"), + QDBusConnectionInterface::QueueService); } void DBusInterface::ShowFolders(const QStringList& uriList, const QString& startUpId) -- 2.47.3