aboutsummaryrefslogtreecommitdiffstats
path: root/src/bench/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/bench/main.cpp')
-rw-r--r--src/bench/main.cpp17
1 files changed, 15 insertions, 2 deletions
diff --git a/src/bench/main.cpp b/src/bench/main.cpp
index 438b438..651b83b 100644
--- a/src/bench/main.cpp
+++ b/src/bench/main.cpp
@@ -86,7 +86,10 @@ Application *Application::create(int &argc, char **argv)
setOrganizationDomain(QLatin1String(QMLLIVE_ORGANIZATION_DOMAIN));
setOrganizationName(QLatin1String(QMLLIVE_ORGANIZATION_NAME));
- if (isMaster())
+ // Workaround: Cannot use QCoreApplication::arguments before app is instantiated
+ const bool hasNoRemoteOption = argc >= 2 && QString::fromLocal8Bit(argv[1]) == QLatin1String("--noremote");
+
+ if (hasNoRemoteOption || isMaster())
return new MasterApplication(argc, argv);
else
return new SlaveApplication(argc, argv);
@@ -187,12 +190,21 @@ void Application::parseArguments(const QStringList &arguments, Options *options)
parser.addOption(addHostOption);
QCommandLineOption rmHostOption("rmhost", "remove remote host configuration and exit", "name");
parser.addOption(rmHostOption);
+ QCommandLineOption noRemoteOption("noremote", "do not try to talk to a running bench, do not listen for remote "
+ "connections. It MUST BE the VERY FIRST argument on command line.");
+ parser.addOption(noRemoteOption);
QCommandLineOption remoteOnlyOption("remoteonly", "talk to a running bench, do nothing if none is running.");
parser.addOption(remoteOnlyOption);
parser.process(arguments);
+ options->setNoRemote(parser.isSet(noRemoteOption));
options->setRemoteOnly(parser.isSet(remoteOnlyOption));
+ if (options->noRemote() && options->remoteOnly()) {
+ qWarning() << "Options --noremote and --remoteonly cannot be used together";
+ parser.showHelp(-1);
+ }
+
options->setPluginPath(parser.value(pluginPathOption));
options->setImportPaths(parser.values(importPathOption));
options->setStayOnTop(parser.isSet(stayOnTopOption));
@@ -284,7 +296,8 @@ MasterApplication::MasterApplication(int &argc, char **argv)
} else {
m_window->init();
m_window->show();
- listenForArguments();
+ if (!options.noRemote())
+ listenForArguments();
}
}