diff options
author | Torbjörn Andersson | 2019-01-05 20:09:23 +0100 |
---|---|---|
committer | Filippos Karapetis | 2019-07-14 14:58:19 +0300 |
commit | 1e23d43006705a1d25e04d9cc90674044789cb92 (patch) | |
tree | 74982033219756724bc69b27cfc962531682b502 /engines/scumm/imuse_digi | |
parent | 4eef7a42e3f45a18a57674898f5fb5409f6daf5d (diff) | |
download | scummvm-rg350-1e23d43006705a1d25e04d9cc90674044789cb92.tar.gz scummvm-rg350-1e23d43006705a1d25e04d9cc90674044789cb92.tar.bz2 scummvm-rg350-1e23d43006705a1d25e04d9cc90674044789cb92.zip |
SCUMM: Silence GCC memset() warnings
Recent GCC versions complain if you memset() a class or struct that
contain non-POD data types. Get around that by either initializing
the object when created, or by adding a reset() method.
Diffstat (limited to 'engines/scumm/imuse_digi')
-rw-r--r-- | engines/scumm/imuse_digi/dimuse.cpp | 6 | ||||
-rw-r--r-- | engines/scumm/imuse_digi/dimuse_script.cpp | 6 | ||||
-rw-r--r-- | engines/scumm/imuse_digi/dimuse_track.cpp | 4 | ||||
-rw-r--r-- | engines/scumm/imuse_digi/dimuse_track.h | 29 |
4 files changed, 36 insertions, 9 deletions
diff --git a/engines/scumm/imuse_digi/dimuse.cpp b/engines/scumm/imuse_digi/dimuse.cpp index b6955212a9..de5b1634ed 100644 --- a/engines/scumm/imuse_digi/dimuse.cpp +++ b/engines/scumm/imuse_digi/dimuse.cpp @@ -55,7 +55,7 @@ IMuseDigital::IMuseDigital(ScummEngine_v7 *scumm, Audio::Mixer *mixer, int fps) for (int l = 0; l < MAX_DIGITAL_TRACKS + MAX_DIGITAL_FADETRACKS; l++) { _track[l] = new Track; assert(_track[l]); - memset(_track[l], 0, sizeof(Track)); + _track[l]->reset(); _track[l]->trackId = l; } _vm->getTimerManager()->installTimerProc(timer_handler, 1000000 / _callbackFps, this, "IMuseDigital"); @@ -147,7 +147,7 @@ void IMuseDigital::saveLoadEarly(Common::Serializer &s) { for (int l = 0; l < MAX_DIGITAL_TRACKS + MAX_DIGITAL_FADETRACKS; l++) { Track *track = _track[l]; if (s.isLoading()) { - memset(track, 0, sizeof(Track)); + track->reset(); } syncWithSerializer(s, *track); if (s.isLoading()) { @@ -210,7 +210,7 @@ void IMuseDigital::callback() { // mark it as unused. if (!track->stream) { if (!_mixer->isSoundHandleActive(track->mixChanHandle)) - memset(track, 0, sizeof(Track)); + track->reset(); continue; } diff --git a/engines/scumm/imuse_digi/dimuse_script.cpp b/engines/scumm/imuse_digi/dimuse_script.cpp index 3913a1a1f0..8d1e7a4bfd 100644 --- a/engines/scumm/imuse_digi/dimuse_script.cpp +++ b/engines/scumm/imuse_digi/dimuse_script.cpp @@ -180,7 +180,7 @@ void IMuseDigital::flushTrack(Track *track) { } if (!_mixer->isSoundHandleActive(track->mixChanHandle)) { - memset(track, 0, sizeof(Track)); + track->reset(); } } @@ -191,7 +191,7 @@ void IMuseDigital::flushTracks() { Track *track = _track[l]; if (track->used && track->toBeRemoved && !_mixer->isSoundHandleActive(track->mixChanHandle)) { debug(5, "flushTracks() - soundId:%d", track->soundId); - memset(track, 0, sizeof(Track)); + track->reset(); } } } @@ -438,7 +438,7 @@ void IMuseDigital::stopAllSounds() { } // Mark the track as unused - memset(track, 0, sizeof(Track)); + track->reset(); } } } diff --git a/engines/scumm/imuse_digi/dimuse_track.cpp b/engines/scumm/imuse_digi/dimuse_track.cpp index 28ad64670c..92ef823db1 100644 --- a/engines/scumm/imuse_digi/dimuse_track.cpp +++ b/engines/scumm/imuse_digi/dimuse_track.cpp @@ -67,7 +67,7 @@ int IMuseDigital::allocSlot(int priority) { } // Mark it as unused - memset(track, 0, sizeof(Track)); + track->reset(); debug(5, "IMuseDigital::allocSlot(): Removed sound %d from track %d", _track[trackId]->soundId, trackId); } else { @@ -93,7 +93,7 @@ void IMuseDigital::startSound(int soundId, const char *soundName, int soundType, Track *track = _track[l]; // Reset the track - memset(track, 0, sizeof(Track)); + track->reset(); track->pan = 64; track->vol = volume * 1000; diff --git a/engines/scumm/imuse_digi/dimuse_track.h b/engines/scumm/imuse_digi/dimuse_track.h index ef0a8adb21..9f62fe95b9 100644 --- a/engines/scumm/imuse_digi/dimuse_track.h +++ b/engines/scumm/imuse_digi/dimuse_track.h @@ -75,7 +75,34 @@ struct Track { Audio::SoundHandle mixChanHandle; // sound mixer's channel handle Audio::QueuingAudioStream *stream; // sound mixer's audio stream handle for *.la1 and *.bun - Track() : soundId(-1), used(false), stream(NULL) { + Track() : soundId(-1), used(false), stream(nullptr) { + } + + void reset() { + trackId = 0; + pan = 0; + vol = 0; + volFadeDest = 0; + volFadeStep = 0; + volFadeDelay = 0; + volFadeUsed = false; + soundId = 0; + memset(soundName, 0, sizeof(soundName)); + used = false; + toBeRemoved = false; + souStreamUsed = false; + sndDataExtComp = false; + soundPriority = 0; + regionOffset = 0; + dataOffset = 0; + curRegion = 0; + curHookId = 0; + soundType = 0; + feedSize = 0; + dataMod12Bit = 0; + mixerFlags = 0; + soundDesc = nullptr; + stream = nullptr; } int getPan() const { return (pan != 64) ? 2 * pan - 127 : 0; } |