aboutsummaryrefslogtreecommitdiff
path: root/engines/scumm
diff options
context:
space:
mode:
authorTorbjörn Andersson2012-11-14 21:20:40 +0100
committerTorbjörn Andersson2012-11-14 21:20:40 +0100
commit0dcd4ba5a7bf40e03b11a475c1a6082002f486aa (patch)
treeaa70d8cecd24e11e0a8de8ebe50ee95cdb8cb9ac /engines/scumm
parentb02ecf7a8acc5218b187bf8141ab1aa5b588edfe (diff)
downloadscummvm-rg350-0dcd4ba5a7bf40e03b11a475c1a6082002f486aa.tar.gz
scummvm-rg350-0dcd4ba5a7bf40e03b11a475c1a6082002f486aa.tar.bz2
scummvm-rg350-0dcd4ba5a7bf40e03b11a475c1a6082002f486aa.zip
SCUMM: Move Mac player initialization to its own function
Apparently we cannot (portably) call virtual functions from the constructor, so initialization has been moved to a separate function.
Diffstat (limited to 'engines/scumm')
-rw-r--r--engines/scumm/player_mac.cpp5
-rw-r--r--engines/scumm/player_mac.h2
-rw-r--r--engines/scumm/scumm.cpp2
3 files changed, 7 insertions, 2 deletions
diff --git a/engines/scumm/player_mac.cpp b/engines/scumm/player_mac.cpp
index 6bc09d3107..58dab192be 100644
--- a/engines/scumm/player_mac.cpp
+++ b/engines/scumm/player_mac.cpp
@@ -36,11 +36,12 @@ Player_Mac::Player_Mac(ScummEngine *scumm, Audio::Mixer *mixer, int numberOfChan
_soundPlaying(-1),
_numberOfChannels(numberOfChannels),
_channelMask(channelMask) {
-
assert(scumm);
assert(mixer);
+}
- if (checkMusicAvailable()) {
+void Player_Mac::init() {
+ if (!checkMusicAvailable()) {
_channel = NULL;
return;
}
diff --git a/engines/scumm/player_mac.h b/engines/scumm/player_mac.h
index 505a94e03a..b850915bb2 100644
--- a/engines/scumm/player_mac.h
+++ b/engines/scumm/player_mac.h
@@ -46,6 +46,8 @@ public:
Player_Mac(ScummEngine *scumm, Audio::Mixer *mixer, int numberOfChannels, int channelMask);
virtual ~Player_Mac();
+ void init();
+
// MusicEngine API
virtual void setMusicVolume(int vol);
virtual void startSound(int sound);
diff --git a/engines/scumm/scumm.cpp b/engines/scumm/scumm.cpp
index 4ca4df44ab..888a7ff2f7 100644
--- a/engines/scumm/scumm.cpp
+++ b/engines/scumm/scumm.cpp
@@ -1823,8 +1823,10 @@ void ScummEngine::setupMusic(int midi) {
_musicEngine = new Player_V4A(this, _mixer);
} else if (_game.platform == Common::kPlatformMacintosh && _game.id == GID_LOOM) {
_musicEngine = new Player_V3M(this, _mixer);
+ ((Player_V3M *)_musicEngine)->init();
} else if (_game.platform == Common::kPlatformMacintosh && _game.id == GID_MONKEY) {
_musicEngine = new Player_V5M(this, _mixer);
+ ((Player_V5M *)_musicEngine)->init();
} else if (_game.id == GID_MANIAC && _game.version == 1) {
_musicEngine = new Player_V1(this, _mixer, MidiDriver::getMusicType(dev) != MT_PCSPK);
} else if (_game.version <= 2) {