fixed inconsistent global animation state after event actions
authorHolger Schemel <info@artsoft.org>
Thu, 21 Mar 2019 23:05:57 +0000 (00:05 +0100)
committerHolger Schemel <info@artsoft.org>
Thu, 21 Mar 2019 23:05:57 +0000 (00:05 +0100)
commit97aa8b2f63cbd4c210d20264f57bae3e342b14d4
tree7caf7647af9466f718a1fd0a9d03e4c2fe20f881
parentda0b032a906bd0fdadf798802c04c9084bee074c
fixed inconsistent global animation state after event actions

When executing event actions for global animations, these actions may
cause a screen change, which itself may change the state of global
animations (especially stopping animations that were running on the
previous screen).

When executing event actions directly from the functions that handle
global animations, these functions may continue changing the state of
the global animation that caused the event action, even though this
animation was already stopped due to a screen change, which may cause
this animation to be set back to "active" ("running") state, so that
it continues being displayed on the new screen, even though it was
never defined for it.

This problem was fixed by executing all event actions independently
from the animation handling functions, by inserting new user events
into the program's standard event queue, to handle animation event
actions in a separate, independent step after all animations were
handled.
src/anim.c
src/events.c
src/events.h