[Scummvm-cvs-logs] CVS: scummvm/scumm imuse.cpp,2.149,2.150 imuse_internal.h,2.44,2.45 imuse_player.cpp,2.60,2.61 instrument.h,2.19,2.20
Max Horn
fingolfin at users.sourceforge.net
Sat Oct 22 15:20:27 CEST 2005
- Previous message: [Scummvm-cvs-logs] CVS: scummvm/kyra kyra.cpp,1.61,1.62 screen.cpp,1.16,1.17
- Next message: [Scummvm-cvs-logs] CVS: scummvm/scumm intern.h,2.535,2.536 saveload.cpp,1.246,1.247 scumm.h,1.651,1.652 sprite_he.cpp,1.154,1.155 sprite_he.h,1.44,1.45
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Update of /cvsroot/scummvm/scummvm/scumm
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28426
Modified Files:
imuse.cpp imuse_internal.h imuse_player.cpp instrument.h
Log Message:
Switch iMuse to use Serialiazable, too (at least partially)
Index: imuse.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/imuse.cpp,v
retrieving revision 2.149
retrieving revision 2.150
diff -u -d -r2.149 -r2.150
--- imuse.cpp 21 Oct 2005 23:01:13 -0000 2.149
+++ imuse.cpp 22 Oct 2005 22:18:44 -0000 2.150
@@ -1549,29 +1549,6 @@
MKEND()
};
- const SaveLoadEntry partEntries[] = {
- MKREF(Part, _next, TYPE_PART, VER(8)),
- MKREF(Part, _prev, TYPE_PART, VER(8)),
- MKREF(Part, _player, TYPE_PLAYER, VER(8)),
- MKLINE(Part, _pitchbend, sleInt16, VER(8)),
- MKLINE(Part, _pitchbend_factor, sleUint8, VER(8)),
- MKLINE(Part, _transpose, sleInt8, VER(8)),
- MKLINE(Part, _vol, sleUint8, VER(8)),
- MKLINE(Part, _detune, sleInt8, VER(8)),
- MKLINE(Part, _pan, sleInt8, VER(8)),
- MKLINE(Part, _on, sleUint8, VER(8)),
- MKLINE(Part, _modwheel, sleUint8, VER(8)),
- MKLINE(Part, _pedal, sleUint8, VER(8)),
- MK_OBSOLETE(Part, _program, sleUint8, VER(8), VER(16)),
- MKLINE(Part, _pri, sleUint8, VER(8)),
- MKLINE(Part, _chan, sleUint8, VER(8)),
- MKLINE(Part, _effect_level, sleUint8, VER(8)),
- MKLINE(Part, _chorus, sleUint8, VER(8)),
- MKLINE(Part, _percussion, sleUint8, VER(8)),
- MKLINE(Part, _bank, sleUint8, VER(8)),
- MKEND()
- };
-
int i;
ser->_ref_me = this;
@@ -1584,8 +1561,11 @@
// The players
for (i = 0; i < ARRAYSIZE(_players); ++i)
- _players[i].save_or_load(ser);
- ser->saveLoadArrayOf(_parts, ARRAYSIZE(_parts), sizeof(_parts[0]), partEntries);
+ _players[i].saveLoadWithSerializer(ser);
+
+ // The parts
+ for (i = 0; i < ARRAYSIZE(_parts); ++i)
+ _parts[i].saveLoadWithSerializer(ser);
{ // Load/save the instrument definitions, which were revamped with V11.
Part *part = &_parts[0];
@@ -1600,6 +1580,8 @@
}
// VolumeFader has been replaced with the more generic ParameterFader.
+ // FIXME: replace this loop by something like
+ // if (loading && version <= 16) ser->skip(XXX bytes);
for (i = 0; i < 8; ++i)
ser->saveLoadEntries(0, volumeFaderEntries);
@@ -1618,9 +1600,6 @@
return 0;
}
-#undef MKLINE
-#undef MKEND
-
void IMuseInternal::fix_parts_after_load() {
Part *part;
int i;
@@ -1645,6 +1624,63 @@
}
}
+Part::Part() {
+ _slot = 0;
+ _next = 0;
+ _prev = 0;
+ _mc = 0;
+ _player = 0;
+ _pitchbend = 0;
+ _pitchbend_factor = 0;
+ _transpose = 0;
+ _transpose_eff = 0;
+ _vol = 0;
+ _vol_eff = 0;
+ _detune = 0;
+ _detune_eff = 0;
+ _pan = 0;
+ _pan_eff = 0;
+ _on = false;
+ _modwheel = 0;
+ _pedal = false;
+ _pri = 0;
+ _pri_eff = 0;
+ _chan = 0;
+ _effect_level = 0;
+ _chorus = 0;
+ _percussion = 0;
+ _bank = 0;
+ _unassigned_instrument = false;
+}
+
+void Part::saveLoadWithSerializer(Serializer *ser) {
+ // TODO: Get rid of MKREF usage!
+ const SaveLoadEntry partEntries[] = {
+ MKREF(Part, _next, TYPE_PART, VER(8)),
+ MKREF(Part, _prev, TYPE_PART, VER(8)),
+ MKREF(Part, _player, TYPE_PLAYER, VER(8)),
+ MKLINE(Part, _pitchbend, sleInt16, VER(8)),
+ MKLINE(Part, _pitchbend_factor, sleUint8, VER(8)),
+ MKLINE(Part, _transpose, sleInt8, VER(8)),
+ MKLINE(Part, _vol, sleUint8, VER(8)),
+ MKLINE(Part, _detune, sleInt8, VER(8)),
+ MKLINE(Part, _pan, sleInt8, VER(8)),
+ MKLINE(Part, _on, sleUint8, VER(8)),
+ MKLINE(Part, _modwheel, sleUint8, VER(8)),
+ MKLINE(Part, _pedal, sleUint8, VER(8)),
+ MK_OBSOLETE(Part, _program, sleUint8, VER(8), VER(16)),
+ MKLINE(Part, _pri, sleUint8, VER(8)),
+ MKLINE(Part, _chan, sleUint8, VER(8)),
+ MKLINE(Part, _effect_level, sleUint8, VER(8)),
+ MKLINE(Part, _chorus, sleUint8, VER(8)),
+ MKLINE(Part, _percussion, sleUint8, VER(8)),
+ MKLINE(Part, _bank, sleUint8, VER(8)),
+ MKEND()
+ };
+
+ ser->saveLoadEntries(this, partEntries);
+}
+
void Part::set_detune(int8 detune) {
_detune_eff = clamp((_detune = detune) + _player->getDetune(), -128, 127);
if (_mc)
@@ -1975,10 +2011,24 @@
//
////////////////////////////////////////////////////////////
-IMuse::IMuse(OSystem *system, IMuseInternal *target) : _system(system), _target(target) { _mutex = system->createMutex(); }
-IMuse::~IMuse() { if (_mutex) _system->deleteMutex(_mutex); if (_target) delete _target; }
-inline void IMuse::in() const { _system->lockMutex(_mutex); }
-inline void IMuse::out() const { _system->unlockMutex(_mutex); }
+IMuse::IMuse(OSystem *system, IMuseInternal *target)
+ : _system(system), _target(target) {
+ _mutex = system->createMutex();
+}
+
+IMuse::~IMuse() {
+ if (_mutex)
+ _system->deleteMutex(_mutex);
+ if (_target)
+ delete _target;
+}
+
+inline void IMuse::in() const {
+ _system->lockMutex(_mutex);
+}
+inline void IMuse::out() const {
+ _system->unlockMutex(_mutex);
+}
void IMuse::on_timer(MidiDriver *midi) { in(); _target->on_timer(midi); out(); }
void IMuse::pause(bool paused) { in(); _target->pause(paused); out(); }
Index: imuse_internal.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/imuse_internal.h,v
retrieving revision 2.44
retrieving revision 2.45
diff -u -d -r2.44 -r2.45
--- imuse_internal.h 18 Oct 2005 01:30:20 -0000 2.44
+++ imuse_internal.h 22 Oct 2005 22:18:44 -0000 2.45
@@ -24,6 +24,7 @@
#include "common/scummsys.h"
#include "scumm/instrument.h"
+#include "scumm/saveload.h"
#include "sound/mididrv.h"
class MidiParser;
@@ -245,7 +246,7 @@
void onTimer();
void removePart(Part *part);
int scan(uint totrack, uint tobeat, uint totick);
- int save_or_load(Serializer *ser);
+ void saveLoadWithSerializer(Serializer *ser);
int setHook(byte cls, byte value, byte chan) { return _hook.set(cls, value, chan); }
void setDetune(int detune);
bool setLoop(uint count, uint tobeat, uint totick, uint frombeat, uint fromtick);
@@ -271,7 +272,7 @@
MidiChannel *getPercussionChannel() { return 0; }
};
-struct Part {
+struct Part : public Serializable {
int _slot;
Part *_next, *_prev;
MidiChannel *_mc;
@@ -333,9 +334,9 @@
void sendPitchBend();
bool clearToTransmit();
- Part() {
- memset(this,0,sizeof(Part));
- }
+ Part();
+
+ void saveLoadWithSerializer(Serializer *ser);
};
// WARNING: This is the internal variant of the IMUSE class.
Index: imuse_player.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/imuse_player.cpp,v
retrieving revision 2.60
retrieving revision 2.61
diff -u -d -r2.60 -r2.61
--- imuse_player.cpp 20 Oct 2005 14:08:35 -0000 2.60
+++ imuse_player.cpp 22 Oct 2005 22:18:44 -0000 2.61
@@ -1176,7 +1176,8 @@
TYPE_PLAYER = 2
};
-int Player::save_or_load(Serializer *ser) {
+void Player::saveLoadWithSerializer(Serializer *ser) {
+ // TODO: Get rid of MKREF usage!
static const SaveLoadEntry playerEntries[] = {
MKREF(Player, _parts, TYPE_PART, VER(8)),
MKLINE(Player, _active, sleByte, VER(8)),
@@ -1232,7 +1233,7 @@
ser->saveLoadEntries(this, playerEntries);
ser->saveLoadArrayOf(_parameterFaders, ARRAYSIZE(_parameterFaders),
sizeof(ParameterFader), parameterFaderEntries);
- return 0;
+ return;
}
} // End of namespace Scumm
Index: instrument.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/instrument.h,v
retrieving revision 2.19
retrieving revision 2.20
diff -u -d -r2.19 -r2.20
--- instrument.h 18 Oct 2005 01:30:20 -0000 2.19
+++ instrument.h 22 Oct 2005 22:18:44 -0000 2.20
@@ -34,7 +34,7 @@
class InstrumentInternal {
public:
- virtual ~InstrumentInternal() {};
+ virtual ~InstrumentInternal() {}
virtual void saveOrLoad (Serializer *s) = 0;
virtual void send (MidiChannel *mc) = 0;
virtual void copy_to (Instrument *dest) = 0;
- Previous message: [Scummvm-cvs-logs] CVS: scummvm/kyra kyra.cpp,1.61,1.62 screen.cpp,1.16,1.17
- Next message: [Scummvm-cvs-logs] CVS: scummvm/scumm intern.h,2.535,2.536 saveload.cpp,1.246,1.247 scumm.h,1.651,1.652 sprite_he.cpp,1.154,1.155 sprite_he.h,1.44,1.45
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the Scummvm-git-logs
mailing list