]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Making sure that DBus objects are all created before the service
authorAlexander Saoutkin <a.saoutkin@gmail.com>
Mon, 2 Sep 2019 21:13:52 +0000 (23:13 +0200)
committerElvis Angelaccio <elvis.angelaccio@kde.org>
Mon, 2 Sep 2019 21:13:53 +0000 (23:13 +0200)
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

index 8981b54bce36013e77ef5744e6c235f512f81f52..a4685f2573a9e86f9d8c8633675234967e3e7714 100644 (file)
@@ -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<QUrl> 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;
 }