on xenial help sign in
Selective run unity8 either as standalone or as a Mir server depending on the QPA plugin in use.
commitaab2c8a6b8508fb40d591291deaa5c25523ae01f authorRicardo Mendoza <ricardo.mendoza@canonical.com> dateThu 5 Sep 2013, 13:43 (13 years ago) parent897fb53
1 file changed+36−11
main.cpp+36−11
main.cpp+36−11
@@ -27,6 +27,10 @@
2727#include <QLibrary>
2828#include <libintl.h>
2929
30+// Unity-Mir
31+#include <unity-mir/qmirserver.h>
32+#include <unity-mir/qmirserverapplication.h>
33+
3034// local
3135#include "paths.h"
3236#include "MouseTouchAdaptor.h"
@@ -72,7 +76,7 @@ void resolveIconTheme() {
7276}
7377} // namespace {
7478
75−int main(int argc, char** argv)
79+int startShell(int argc, char** argv, ShellServerConfiguration* server)
7680{
7781 /* Workaround Qt platform integration plugin not advertising itself
7882 as having the following capabilities:
@@ -82,12 +86,19 @@ int main(int argc, char** argv)
8286 setenv("QML_FORCE_THREADED_RENDERER", "1", 1);
8387 setenv("QML_FIXED_ANIMATION_STEP", "1", 1);
8488
89+ const bool isUbuntuMirServer = qgetenv("QT_QPA_PLATFORM") == "ubuntumirserver";
90+
8591 QGuiApplication::setApplicationName("Unity 8");
86− QGuiApplication application(argc, argv);
92+ QGuiApplication *application;
93+ if (isUbuntuMirServer) {
94+ application = new QMirServerApplication(argc, (char**)argv, server);
95+ } else {
96+ application = new QGuiApplication(argc, (char**)argv);
97+ }
8798
8899 resolveIconTheme();
89100
90− QStringList args = application.arguments();
101+ QStringList args = application->arguments();
91102 ApplicationArguments qmlArgs(args);
92103
93104 // The testability driver is only loaded by QApplication but not by QGuiApplication.
@@ -124,7 +135,7 @@ int main(int argc, char** argv)
124135 if (args.contains(QLatin1String("-mousetouch"))) {
125136 mouseTouchAdaptor = new MouseTouchAdaptor;
126137 mouseTouchAdaptor->setTargetWindow(view);
127− application.installNativeEventFilter(mouseTouchAdaptor);
138+ application->installNativeEventFilter(mouseTouchAdaptor);
128139 }
129140
130141 QPlatformNativeInterface* nativeInterface = QGuiApplication::platformNativeInterface();
@@ -140,24 +151,38 @@ int main(int argc, char** argv)
140151 prependImportPaths(view->engine(), ::overrideImportPaths());
141152 appendImportPaths(view->engine(), ::fallbackImportPaths());
142153
143− if (qgetenv("QT_QPAPLATFORM") != "ubuntu") {
144− QString mirPath("/usr/lib/arm-linux-gnueabihf/qt5/imports/Unity-Mir");
145− qsetenv("QT_QPA_PLATFORM", "ubuntumirserver");
146− view->engine()->addImportPath(mirPath);
147− }
154+ QStringList importPath = view->engine()->importPathList().filter("qt5/imports");
155+ qDebug << "Import list is: " << importPath.first();
156+
157+ if (isUbuntuMirServer)
158+ importPath.first().append("/Unity-Mir");
159+ view->engine()->addImportPath(importPath.first());
160+ }
148161
149162 view->setSource(source);
150163 view->setColor("transparent");
151164
152− if (qgetenv("QT_QPA_PLATFORM") == "ubuntu" || args.contains(QLatin1String("-fullscreen"))) {
165+ if (qgetenv("QT_QPA_PLATFORM") == "ubuntu" || isUbuntuMirServer || args.contains(QLatin1String("-fullscreen"))) {
153166 view->showFullScreen();
154167 } else {
155168 view->show();
156169 }
157170
158− int result = application.exec();
171+ int result = application->exec();
159172
160173 delete mouseTouchAdaptor;
174+ delete application;
161175
162176 return result;
163177}
178+
179+int main(int argc, const char *argv[])
180+{
181+ if (qgetenv("QT_QPA_PLATFORM") != "ubuntu") {
182+ setenv("QT_QPA_PLATFORM", "ubuntumirserver", 1);
183+ QMirServer mirServer(argc, argv);
184+ return mirServer.runWithClient(startShell);
185+ } else {
186+ return startShell(argc, argv, nullptr);
187+ }
188+}