mirror of
https://github.com/EsotericSoftware/spine-runtimes.git
synced 2025-12-20 09:16:01 +08:00
[cpp] Copy EventQueueEntry instead of taking pointer to reallocatable instance. Closes #1827.
This commit is contained in:
parent
3af35555a9
commit
6d384cd75c
@ -265,23 +265,23 @@ void EventQueue::drain() {
|
||||
|
||||
// Don't cache _eventQueueEntries.size() so callbacks can queue their own events (eg, call setAnimation in AnimationState_Complete).
|
||||
for (size_t i = 0; i < _eventQueueEntries.size(); ++i) {
|
||||
EventQueueEntry *queueEntry = &_eventQueueEntries[i];
|
||||
TrackEntry *trackEntry = queueEntry->_entry;
|
||||
EventQueueEntry queueEntry = _eventQueueEntries[i];
|
||||
TrackEntry *trackEntry = queueEntry._entry;
|
||||
|
||||
switch (queueEntry->_type) {
|
||||
switch (queueEntry._type) {
|
||||
case EventType_Start:
|
||||
case EventType_Interrupt:
|
||||
case EventType_Complete:
|
||||
if (!trackEntry->_listenerObject) trackEntry->_listener(&state, queueEntry->_type, trackEntry, NULL);
|
||||
else trackEntry->_listenerObject->callback(&state, queueEntry->_type, trackEntry, NULL);
|
||||
if (!state._listenerObject) state._listener(&state, queueEntry->_type, trackEntry, NULL);
|
||||
else state._listenerObject->callback(&state, queueEntry->_type, trackEntry, NULL);
|
||||
if (!trackEntry->_listenerObject) trackEntry->_listener(&state, queueEntry._type, trackEntry, NULL);
|
||||
else trackEntry->_listenerObject->callback(&state, queueEntry._type, trackEntry, NULL);
|
||||
if (!state._listenerObject) state._listener(&state, queueEntry._type, trackEntry, NULL);
|
||||
else state._listenerObject->callback(&state, queueEntry._type, trackEntry, NULL);
|
||||
break;
|
||||
case EventType_End:
|
||||
if (!trackEntry->_listenerObject) trackEntry->_listener(&state, queueEntry->_type, trackEntry, NULL);
|
||||
else trackEntry->_listenerObject->callback(&state, queueEntry->_type, trackEntry, NULL);
|
||||
if (!state._listenerObject) state._listener(&state, queueEntry->_type, trackEntry, NULL);
|
||||
else state._listenerObject->callback(&state, queueEntry->_type, trackEntry, NULL);
|
||||
if (!trackEntry->_listenerObject) trackEntry->_listener(&state, queueEntry._type, trackEntry, NULL);
|
||||
else trackEntry->_listenerObject->callback(&state, queueEntry._type, trackEntry, NULL);
|
||||
if (!state._listenerObject) state._listener(&state, queueEntry._type, trackEntry, NULL);
|
||||
else state._listenerObject->callback(&state, queueEntry._type, trackEntry, NULL);
|
||||
/* Fall through. */
|
||||
case EventType_Dispose:
|
||||
if (!trackEntry->_listenerObject) trackEntry->_listener(&state, EventType_Dispose, trackEntry, NULL);
|
||||
@ -294,10 +294,10 @@ void EventQueue::drain() {
|
||||
break;
|
||||
case EventType_Event:
|
||||
if (!trackEntry->_listenerObject)
|
||||
trackEntry->_listener(&state, queueEntry->_type, trackEntry, queueEntry->_event);
|
||||
else trackEntry->_listenerObject->callback(&state, queueEntry->_type, trackEntry, queueEntry->_event);
|
||||
if (!state._listenerObject) state._listener(&state, queueEntry->_type, trackEntry, queueEntry->_event);
|
||||
else state._listenerObject->callback(&state, queueEntry->_type, trackEntry, queueEntry->_event);
|
||||
trackEntry->_listener(&state, queueEntry._type, trackEntry, queueEntry._event);
|
||||
else trackEntry->_listenerObject->callback(&state, queueEntry._type, trackEntry, queueEntry._event);
|
||||
if (!state._listenerObject) state._listener(&state, queueEntry._type, trackEntry, queueEntry._event);
|
||||
else state._listenerObject->callback(&state, queueEntry._type, trackEntry, queueEntry._event);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user