summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/organizerproxy.cpp10
-rw-r--r--src/organizerproxy.h2
2 files changed, 9 insertions, 3 deletions
diff --git a/src/organizerproxy.cpp b/src/organizerproxy.cpp
index c2283acc..92f250ea 100644
--- a/src/organizerproxy.cpp
+++ b/src/organizerproxy.cpp
@@ -144,7 +144,7 @@ HANDLE OrganizerProxy::startApplication(
return runner.stealProcessHandle().release();
}
-bool OrganizerProxy::waitForApplication(HANDLE handle, LPDWORD exitCode) const
+bool OrganizerProxy::waitForApplication(HANDLE handle, bool refresh, LPDWORD exitCode) const
{
const auto pid = ::GetProcessId(handle);
@@ -154,8 +154,14 @@ bool OrganizerProxy::waitForApplication(HANDLE handle, LPDWORD exitCode) const
auto runner = m_Proxied->processRunner();
+ ProcessRunner::WaitFlags waitFlags = ProcessRunner::ForceWait;
+
+ if (refresh) {
+ waitFlags |= ProcessRunner::Refresh;
+ }
+
const auto r = runner
- .setWaitForCompletion(ProcessRunner::ForceWait, UILocker::OutputRequired)
+ .setWaitForCompletion(waitFlags, UILocker::OutputRequired)
.attachToProcess(handle);
if (exitCode) {
diff --git a/src/organizerproxy.h b/src/organizerproxy.h
index 8664c64f..3097adf0 100644
--- a/src/organizerproxy.h
+++ b/src/organizerproxy.h
@@ -52,7 +52,7 @@ public:
virtual MOBase::IProfile *profile() const override;
virtual HANDLE startApplication(const QString &executable, const QStringList &args = QStringList(), const QString &cwd = "",
const QString &profile = "", const QString &forcedCustomOverwrite = "", bool ignoreCustomOverwrite = false);
- virtual bool waitForApplication(HANDLE handle, LPDWORD exitCode = nullptr) const;
+ virtual bool waitForApplication(HANDLE handle, bool refresh = true, LPDWORD exitCode = nullptr) const;
virtual void refresh(bool saveChanges);
virtual bool onAboutToRun(const std::function<bool(const QString&)> &func) override;