[Scummvm-cvs-logs] CVS: scummvm/scumm imuse.cpp,1.62,1.63
Jamieson Christian
jamieson630 at users.sourceforge.net
Mon Oct 21 00:37:42 CEST 2002
Update of /cvsroot/scummvm/scummvm/scumm
In directory usw-pr-cvs1:/tmp/cvs-serv8372/scummvm/scumm
Modified Files:
imuse.cpp
Log Message:
Changed IMuse from a proxy into a virtual base class
Index: imuse.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/imuse.cpp,v
retrieving revision 1.62
retrieving revision 1.63
diff -u -d -r1.62 -r1.63
--- imuse.cpp 16 Oct 2002 07:59:11 -0000 1.62
+++ imuse.cpp 21 Oct 2002 07:31:31 -0000 1.63
@@ -327,7 +327,7 @@
// WARNING: This is the internal variant of the IMUSE class.
// imuse.h contains a public version of the same class.
// the public version, only contains a set of methods.
-class IMuseInternal {
+class IMuseInternal : public IMuse {
friend struct Player;
private:
IMuseDriver * _driver;
@@ -418,6 +418,8 @@
int set_master_volume_intern(uint vol);
public:
+ ~IMuseInternal();
+
Part *parts_ptr() {
return _parts;
}
@@ -768,6 +770,10 @@
/**********************************************************************/
+IMuseInternal::~IMuseInternal() {
+ terminate();
+}
+
void IMuseInternal::lock()
{
_locked++;
@@ -888,9 +894,6 @@
return false;
}
}
- player = allocate_player(128);
- if (!player)
- return false;
// Make sure the requested sound is not already playing.
// FIXME: This should NEVER happen, but until we get all of the
@@ -4891,104 +4894,19 @@
-/*
- * Implementation of the dummy IMuse class that acts as a proxy for
- * our real IMuseInternal class. This way we reduce the compile time
- * and inter source dependencies.
- */
-IMuse::IMuse():_imuse(NULL)
-{
-}
-
-IMuse::~IMuse()
-{
- if (_imuse) {
- _imuse->terminate();
- delete _imuse;
- }
-}
-
-void IMuse::on_timer()
-{
- _imuse->on_timer();
-}
-
-void IMuse::pause(bool paused)
-{
- _imuse->pause(paused);
-}
-
-int IMuse::save_or_load(Serializer *ser, Scumm *scumm)
-{
- return _imuse->save_or_load(ser, scumm);
-}
-
-int IMuse::set_music_volume(uint vol)
-{
- return _imuse->set_music_volume(vol);
-}
-
-int IMuse::get_music_volume()
-{
- return _imuse->get_music_volume();
-}
-
-int IMuse::set_master_volume(uint vol)
-{
- return _imuse->set_master_volume(vol);
-}
-
-int IMuse::get_master_volume()
-{
- return _imuse->get_master_volume();
-}
-
-bool IMuse::start_sound(int sound)
-{
- return _imuse->start_sound(sound);
-}
-
-int IMuse::stop_sound(int sound)
-{
- return _imuse->stop_sound(sound);
-}
-
-int IMuse::stop_all_sounds()
-{
- return _imuse->stop_all_sounds();
-}
-
-int IMuse::get_sound_status(int sound)
-{
- return _imuse->get_sound_status(sound);
-}
-
-int32 IMuse::do_command(int a, int b, int c, int d, int e, int f, int g, int h)
-{
- return _imuse->do_command(a, b, c, d, e, f, g, h);
-}
-
-int IMuse::clear_queue()
+// The IMuse::create method provides a front-end factory
+// for creating IMuseInternal without exposing that class
+// to the client.
+IMuse *IMuse::create(OSystem *syst, MidiDriver *midi, SoundMixer *mixer)
{
- return _imuse->clear_queue();
+ return (IMuse *) IMuseInternal::create (syst, midi, mixer);
}
-void IMuse::setBase(byte **base)
-{
- _imuse->setBase(base);
-}
-uint32 IMuse::property(int prop, uint32 value)
-{
- return _imuse->property(prop, value);
-}
-IMuse *IMuse::create(OSystem *syst, MidiDriver *midi, SoundMixer *mixer)
-{
- IMuse *i = new IMuse;
- i->_imuse = IMuseInternal::create(syst, midi, mixer);
- return i;
-}
+/*
+ * IMUSE Digital Implementation, for SCUMM v7 and higher.
+ */
static void imus_digital_handler(void * engine) {
g_scumm->_imuseDigital->handler();
@@ -5518,7 +5436,7 @@
if (_channel[l]._initialized == false) {
_scumm->_mixer->playStream(NULL, l, buf, mixer_size,
- _channel[l]._freq, _channel[l]._mixerFlags, 3, 2000000);
+ _channel[l]._freq, _channel[l]._mixerFlags, 3, 2000000);
_channel[l]._initialized = true;
} else {
_scumm->_mixer->append(l, buf, mixer_size, _channel[l]._freq, _channel[l]._mixerFlags);
More information about the Scummvm-git-logs
mailing list