From 21d948ec05e5bc09106edcf259bf839e3e8be964 Mon Sep 17 00:00:00 2001 From: Max Horn Date: Sun, 7 Jun 2009 17:07:25 +0000 Subject: SCI: Simplified SongLibrary code a bit svn-id: r41345 --- engines/sci/console.cpp | 2 +- engines/sci/engine/savegame.cpp | 11 +++-------- engines/sci/sfx/core.cpp | 2 +- engines/sci/sfx/songlib.cpp | 34 +++++++++++----------------------- engines/sci/sfx/songlib.h | 9 ++------- 5 files changed, 18 insertions(+), 40 deletions(-) (limited to 'engines/sci') 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(); -- cgit v1.2.3