diff options
author | Ulf Hermann <ulf.hermann@theqtcompany.com> | 2015-05-21 15:39:28 +0200 |
---|---|---|
committer | Ulf Hermann <ulf.hermann@theqtcompany.com> | 2015-06-06 15:20:33 +0000 |
commit | c402f593595f2705f8d0f73a13a08cb8bbda9421 (patch) | |
tree | e2980f3b318b51a98ee0758b2ad1f8383f67fc82 /tools | |
parent | 8555cdecd66444b07ab09b1644cb42fcb572dd76 (diff) |
qmlprofiler: Only accept commands if we ask for them
This way we can shut down the input thread after the last command and we
cannot get commands before we can process them.
Change-Id: Ie1583a338da9c9df0e07c9e09ce185857c5ea66d
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
Diffstat (limited to 'tools')
-rw-r--r-- | tools/qmlprofiler/commandlistener.cpp | 21 | ||||
-rw-r--r-- | tools/qmlprofiler/commandlistener.h | 13 | ||||
-rw-r--r-- | tools/qmlprofiler/constants.h | 4 | ||||
-rw-r--r-- | tools/qmlprofiler/main.cpp | 8 | ||||
-rw-r--r-- | tools/qmlprofiler/qmlprofilerapplication.cpp | 12 | ||||
-rw-r--r-- | tools/qmlprofiler/qmlprofilerapplication.h | 3 |
6 files changed, 20 insertions, 41 deletions
diff --git a/tools/qmlprofiler/commandlistener.cpp b/tools/qmlprofiler/commandlistener.cpp index 1d538d8a3d..369d095725 100644 --- a/tools/qmlprofiler/commandlistener.cpp +++ b/tools/qmlprofiler/commandlistener.cpp @@ -35,24 +35,7 @@ #include "constants.h" #include <QtCore/QTextStream> -CommandListener::CommandListener(QObject *parent) - : QThread(parent) - , m_stopRequested(false) +void CommandListener::readCommand() { -} - -void CommandListener::run() -{ - QString line; - QTextStream in(stdin, QIODevice::ReadOnly); - do { - line = in.readLine(); - line = line.trimmed(); - if (!line.isEmpty()) { - emit command(line); - if (line == QLatin1String(Constants::CMD_QUIT) - || line == QLatin1String(Constants::CMD_QUIT2)) - return; - } - } while (!m_stopRequested && !line.isNull()); + emit command(QTextStream(stdin).readLine()); } diff --git a/tools/qmlprofiler/commandlistener.h b/tools/qmlprofiler/commandlistener.h index 7d4d43d727..e74d5323c8 100644 --- a/tools/qmlprofiler/commandlistener.h +++ b/tools/qmlprofiler/commandlistener.h @@ -36,20 +36,13 @@ #include <QtCore/QThread> -class CommandListener : public QThread -{ +class CommandListener : public QObject { Q_OBJECT -public: - CommandListener(QObject *parent = 0); +public slots: + void readCommand(); - void run(); - - void requestStop() { m_stopRequested = true; } signals: void command(const QString &command); - -private: - bool m_stopRequested; }; #endif // COMMANDLISTENER_H diff --git a/tools/qmlprofiler/constants.h b/tools/qmlprofiler/constants.h index 4e5aac7e32..b925ba00e8 100644 --- a/tools/qmlprofiler/constants.h +++ b/tools/qmlprofiler/constants.h @@ -36,10 +36,6 @@ namespace Constants { -const char CMD_HELP[] ="help"; -const char CMD_HELP2[] = "h"; -const char CMD_HELP3[] = "?"; - const char CMD_RECORD[] ="record"; const char CMD_RECORD2[] ="r"; diff --git a/tools/qmlprofiler/main.cpp b/tools/qmlprofiler/main.cpp index 2a85b72f1e..5496072eb2 100644 --- a/tools/qmlprofiler/main.cpp +++ b/tools/qmlprofiler/main.cpp @@ -41,12 +41,16 @@ int main(int argc, char *argv[]) app.parseArguments(); if (app.isInteractive()) { + QThread listenerThread; CommandListener listener; + listener.moveToThread(&listenerThread); QObject::connect(&listener, SIGNAL(command(QString)), &app, SLOT(userCommand(QString))); - listener.start(); + QObject::connect(&app, SIGNAL(readyForCommand()), &listener, SLOT(readCommand())); + listenerThread.start(); int exitValue = app.exec(); + listenerThread.quit(); // wait for listener to exit - listener.wait(); + listenerThread.wait(); return exitValue; } else { return app.exec(); diff --git a/tools/qmlprofiler/qmlprofilerapplication.cpp b/tools/qmlprofiler/qmlprofilerapplication.cpp index c2d3375d10..23483b2d16 100644 --- a/tools/qmlprofiler/qmlprofilerapplication.cpp +++ b/tools/qmlprofiler/qmlprofilerapplication.cpp @@ -249,14 +249,10 @@ QString QmlProfilerApplication::traceFileName() const void QmlProfilerApplication::userCommand(const QString &command) { QString cmd = command.trimmed(); - if (cmd == Constants::CMD_HELP - || cmd == Constants::CMD_HELP2 - || cmd == Constants::CMD_HELP3) { - printCommands(); - } else if (cmd == Constants::CMD_RECORD - || cmd == Constants::CMD_RECORD2) { + if (cmd == Constants::CMD_RECORD || cmd == Constants::CMD_RECORD2) { m_qmlProfilerClient.sendRecordingStatus(!m_recording); m_v8profilerClient.sendRecordingStatus(!m_recording); + emit readyForCommand(); } else if (cmd == Constants::CMD_QUIT || cmd == Constants::CMD_QUIT2) { print(QLatin1String("Quit")); @@ -267,6 +263,9 @@ void QmlProfilerApplication::userCommand(const QString &command) } else { quit(); } + } else { + printCommands(); + emit readyForCommand(); } } @@ -300,6 +299,7 @@ void QmlProfilerApplication::run() } m_connectTimer.start(); + emit readyForCommand(); } void QmlProfilerApplication::tryToConnect() diff --git a/tools/qmlprofiler/qmlprofilerapplication.h b/tools/qmlprofiler/qmlprofilerapplication.h index d4af3b0c37..8d2cbffe7b 100644 --- a/tools/qmlprofiler/qmlprofilerapplication.h +++ b/tools/qmlprofiler/qmlprofilerapplication.h @@ -52,6 +52,9 @@ public: int exec(); bool isInteractive() const; +signals: + void readyForCommand(); + public slots: void userCommand(const QString &command); void notifyTraceStarted(); |