mirror of
https://github.com/scummvm/scummvm.git
synced 2026-06-20 05:45:29 +00:00
PRIVATE: refactor sound handling to avoid leaking memory
This commit is contained in:
committed by
Eugene Sandulenko
parent
c57939f3fd
commit
f63c30f4a1
@@ -330,13 +330,12 @@ void fInventory(ArgArray args) {
|
||||
g_private->_masks.push_front(*m);
|
||||
g_private->_toTake = true;
|
||||
|
||||
Common::String *f;
|
||||
if (strcmp(snd.u.str, "\"\"") != 0) {
|
||||
f = new Common::String(snd.u.str);
|
||||
g_private->playSound(Common::String(snd.u.str), 1, false, false);
|
||||
} else {
|
||||
f = g_private->getTakeLeaveSound();
|
||||
g_private->playSound(g_private->getTakeLeaveSound(), 1, false, false);
|
||||
}
|
||||
g_private->playSound(*f, 1, false, false);
|
||||
|
||||
g_private->inventory.push_back(*bmp);
|
||||
} else {
|
||||
if (v1.type == NAME) {
|
||||
@@ -396,8 +395,7 @@ void fSetModifiedFlag(ArgArray args) {
|
||||
void fPaperShuffleSound(ArgArray args) {
|
||||
assert(args.size() == 0);
|
||||
debugC(1, kPrivateDebugScript, "PaperShuffleSound()");
|
||||
Common::String *s = g_private->getPaperShuffleSound();
|
||||
g_private->playSound(*s, 1, false, false);
|
||||
g_private->playSound(g_private->getPaperShuffleSound(), 1, false, false);
|
||||
}
|
||||
|
||||
void fSoundEffect(ArgArray args) {
|
||||
|
||||
+14
-21
@@ -454,7 +454,7 @@ void PrivateEngine::selectExit(Common::Point mousePos) {
|
||||
if (cs < rs && e.nextSetting != NULL) { // TODO: check this
|
||||
// an item was not taken
|
||||
if (_toTake) {
|
||||
playSound(* getLeaveSound(), 1, false, false);
|
||||
playSound(getLeaveSound(), 1, false, false);
|
||||
_toTake = false;
|
||||
}
|
||||
|
||||
@@ -487,7 +487,7 @@ void PrivateEngine::selectMask(Common::Point mousePos) {
|
||||
setSymbol(m.flag1, 1);
|
||||
// an item was taken
|
||||
if (_toTake) {
|
||||
playSound(*getTakeSound(), 1, false, false);
|
||||
playSound(getTakeSound(), 1, false, false);
|
||||
_toTake = false;
|
||||
}
|
||||
}
|
||||
@@ -981,47 +981,40 @@ bool PrivateEngine::getRandomBool(uint p) {
|
||||
return (r <= p);
|
||||
}
|
||||
|
||||
Common::String *PrivateEngine::getPaperShuffleSound() {
|
||||
Common::String PrivateEngine::getPaperShuffleSound() {
|
||||
uint r = _rnd->getRandomNumber(6);
|
||||
char f[32];
|
||||
snprintf(f, 32, "glsfx0%d.wav", kPaperShuffleSound[r]);
|
||||
return (new Common::String(*_globalAudioPath + f));
|
||||
return Common::String::format("%sglsfx0%d.wav", _globalAudioPath->c_str(), kPaperShuffleSound[r]);
|
||||
}
|
||||
|
||||
Common::String *PrivateEngine::getTakeSound() {
|
||||
Common::String PrivateEngine::getTakeSound() {
|
||||
if (isDemo())
|
||||
return (new Common::String(*_globalAudioPath + "mvo007.wav"));
|
||||
return (Common::String(*_globalAudioPath + "mvo007.wav"));
|
||||
|
||||
uint r = _rnd->getRandomNumber(4) + 1;
|
||||
char f[32];
|
||||
snprintf(f, 32, "took%d.wav", r);
|
||||
return (new Common::String(*_globalAudioPath + f));
|
||||
return Common::String::format("%stook%d.wav", _globalAudioPath->c_str(), r);
|
||||
}
|
||||
|
||||
Common::String *PrivateEngine::getTakeLeaveSound() {
|
||||
Common::String PrivateEngine::getTakeLeaveSound() {
|
||||
uint r = _rnd->getRandomNumber(1);
|
||||
if (r == 0) {
|
||||
return (new Common::String(*_globalAudioPath + "mvo001.wav"));
|
||||
return (Common::String(*_globalAudioPath + "mvo001.wav"));
|
||||
} else {
|
||||
return (new Common::String(*_globalAudioPath + "mvo006.wav"));
|
||||
return (Common::String(*_globalAudioPath + "mvo006.wav"));
|
||||
}
|
||||
}
|
||||
|
||||
Common::String *PrivateEngine::getLeaveSound() {
|
||||
Common::String PrivateEngine::getLeaveSound() {
|
||||
if (isDemo())
|
||||
return (new Common::String(*_globalAudioPath + "mvo008.wav"));
|
||||
return (Common::String(*_globalAudioPath + "mvo008.wav"));
|
||||
|
||||
uint r = _rnd->getRandomNumber(4) + 1;
|
||||
|
||||
char f[32];
|
||||
snprintf(f, 32, "left%d.wav", r);
|
||||
return (new Common::String(*_globalAudioPath + f));
|
||||
return Common::String::format("%sleft%d.wav", _globalAudioPath->c_str(), r);
|
||||
}
|
||||
|
||||
char *PrivateEngine::getRandomPhoneClip(char *clip, int i, int j) {
|
||||
uint r = i + _rnd->getRandomNumber(j - i);
|
||||
|
||||
char *f = (char *)malloc((strlen(clip)+3)*sizeof(char));
|
||||
char *f = (char *)malloc((strlen(clip) + 3) * sizeof(char));
|
||||
snprintf(f, 32, "%s%02d", clip, r);
|
||||
return f;
|
||||
}
|
||||
|
||||
@@ -255,12 +255,12 @@ public:
|
||||
void stopSound(bool);
|
||||
bool _noStopSounds;
|
||||
|
||||
Common::String *getPaperShuffleSound();
|
||||
Common::String getPaperShuffleSound();
|
||||
Common::String *_globalAudioPath;
|
||||
|
||||
Common::String *getTakeSound();
|
||||
Common::String *getTakeLeaveSound();
|
||||
Common::String *getLeaveSound();
|
||||
Common::String getTakeSound();
|
||||
Common::String getTakeLeaveSound();
|
||||
Common::String getLeaveSound();
|
||||
Common::String *_sirenSound;
|
||||
|
||||
// Radios
|
||||
|
||||
Reference in New Issue
Block a user