diff --git a/client/CPlayerInterface.cpp b/client/CPlayerInterface.cpp index 8924e8e5e..01aa76b06 100644 --- a/client/CPlayerInterface.cpp +++ b/client/CPlayerInterface.cpp @@ -2029,13 +2029,15 @@ bool CPlayerInterface::capturedAllEvents() if (duringMovement) { //just inform that we are capturing events. they will be processed by heroMoved() in client thread. - return true; - } - - if (ignoreEvents) - { - boost::unique_lock un(eventsM); - while(!SDLEventsQueue.empty()) + return true; + } + + bool needToLockAdventureMap = adventureInt->active && CGI->mh->hasOngoingAnimations(); + + if (ignoreEvents || needToLockAdventureMap) + { + boost::unique_lock un(eventsM); + while(!SDLEventsQueue.empty()) { SDLEventsQueue.pop(); }