diff options
author | Torbjörn Andersson | 2012-11-14 21:20:40 +0100 |
---|---|---|
committer | Torbjörn Andersson | 2012-11-14 21:20:40 +0100 |
commit | 0dcd4ba5a7bf40e03b11a475c1a6082002f486aa (patch) | |
tree | aa70d8cecd24e11e0a8de8ebe50ee95cdb8cb9ac | |
parent | b02ecf7a8acc5218b187bf8141ab1aa5b588edfe (diff) | |
download | scummvm-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.
-rw-r--r-- | engines/scumm/player_mac.cpp | 5 | ||||
-rw-r--r-- | engines/scumm/player_mac.h | 2 | ||||
-rw-r--r-- | engines/scumm/scumm.cpp | 2 |
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) { |