diff options
| -rw-r--r-- | engines/sci/console.cpp | 2 | ||||
| -rw-r--r-- | engines/sci/engine/savegame.cpp | 11 | ||||
| -rw-r--r-- | engines/sci/sfx/core.cpp | 2 | ||||
| -rw-r--r-- | engines/sci/sfx/songlib.cpp | 34 | ||||
| -rw-r--r-- | engines/sci/sfx/songlib.h | 9 | 
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(); | 
