[Scummvm-git-logs] scummvm master -> 5e5c32c2e29bc45a00181009deb91d770c5bd619
djsrv
dservilla at gmail.com
Fri Jul 16 17:02:25 UTC 2021
This automated email contains information about 3 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
8e5af4d295 DIRECTOR: Don't repeat sound if playback ends
3db07c71ab DIRECTOR: LINGO: Fix play movie
5e5c32c2e2 DIRECTOR: Return to previous movie when playback ends
Commit: 8e5af4d29534f027f297e6969dfc926981a379c1
https://github.com/scummvm/scummvm/commit/8e5af4d29534f027f297e6969dfc926981a379c1
Author: djsrv (dservilla at gmail.com)
Date: 2021-07-16T12:53:54-04:00
Commit Message:
DIRECTOR: Don't repeat sound if playback ends
We should only check if the last sound we saw in this channel is the
same, not if playback of the sound has ended. Otherwise, this can cause
a sound to incorrectly loop like in Meet Mediaband.
Changed paths:
engines/director/sound.cpp
diff --git a/engines/director/sound.cpp b/engines/director/sound.cpp
index 02bc45d223..f21d5cc0ee 100644
--- a/engines/director/sound.cpp
+++ b/engines/director/sound.cpp
@@ -104,7 +104,7 @@ void DirectorSound::playCastMember(CastMemberID memberID, uint8 soundChannel, bo
if (soundCast->_type != kCastSound) {
warning("DirectorSound::playCastMember: attempted to play a non-SoundCastMember %s", memberID.asString().c_str());
} else {
- if (!allowRepeat && lastPlayingCast(soundChannel) == memberID && isChannelActive(soundChannel))
+ if (!allowRepeat && lastPlayingCast(soundChannel) == memberID)
return;
bool looping = ((SoundCastMember *)soundCast)->_looping;
AudioDecoder *ad = ((SoundCastMember *)soundCast)->_audio;
Commit: 3db07c71ab3087c0774de1b44436d2e15168f161
https://github.com/scummvm/scummvm/commit/3db07c71ab3087c0774de1b44436d2e15168f161
Author: djsrv (dservilla at gmail.com)
Date: 2021-07-16T12:53:54-04:00
Commit Message:
DIRECTOR: LINGO: Fix play movie
play(0, "movie name") was being interpreted as play done.
We also didn't store the current movie's name if we're switching movies.
Changed paths:
engines/director/lingo/lingo-builtins.cpp
engines/director/lingo/lingo-funcs.cpp
diff --git a/engines/director/lingo/lingo-builtins.cpp b/engines/director/lingo/lingo-builtins.cpp
index dae8f301a3..e9e097ff1b 100644
--- a/engines/director/lingo/lingo-builtins.cpp
+++ b/engines/director/lingo/lingo-builtins.cpp
@@ -1268,7 +1268,7 @@ void LB::b_play(int nargs) {
// fall through
case 1:
frame = g_lingo->pop();
- if (!(frame.type == INT && frame.u.i == 0) && nargs == 1)
+ if (!(frame.type == INT && frame.u.i == 0 && nargs == 1))
break;
// fall through
case 0:
diff --git a/engines/director/lingo/lingo-funcs.cpp b/engines/director/lingo/lingo-funcs.cpp
index 1f61968308..d4a93d8134 100644
--- a/engines/director/lingo/lingo-funcs.cpp
+++ b/engines/director/lingo/lingo-funcs.cpp
@@ -294,6 +294,9 @@ void Lingo::func_play(Datum &frame, Datum &movie) {
return;
}
+ if (movie.type != VOID) {
+ ref.movie = unixToMacPath(_vm->getCurrentMovie()->_movieArchive->getPathName());
+ }
ref.frameI = _vm->getCurrentMovie()->getScore()->getCurrentFrame();
// if we are issuing play command from script channel script. then play done should return to next frame
Commit: 5e5c32c2e29bc45a00181009deb91d770c5bd619
https://github.com/scummvm/scummvm/commit/5e5c32c2e29bc45a00181009deb91d770c5bd619
Author: djsrv (dservilla at gmail.com)
Date: 2021-07-16T12:53:54-04:00
Commit Message:
DIRECTOR: Return to previous movie when playback ends
Changed paths:
engines/director/score.cpp
diff --git a/engines/director/score.cpp b/engines/director/score.cpp
index 09f409b87f..3e662d56ce 100644
--- a/engines/director/score.cpp
+++ b/engines/director/score.cpp
@@ -370,12 +370,26 @@ void Score::update() {
_vm->_skipFrameAdvance = false;
if (_currentFrame >= _frames.size()) {
- if (debugChannelSet(-1, kDebugNoLoop)) {
- _playState = kPlayStopped;
- return;
- }
+ Window *window = _vm->getCurrentWindow();
+ if (!window->_movieStack.empty()) {
+ MovieReference ref = window->_movieStack.back();
+ window->_movieStack.pop_back();
+ if (!ref.movie.empty()) {
+ _playState = kPlayStopped;
+ window->setNextMovie(ref.movie);
+ window->_nextMovie.frameI = ref.frameI;
+ return;
+ }
- _currentFrame = 1;
+ _currentFrame = ref.frameI;
+ } else {
+ if (debugChannelSet(-1, kDebugNoLoop)) {
+ _playState = kPlayStopped;
+ return;
+ }
+
+ _currentFrame = 1;
+ }
}
Common::SortedArray<Label *>::iterator i;
More information about the Scummvm-git-logs
mailing list