[Scummvm-git-logs] scummvm master -> c66e4154086812e30566f0ae828d54168b2ee57d
djsrv
dservilla at gmail.com
Fri Aug 6 15:11:59 UTC 2021
This automated email contains information about 2 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
bae70bf784 DIRECTOR: Fix where timeout events are handled
c66e415408 DIRECTOR: LINGO: Process timeout events in score scripts
Commit: bae70bf78428ee9ecc7645896df8ebf650357266
https://github.com/scummvm/scummvm/commit/bae70bf78428ee9ecc7645896df8ebf650357266
Author: djsrv (dservilla at gmail.com)
Date: 2021-08-06T11:09:50-04:00
Commit Message:
DIRECTOR: Fix where timeout events are handled
Changed paths:
engines/director/events.cpp
engines/director/score.cpp
diff --git a/engines/director/events.cpp b/engines/director/events.cpp
index cc9de68baa..0b33a1c6f5 100644
--- a/engines/director/events.cpp
+++ b/engines/director/events.cpp
@@ -43,24 +43,8 @@ bool DirectorEngine::processEvents(bool captureClick) {
debugC(3, kDebugEvents, "@@@@ Processing events");
debugC(3, kDebugEvents, "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n");
- Movie *currentMovie = g_director->getCurrentMovie();
- // update and register timeOut event
- if (currentMovie && getMacTicks() - currentMovie->_lastTimeOut >= currentMovie->_timeOutLength) {
- currentMovie->registerEvent(kEventTimeout);
- currentMovie->_lastTimeOut = getMacTicks();
- }
-
- if (currentMovie && currentMovie->_timeOutPlay && g_director->_playbackPaused)
- currentMovie->_lastTimeOut = getMacTicks();
-
Common::Event event;
while (g_system->getEventManager()->pollEvent(event)) {
- // update timeOut related values
- if (currentMovie && event.type == Common::EVENT_LBUTTONDOWN && g_director->getCurrentMovie()->_timeOutMouse)
- currentMovie->_lastTimeOut = getMacTicks();
- if (currentMovie && event.type == Common::EVENT_KEYDOWN && g_director->getCurrentMovie()->_timeOutKeyDown)
- currentMovie->_lastTimeOut = getMacTicks();
-
if (!_wm->processEvent(event)) {
// We only want to handle these events if the event
// wasn't handled by the window manager.
@@ -197,6 +181,8 @@ bool Movie::processEvent(Common::Event &event) {
_lastEventTime = g_director->getMacTicks();
_lastClickTime = _lastEventTime;
_lastClickPos = pos;
+ if (_timeOutMouse)
+ _lastTimeOut = _lastEventTime;
debugC(3, kDebugEvents, "event: Button Down @(%d, %d), movie '%s', sprite id: %d", pos.x, pos.y, _macName.c_str(), spriteId);
registerEvent(kEventMouseDown, spriteId);
@@ -247,6 +233,9 @@ bool Movie::processEvent(Common::Event &event) {
_lastEventTime = g_director->getMacTicks();
_lastKeyTime = _lastEventTime;
+ if (_timeOutKeyDown)
+ _lastTimeOut = _lastEventTime;
+
registerEvent(kEventKeyDown);
return true;
diff --git a/engines/director/score.cpp b/engines/director/score.cpp
index b274946bb0..39352966ae 100644
--- a/engines/director/score.cpp
+++ b/engines/director/score.cpp
@@ -427,9 +427,17 @@ void Score::update() {
// but this is incorrect. The frame script is executed first.
_movie->processEvent(kEventStepMovie);
}
+ if (_movie->_timeOutPlay)
+ _movie->_lastTimeOut = _vm->getMacTicks();
}
// TODO Director 6 - another order
+ // TODO: Figure out when exactly timeout events are processed
+ if (_vm->getMacTicks() - _movie->_lastTimeOut >= _movie->_timeOutLength) {
+ _movie->processEvent(kEventTimeout);
+ _movie->_lastTimeOut = _vm->getMacTicks();
+ }
+
// If we have more call stack frames than we started with, then we have a newly
// added frozen context. We'll deal with that later.
if (_window->_callstack.size() == initialCallStackSize) {
Commit: c66e4154086812e30566f0ae828d54168b2ee57d
https://github.com/scummvm/scummvm/commit/c66e4154086812e30566f0ae828d54168b2ee57d
Author: djsrv (dservilla at gmail.com)
Date: 2021-08-06T11:09:53-04:00
Commit Message:
DIRECTOR: LINGO: Process timeout events in score scripts
Changed paths:
engines/director/lingo/lingo-events.cpp
diff --git a/engines/director/lingo/lingo-events.cpp b/engines/director/lingo/lingo-events.cpp
index 8b6395808b..1bef9acf52 100644
--- a/engines/director/lingo/lingo-events.cpp
+++ b/engines/director/lingo/lingo-events.cpp
@@ -293,6 +293,7 @@ void Movie::registerEvent(LEvent event, int targetId) {
case kEventIdle:
case kEventEnterFrame:
case kEventExitFrame:
+ case kEventTimeout:
queueFrameEvent(event, eventId);
// fall through
@@ -300,7 +301,6 @@ void Movie::registerEvent(LEvent event, int targetId) {
case kEventStartMovie:
case kEventStepMovie:
case kEventStopMovie:
- case kEventTimeout:
case kEventPrepareMovie:
queueMovieEvent(event, eventId);
break;
More information about the Scummvm-git-logs
mailing list