aboutsummaryrefslogtreecommitdiff
path: root/engines/sci
diff options
context:
space:
mode:
authorMax Horn2009-06-07 17:07:25 +0000
committerMax Horn2009-06-07 17:07:25 +0000
commit21d948ec05e5bc09106edcf259bf839e3e8be964 (patch)
treec28a9ed03afe4fe0050e3cc77b0c306d4d24c575 /engines/sci
parent62f596821e7c1e8c696cb3e4190822b33aa1a98c (diff)
downloadscummvm-rg350-21d948ec05e5bc09106edcf259bf839e3e8be964.tar.gz
scummvm-rg350-21d948ec05e5bc09106edcf259bf839e3e8be964.tar.bz2
scummvm-rg350-21d948ec05e5bc09106edcf259bf839e3e8be964.zip
SCI: Simplified SongLibrary code a bit
svn-id: r41345
Diffstat (limited to 'engines/sci')
-rw-r--r--engines/sci/console.cpp2
-rw-r--r--engines/sci/engine/savegame.cpp11
-rw-r--r--engines/sci/sfx/core.cpp2
-rw-r--r--engines/sci/sfx/songlib.cpp34
-rw-r--r--engines/sci/sfx/songlib.h9
5 files changed, 18 insertions, 40 deletions
diff --git a/engines/sci/console.cpp b/engines/sci/console.cpp
index e91c1176ca..ed132a3930 100644
--- a/engines/sci/console.cpp
+++ b/engines/sci/console.cpp
@@ -1530,7 +1530,7 @@ bool Console::cmdShowMap(int argc, const char **argv) {
bool Console::cmdSongLib(int argc, const char **argv) {
DebugPrintf("Song library:\n");
- Song *seeker = *(g_EngineState->_sound._songlib._lib);
+ Song *seeker = g_EngineState->_sound._songlib._lib;
do {
DebugPrintf(" %p", (void *)seeker);
diff --git a/engines/sci/engine/savegame.cpp b/engines/sci/engine/savegame.cpp
index b93a4e652a..8e3b8a5304 100644
--- a/engines/sci/engine/savegame.cpp
+++ b/engines/sci/engine/savegame.cpp
@@ -408,14 +408,14 @@ static void sync_songlib_t(Common::Serializer &s, SongLibrary &obj) {
s.syncAsUint32LE(songcount);
if (s.isLoading()) {
- obj.initSounds();
+ obj._lib = 0;
while (songcount--) {
Song *newsong = (Song *)calloc(1, sizeof(Song));
sync_song_t(s, *newsong);
obj.addSong(newsong);
}
} else {
- Song *seeker = *(obj._lib);
+ Song *seeker = obj._lib;
while (seeker) {
seeker->_restoreTime = seeker->_it->getTimepos();
sync_song_t(s, *seeker);
@@ -695,12 +695,7 @@ static void reconstruct_sounds(EngineState *s) {
Song *seeker;
SongIteratorType it_type = s->resmgr->_sciVersion >= SCI_VERSION_01 ? SCI_SONG_ITERATOR_TYPE_SCI1 : SCI_SONG_ITERATOR_TYPE_SCI0;
- if (s->_sound._songlib._lib)
- seeker = *(s->_sound._songlib._lib);
- else {
- s->_sound._songlib.initSounds();
- seeker = NULL;
- }
+ seeker = s->_sound._songlib._lib;
while (seeker) {
SongIterator *base, *ff;
diff --git a/engines/sci/sfx/core.cpp b/engines/sci/sfx/core.cpp
index 572da29c0d..e37007bf8e 100644
--- a/engines/sci/sfx/core.cpp
+++ b/engines/sci/sfx/core.cpp
@@ -638,7 +638,7 @@ static int sfx_play_iterator_pcm(SongIterator *it, SongHandle handle) {
#define DELAY (1000000 / SFX_TICKS_PER_SEC)
void SfxState::sfx_init(ResourceManager *resmgr, int flags) {
- _songlib.initSounds();
+ _songlib._lib = 0;
_song = NULL;
_flags = flags;
_soundSync = NULL;
diff --git a/engines/sci/sfx/songlib.cpp b/engines/sci/sfx/songlib.cpp
index 2572dc01f5..3a6549a0d4 100644
--- a/engines/sci/sfx/songlib.cpp
+++ b/engines/sci/sfx/songlib.cpp
@@ -78,14 +78,7 @@ void SongLibrary::addSong(Song *song) {
return;
}
- if (*_lib == NULL) {
- *_lib = song;
- song->_next = NULL;
-
- return;
- }
-
- seeker = _lib;
+ seeker = &_lib;
while (*seeker && ((*seeker)->_priority > pri))
seeker = &((*seeker)->_next);
@@ -93,13 +86,8 @@ void SongLibrary::addSong(Song *song) {
*seeker = song;
}
-void SongLibrary::initSounds() {
- _lib = &_s;
- _s = NULL;
-}
-
void SongLibrary::freeSounds() {
- Song *next = *_lib;
+ Song *next = _lib;
while (next) {
Song *song = next;
delete song->_it;
@@ -107,12 +95,12 @@ void SongLibrary::freeSounds() {
next = song->_next;
delete song;
}
- *_lib = NULL;
+ _lib = NULL;
}
Song *SongLibrary::findSong(SongHandle handle) {
- Song *seeker = *_lib;
+ Song *seeker = _lib;
while (seeker) {
if (seeker->_handle == handle)
@@ -124,7 +112,7 @@ Song *SongLibrary::findSong(SongHandle handle) {
}
Song *SongLibrary::findNextActive(Song *other) {
- Song *seeker = other ? other->_next : *_lib;
+ Song *seeker = other ? other->_next : _lib;
while (seeker) {
if ((seeker->_status == SOUND_STATUS_WAITING) ||
@@ -146,13 +134,13 @@ Song *SongLibrary::findFirstActive() {
int SongLibrary::removeSong(SongHandle handle) {
int retval;
- Song *goner = *_lib;
+ Song *goner = _lib;
if (!goner)
return -1;
if (goner->_handle == handle)
- *_lib = goner->_next;
+ _lib = goner->_next;
else {
while ((goner->_next) && (goner->_next->_handle != handle))
@@ -175,10 +163,10 @@ int SongLibrary::removeSong(SongHandle handle) {
}
void SongLibrary::resortSong(Song *song) {
- if (*_lib == song)
- *_lib = song->_next;
+ if (_lib == song)
+ _lib = song->_next;
else {
- Song *seeker = *_lib;
+ Song *seeker = _lib;
while (seeker->_next && (seeker->_next != song))
seeker = seeker->_next;
@@ -191,7 +179,7 @@ void SongLibrary::resortSong(Song *song) {
}
int SongLibrary::countSongs() {
- Song *seeker = *_lib;
+ Song *seeker = _lib;
int retval = 0;
while (seeker) {
diff --git a/engines/sci/sfx/songlib.h b/engines/sci/sfx/songlib.h
index 55c3ddf4fd..53b32e6747 100644
--- a/engines/sci/sfx/songlib.h
+++ b/engines/sci/sfx/songlib.h
@@ -99,15 +99,10 @@ public:
class SongLibrary {
public:
- Song **_lib;
-protected:
- Song *_s;
+ Song *_lib;
public:
- SongLibrary() {}
-
- /** Initializes a static song library */
- void initSounds();
+ SongLibrary() : _lib(0) {}
/** Frees a song library. */
void freeSounds();