diff options
author | Masaru Ueki <masaru.ueki@itage.co.jp> | 2015-12-26 16:01:25 +0900 |
---|---|---|
committer | Masaru Ueki <masaru.ueki@itage.co.jp> | 2016-01-05 10:05:40 +0000 |
commit | e0a5f661e52fd09611f406ae82128b6ef81fe90e (patch) | |
tree | 435968454e360fe7e3bbc1b419893bba51530994 /src/corelib/statemachine | |
parent | 38c8af7231823429ca6cb9ea6418e2dcef3691a0 (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/statemachine')
-rw-r--r-- | src/corelib/statemachine/qstatemachine.cpp | 10 |
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); |