aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJarek Kobus <[email protected]>2022-04-22 12:53:19 +0200
committerJarek Kobus <[email protected]>2022-04-22 12:43:19 +0000
commit2533a4cfd6f55f9b68ccab35ca7bf51b3b51b505 (patch)
treeadbf3b451e215bc101de7438ca82bebbf415e79c
parent6599a6773701ae63886e62414dfba6b0b42f60a9 (diff)
ProcessLauncher: Flush Done signal when waiting for started
After changing the protocol so that error signal is no more sent we need to flush the buffered Done signal when awaiting for Started signal. Change-Id: I274bfa375db05627348684f11be535d79c62b42b Reviewed-by: Christian Kandeler <[email protected]>
-rw-r--r--src/libs/utils/launchersocket.cpp12
1 files changed, 7 insertions, 5 deletions
diff --git a/src/libs/utils/launchersocket.cpp b/src/libs/utils/launchersocket.cpp
index 55e2ee3394c..ff262b1d468 100644
--- a/src/libs/utils/launchersocket.cpp
+++ b/src/libs/utils/launchersocket.cpp
@@ -116,7 +116,6 @@ bool CallerHandle::flushFor(SignalType signalType)
{
QTC_ASSERT(isCalledFromCallersThread(), return {});
QList<LauncherSignal *> oldSignals;
- QList<SignalType> flushedSignals;
{
QMutexLocker locker(&m_mutex);
const QList<SignalType> storedSignals =
@@ -124,18 +123,21 @@ bool CallerHandle::flushFor(SignalType signalType)
return launcherSignal->signalType();
});
- // If we are flushing for Started, flush Started only
- const bool flushAll = (signalType != SignalType::Started);
+ // If we are flushing for ReadyRead or Done - flush all.
+ // If we are flushing for Started:
+ // - if Started was buffered - flush Started only.
+ // - otherwise if Done signal was buffered - flush all.
+ const bool flushAll = (signalType != SignalType::Started)
+ || (!storedSignals.contains(SignalType::Started)
+ && storedSignals.contains(SignalType::Done));
if (flushAll) {
oldSignals = m_signals;
m_signals = {};
- flushedSignals = storedSignals;
} else {
auto matchingIndex = storedSignals.lastIndexOf(signalType);
if (matchingIndex >= 0) {
oldSignals = m_signals.mid(0, matchingIndex + 1);
m_signals = m_signals.mid(matchingIndex + 1);
- flushedSignals = storedSignals.mid(0, matchingIndex + 1);
}
}
}