From 56b3059f774ae5917185d91a380c9f0a95e7584f Mon Sep 17 00:00:00 2001 From: Alexander Saoutkin Date: Mon, 2 Sep 2019 23:13:52 +0200 Subject: [PATCH] Making sure that DBus objects are all created before the service Summary: Currently the DBus service is created before the MainWindow DBus object is created. This can cause hangs if another service makes calls to a a method in an object that's not been initialised, when the service is already published. This patch defers the creation of the service until all DBus objects are created. Test Plan: Tested in KDevelop. Have "open new folders in tabs" feature enabled. Open several folders with Dolphin at once. Before this patch there would be noticeable hanging. With this patch all tabs instantly open with no hanging. Reviewers: elvisangelaccio, ngraham Reviewed By: elvisangelaccio Subscribers: kfm-devel Tags: #dolphin Differential Revision: https://phabricator.kde.org/D23672 --- src/main.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 8981b54bce..a4685f2573 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -116,9 +116,6 @@ extern "C" Q_DECL_EXPORT int kdemain(int argc, char **argv) KAboutData::setApplicationData(aboutData); - KDBusService dolphinDBusService; - DBusInterface interface; - QCommandLineParser parser; aboutData.setupCommandLine(&parser); @@ -139,6 +136,8 @@ extern "C" Q_DECL_EXPORT int kdemain(int argc, char **argv) QList urls = Dolphin::validateUris(args); if (parser.isSet(QStringLiteral("daemon"))) { + KDBusService dolphinDBusService; + DBusInterface interface; return app.exec(); } @@ -178,5 +177,8 @@ extern "C" Q_DECL_EXPORT int kdemain(int argc, char **argv) } } + KDBusService dolphinDBusService; + DBusInterface interface; + return app.exec(); // krazy:exclude=crash; }