diff --git a/src/Backends/Audio/SoftwareMixer/Solaris.cpp b/src/Backends/Audio/SoftwareMixer/Solaris.cpp index 41fc9c7a..18e90149 100644 --- a/src/Backends/Audio/SoftwareMixer/Solaris.cpp +++ b/src/Backends/Audio/SoftwareMixer/Solaris.cpp @@ -34,22 +34,25 @@ static inline void soundWait() { audio_info_t audioInfo; ioctl(sndfp, AUDIO_GETINFO, &audioInfo); int playedBefore = audioInfo.play.samples; - while(audioInfo.play.samples - playedBefore < samplesPerGo) { + int playedNow = audioInfo.play.samples; + while(playedNow - playedBefore < samplesPerGo) { Backend_Delay(10); ioctl(sndfp, AUDIO_GETINFO, &audioInfo); + playedNow = audioInfo.play.samples; } } static inline void feedOutSound(long* mix) { for(int i = 0; i < samplesPerGo * 2; i++) { + short sample = mix[i]; if(mix[i] > 0x7FFF) { - mix[i] = 0x7FFF; + sample = 0x7FFF; } - else if(mix[i] < -0x7FFF) { - mix[i] = -0x7FFF; + if(mix[i] < -0x7FFF) { + sample = -0x7FFF; } - fputc((mix[i] >> 8) & 0xFF, sndfile); - fputc(mix[i] & 0xFF, sndfile); + fputc((sample >> 8) & 0xFF, sndfile); + fputc(sample & 0xFF, sndfile); } } @@ -61,7 +64,7 @@ static void* soundcheckthread(void*) { setUpSoundFrame(mix); feedOutSound(mix); while(1) { - + setUpSoundFrame(mix); // Waiting for more to be needed