summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/libs/utils/qtcprocess.cpp18
-rw-r--r--src/libs/utils/qtcprocess.h5
-rw-r--r--src/plugins/android/androidmanager.cpp3
3 files changed, 19 insertions, 7 deletions
diff --git a/src/libs/utils/qtcprocess.cpp b/src/libs/utils/qtcprocess.cpp
index 7dad833392..3992a658ee 100644
--- a/src/libs/utils/qtcprocess.cpp
+++ b/src/libs/utils/qtcprocess.cpp
@@ -112,6 +112,7 @@ public:
CommandLine m_commandLine;
Environment m_environment;
+ QByteArray m_writeData;
bool m_haveEnv = false;
bool m_useCtrlCStub = false;
bool m_lowPriority = false;
@@ -228,6 +229,8 @@ void QtcProcess::setUseCtrlCStub(bool enabled)
void QtcProcess::start()
{
+ QTC_CHECK(d->m_writeData.isEmpty()); // FIXME: Use it.
+
if (d->m_commandLine.executable().needsDevice()) {
QTC_ASSERT(s_remoteRunProcessHook, return);
s_remoteRunProcessHook(*this);
@@ -780,6 +783,11 @@ void QtcProcess::setExitCodeInterpreter(const ExitCodeInterpreter &interpreter)
d->m_exitCodeInterpreter = interpreter;
}
+void QtcProcess::setWriteData(const QByteArray &writeData)
+{
+ d->m_writeData = writeData;
+}
+
#ifdef QT_GUI_LIB
static bool isGuiThread()
{
@@ -787,7 +795,7 @@ static bool isGuiThread()
}
#endif
-void QtcProcess::run(const CommandLine &cmd, const QByteArray &writeData)
+void QtcProcess::run(const CommandLine &cmd)
{
// FIXME: Implement properly
if (cmd.executable().needsDevice()) {
@@ -815,13 +823,13 @@ void QtcProcess::run(const CommandLine &cmd, const QByteArray &writeData)
// quoting of arguments than using QProcess::setArguments() beforehand and calling start()
// only with the OpenMode
setCommand(cmd);
- if (!writeData.isEmpty()) {
- connect(this, &QProcess::started, this, [this, writeData] {
- write(writeData);
+ if (!d->m_writeData.isEmpty()) {
+ connect(this, &QProcess::started, this, [this] {
+ write(d->m_writeData);
closeWriteChannel();
});
}
- setOpenMode(writeData.isEmpty() ? QIODevice::ReadOnly : QIODevice::ReadWrite);
+ setOpenMode(d->m_writeData.isEmpty() ? QIODevice::ReadOnly : QIODevice::ReadWrite);
start();
// On Windows, start failure is triggered immediately if the
diff --git a/src/libs/utils/qtcprocess.h b/src/libs/utils/qtcprocess.h
index a7a12ce896..33c8999827 100644
--- a/src/libs/utils/qtcprocess.h
+++ b/src/libs/utils/qtcprocess.h
@@ -86,8 +86,11 @@ public:
void setTimeOutMessageBoxEnabled(bool);
void setExitCodeInterpreter(const std::function<QtcProcess::Result(int)> &interpreter);
+ // FIXME: This is currently only used in run(), not in start()
+ void setWriteData(const QByteArray &writeData);
+
// Starts a nested event loop and runs the command
- void run(const CommandLine &cmd, const QByteArray &writeData = {});
+ void run(const CommandLine &cmd);
// Starts the command blocking the UI fully
void runBlocking(const CommandLine &cmd);
diff --git a/src/plugins/android/androidmanager.cpp b/src/plugins/android/androidmanager.cpp
index 8080c7f680..967432341c 100644
--- a/src/plugins/android/androidmanager.cpp
+++ b/src/plugins/android/androidmanager.cpp
@@ -721,8 +721,9 @@ SdkToolResult AndroidManager::runCommand(const CommandLine &command,
Android::SdkToolResult cmdResult;
SynchronousProcess cmdProc;
cmdProc.setTimeoutS(timeoutS);
+ cmdProc.setWriteData(writeData);
qCDebug(androidManagerLog) << "Running command (sync):" << command.toUserOutput();
- cmdProc.run(command, writeData);
+ cmdProc.run(command);
cmdResult.m_stdOut = cmdProc.stdOut().trimmed();
cmdResult.m_stdErr = cmdProc.stdErr().trimmed();
cmdResult.m_success = cmdProc.result() == QtcProcess::Finished;