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
This commit is contained in:
David Edmundson 2018-09-17 12:02:51 +02:00
parent b98948ae1e
commit cb6c71ae1b

View file

@ -23,13 +23,15 @@
#include <KPropertiesDialog>
#include <QDBusConnection>
#include <QDBusConnectionInterface>
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)