diff options
author | Filippos Karapetis | 2009-01-17 21:45:53 +0000 |
---|---|---|
committer | Filippos Karapetis | 2009-01-17 21:45:53 +0000 |
commit | 56f75b4c41b9fbd8736477ac28a6004e6b4a5014 (patch) | |
tree | 72a7397799c244feefdf5914f5778f613a0d3cf6 /engines/saga/events.cpp | |
parent | ba4b872a205528c4159a2d633e12595256eaa990 (diff) | |
download | scummvm-rg350-56f75b4c41b9fbd8736477ac28a6004e6b4a5014.tar.gz scummvm-rg350-56f75b4c41b9fbd8736477ac28a6004e6b4a5014.tar.bz2 scummvm-rg350-56f75b4c41b9fbd8736477ac28a6004e6b4a5014.zip |
Fixed bug #2057987 - "IHNM: Music stops in Ellen's chapter"
svn-id: r35884
Diffstat (limited to 'engines/saga/events.cpp')
-rw-r--r-- | engines/saga/events.cpp | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/engines/saga/events.cpp b/engines/saga/events.cpp index 0a3b7fe21b..482bb6d46e 100644 --- a/engines/saga/events.cpp +++ b/engines/saga/events.cpp @@ -625,7 +625,7 @@ int Events::initializeEvent(Event *event) { return SUCCESS; } -int Events::clearList() { +int Events::clearList(bool playQueuedMusic) { Event *chain_walk; Event *next_chain; Event *event_p; @@ -636,7 +636,16 @@ int Events::clearList() { // Only remove events not marked kEvFNoDestory (engine events) if (!(event_p->code & kEvFNoDestory)) { - // Remove any events chained off this one */ + // Handle queued music change events before deleting them + // This can happen in IHNM by music events set by sfQueueMusic() + // Fixes bug #2057987 - "IHNM: Music stops in Ellen's chapter" + if (playQueuedMusic && ((event_p->code & EVENT_MASK) == kMusicEvent)) { + _vm->_music->stop(); + if (event_p->op == kEventPlay) + _vm->_music->play(event_p->param, (MusicFlags)event_p->param2); + } + + // Remove any events chained off this one for (chain_walk = event_p->chain; chain_walk != NULL; chain_walk = next_chain) { next_chain = chain_walk->chain; free(chain_walk); |