summaryrefslogtreecommitdiffstats
path: root/src/corelib
diff options
context:
space:
mode:
authorMasaru Ueki <masaru.ueki@itage.co.jp>2015-12-26 16:01:25 +0900
committerMasaru Ueki <masaru.ueki@itage.co.jp>2016-01-05 10:05:40 +0000
commite0a5f661e52fd09611f406ae82128b6ef81fe90e (patch)
tree435968454e360fe7e3bbc1b419893bba51530994 /src/corelib
parent38c8af7231823429ca6cb9ea6418e2dcef3691a0 (diff)
QStateMachine: fix ignore high-priority events.
When a high-priority event is posted in overrided 'QStateMachine::beginSelectTransitions', the event may be remained in event queue, and be not dispatched until another event posted. Change-Id: Ifda288d9c00ac7985e426b9cc02bda382ebaac35 Reviewed-by: Erik Verbruggen <erik.verbruggen@theqtcompany.com>
Diffstat (limited to 'src/corelib')
-rw-r--r--src/corelib/statemachine/qstatemachine.cpp10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/corelib/statemachine/qstatemachine.cpp b/src/corelib/statemachine/qstatemachine.cpp
index e5d019dc8b..ee522218ee 100644
--- a/src/corelib/statemachine/qstatemachine.cpp
+++ b/src/corelib/statemachine/qstatemachine.cpp
@@ -1946,12 +1946,14 @@ void QStateMachinePrivate::_q_process()
}
}
if (enabledTransitions.isEmpty()) {
- processing = false;
- stopProcessingReason = EventQueueEmpty;
- noMicrostep();
+ if (isInternalEventQueueEmpty()) {
+ processing = false;
+ stopProcessingReason = EventQueueEmpty;
+ noMicrostep();
#ifdef QSTATEMACHINE_DEBUG
- qDebug() << q << ": no transitions enabled";
+ qDebug() << q << ": no transitions enabled";
#endif
+ }
} else {
didChange = true;
q->beginMicrostep(e);