From fe33e912c61c8aef49758204578a9194e7e87856 Mon Sep 17 00:00:00 2001 From: badlogic Date: Thu, 15 Dec 2016 13:32:44 +0100 Subject: [PATCH] [c] Fix for clearTracks, see #805 --- spine-c/spine-c/src/spine/AnimationState.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/spine-c/spine-c/src/spine/AnimationState.c b/spine-c/spine-c/src/spine/AnimationState.c index 578fe718f..5a0a4a1ff 100644 --- a/spine-c/spine-c/src/spine/AnimationState.c +++ b/spine-c/spine-c/src/spine/AnimationState.c @@ -534,12 +534,13 @@ void _spAnimationState_queueEvents (spAnimationState* self, spTrackEntry* entry, void spAnimationState_clearTracks (spAnimationState* self) { _spAnimationState* internal = SUB_CAST(_spAnimationState, self); - int i, n; + int i, n, oldDrainDisabled; + oldDrainDisabled = internal->queue->drainDisabled; internal->queue->drainDisabled = 1; for (i = 0, n = self->tracksCount; i < n; i++) spAnimationState_clearTrack(self, i); self->tracksCount = 0; - internal->queue->drainDisabled = 0; + internal->queue->drainDisabled = oldDrainDisabled; _spEventQueue_drain(internal->queue); } @@ -674,15 +675,16 @@ spTrackEntry* spAnimationState_addEmptyAnimation(spAnimationState* self, int tra } void spAnimationState_setEmptyAnimations(spAnimationState* self, float mixDuration) { - int i, n; + int i, n, oldDrainDisabled; spTrackEntry* current; _spAnimationState* internal = SUB_CAST(_spAnimationState, self); + oldDrainDisabled = internal->queue->drainDisabled; internal->queue->drainDisabled = 1; for (i = 0, n = self->tracksCount; i < n; i++) { current = self->tracks[i]; if (current) spAnimationState_setEmptyAnimation(self, current->trackIndex, mixDuration); } - internal->queue->drainDisabled = 0; + internal->queue->drainDisabled = oldDrainDisabled; _spEventQueue_drain(internal->queue); }