void SciMusic::clearPlayList() { // we must NOT lock our mutex here. Playlist is modified inside soundKill() which will lock the mutex // during deletion. If we lock it here, a deadlock may occur within soundStop() because that one // calls the mixer, which will also lock the mixer mutex and if the mixer thread is active during // that time, we will get a deadlock. while (!_playList.empty()) { soundStop(_playList[0]); soundKill(_playList[0]); } }
void initSND() { static double analog[] = { -1, -0.8667, -0.7334, -0.6, -0.4668, -0.3335, -0.2, -0.067, 0.0664, 0.2, 0.333, 0.4668, 0.6, 0.7334, 0.8667, 1 } ; int i; for (i=0; i<16; i++) { pcmVals[i] = analog[i]*0x70; } for (i=0; i<4; i++) { soundKill(sound[i]); chanOn = 0; chanVol[i] = 0; chanFreq[i] = 0; setSoundVolume(i); } srand(time(NULL)); if (!soundDisabled) soundEnable(); }