aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Kampas <martin.kampas@jolla.com>2016-10-03 08:23:36 +0200
committerJuergen Bocklage-Ryannel <juergen.bocklage-ryannel@pelagicore.com>2016-10-07 07:01:53 +0000
commit7d748075a5dbf1fef4a8867820012229e94f1e44 (patch)
tree8d646b1bee4cbbc2de1e4b20b09e11e6a4888614
parent6acad43474d2010a724c59a9005a165ee70302cf (diff)
Bench: Add --noremote option
Change-Id: I460d3257780c0b3230d01c41971628edc6e0f399 Reviewed-by: Juergen Bocklage-Ryannel <juergen.bocklage-ryannel@pelagicore.com>
-rw-r--r--src/bench/main.cpp17
-rw-r--r--src/bench/options.cpp11
-rw-r--r--src/bench/options.h4
3 files changed, 30 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();
}
}
diff --git a/src/bench/options.cpp b/src/bench/options.cpp
index d885497..054022f 100644
--- a/src/bench/options.cpp
+++ b/src/bench/options.cpp
@@ -33,6 +33,7 @@
Options::Options(QObject *parent)
: QObject(parent)
+ , m_noRemote(false)
, m_remoteOnly(false)
, m_stayOnTop(false)
{
@@ -50,6 +51,16 @@ bool Options::hasNoninteractiveOptions() const
return false;
}
+bool Options::noRemote() const
+{
+ return m_noRemote;
+}
+
+void Options::setNoRemote(bool noRemote)
+{
+ m_noRemote = noRemote;
+}
+
bool Options::remoteOnly() const
{
return m_remoteOnly;
diff --git a/src/bench/options.h b/src/bench/options.h
index f62a93d..781abb1 100644
--- a/src/bench/options.h
+++ b/src/bench/options.h
@@ -49,6 +49,9 @@ public:
bool hasNoninteractiveOptions() const;
+ bool noRemote() const;
+ void setNoRemote(bool noRemote);
+
bool remoteOnly() const;
void setRemoteOnly(bool remoteOnly);
@@ -76,6 +79,7 @@ public:
void setHostsToRemove(const QStringList &hostNames);
private:
+ bool m_noRemote;
bool m_remoteOnly;
QString m_activeDocument;
QString m_workspace;