diff options
author | Thierry Crozat | 2017-09-12 21:46:20 +0100 |
---|---|---|
committer | Thierry Crozat | 2017-09-12 21:46:20 +0100 |
commit | 20e628cac33ab199d17bacae3d307569fb2fc0f2 (patch) | |
tree | 3a160535718e1a99e1dc95afaa77d86c728eb20c /backends/mixer | |
parent | f7436a9b3a95fef90ec8001d0381b6aa44e2d008 (diff) | |
download | scummvm-rg350-20e628cac33ab199d17bacae3d307569fb2fc0f2.tar.gz scummvm-rg350-20e628cac33ab199d17bacae3d307569fb2fc0f2.tar.bz2 scummvm-rg350-20e628cac33ab199d17bacae3d307569fb2fc0f2.zip |
SDL: Remove code for unused DoubleBufferSDLMixerManager
Diffstat (limited to 'backends/mixer')
-rw-r--r-- | backends/mixer/doublebuffersdl/doublebuffersdl-mixer.cpp | 137 | ||||
-rw-r--r-- | backends/mixer/doublebuffersdl/doublebuffersdl-mixer.h | 68 |
2 files changed, 0 insertions, 205 deletions
diff --git a/backends/mixer/doublebuffersdl/doublebuffersdl-mixer.cpp b/backends/mixer/doublebuffersdl/doublebuffersdl-mixer.cpp deleted file mode 100644 index ea0ba024bc..0000000000 --- a/backends/mixer/doublebuffersdl/doublebuffersdl-mixer.cpp +++ /dev/null @@ -1,137 +0,0 @@ -/* ScummVM - Graphic Adventure Engine - * - * ScummVM is the legal property of its developers, whose names - * are too numerous to list here. Please refer to the COPYRIGHT - * file distributed with this source distribution. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - */ - -#if defined(MACOSX) || defined(GP2X) || defined(CAANOO) || defined(GP2XWIZ) - -#include "backends/mixer/doublebuffersdl/doublebuffersdl-mixer.h" - -DoubleBufferSDLMixerManager::DoubleBufferSDLMixerManager() - : - _soundMutex(0), _soundCond(0), _soundThread(0), - _soundThreadIsRunning(false), _soundThreadShouldQuit(false) { - -} - -DoubleBufferSDLMixerManager::~DoubleBufferSDLMixerManager() { - deinitThreadedMixer(); -} - -void DoubleBufferSDLMixerManager::startAudio() { - _soundThreadIsRunning = false; - _soundThreadShouldQuit = false; - - // Create mutex and condition variable - _soundMutex = SDL_CreateMutex(); - _soundCond = SDL_CreateCond(); - - // Create two sound buffers - _activeSoundBuf = 0; - uint bufSize = _obtained.samples * 4; - _soundBufSize = bufSize; - _soundBuffers[0] = (byte *)calloc(1, bufSize); - _soundBuffers[1] = (byte *)calloc(1, bufSize); - - _soundThreadIsRunning = true; - - // Finally start the thread -#if SDL_VERSION_ATLEAST(2, 0, 0) - _soundThread = SDL_CreateThread(mixerProducerThreadEntry, "ScummVM Double Buffer Mixer", this); -#else - _soundThread = SDL_CreateThread(mixerProducerThreadEntry, this); -#endif - - SdlMixerManager::startAudio(); -} - -SDL_AudioSpec DoubleBufferSDLMixerManager::getAudioSpec(uint32 rate) { - SDL_AudioSpec desired = SdlMixerManager::getAudioSpec(rate); - // Don't double audio latency when double buffering - desired.samples /= 2; - return desired; -} - -void DoubleBufferSDLMixerManager::mixerProducerThread() { - byte nextSoundBuffer; - - SDL_LockMutex(_soundMutex); - while (true) { - // Wait till we are allowed to produce data - SDL_CondWait(_soundCond, _soundMutex); - - if (_soundThreadShouldQuit) - break; - - // Generate samples and put them into the next buffer - nextSoundBuffer = _activeSoundBuf ^ 1; - _mixer->mixCallback(_soundBuffers[nextSoundBuffer], _soundBufSize); - - // Swap buffers - _activeSoundBuf = nextSoundBuffer; - } - SDL_UnlockMutex(_soundMutex); -} - -int SDLCALL DoubleBufferSDLMixerManager::mixerProducerThreadEntry(void *arg) { - DoubleBufferSDLMixerManager *mixer = (DoubleBufferSDLMixerManager *)arg; - assert(mixer); - mixer->mixerProducerThread(); - return 0; -} - -void DoubleBufferSDLMixerManager::deinitThreadedMixer() { - // Kill thread?? _soundThread - - if (_soundThreadIsRunning) { - // Signal the producer thread to end, and wait for it to actually finish. - _soundThreadShouldQuit = true; - SDL_CondBroadcast(_soundCond); - SDL_WaitThread(_soundThread, NULL); - - // Kill the mutex & cond variables. - // Attention: AT this point, the mixer callback must not be running - // anymore, else we will crash! - SDL_DestroyMutex(_soundMutex); - SDL_DestroyCond(_soundCond); - - _soundThreadIsRunning = false; - - free(_soundBuffers[0]); - free(_soundBuffers[1]); - } -} - -void DoubleBufferSDLMixerManager::callbackHandler(byte *samples, int len) { - assert(_mixer); - assert((int)_soundBufSize == len); - - // Lock mutex, to ensure our data is not overwritten by the producer thread - SDL_LockMutex(_soundMutex); - - // Copy data from the current sound buffer - memcpy(samples, _soundBuffers[_activeSoundBuf], len); - - // Unlock mutex and wake up the produced thread - SDL_UnlockMutex(_soundMutex); - SDL_CondSignal(_soundCond); -} - -#endif diff --git a/backends/mixer/doublebuffersdl/doublebuffersdl-mixer.h b/backends/mixer/doublebuffersdl/doublebuffersdl-mixer.h deleted file mode 100644 index e952cd2100..0000000000 --- a/backends/mixer/doublebuffersdl/doublebuffersdl-mixer.h +++ /dev/null @@ -1,68 +0,0 @@ -/* ScummVM - Graphic Adventure Engine - * - * ScummVM is the legal property of its developers, whose names - * are too numerous to list here. Please refer to the COPYRIGHT - * file distributed with this source distribution. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - */ - -#ifndef BACKENDS_MIXER_DOUBLEBUFFERSDL_H -#define BACKENDS_MIXER_DOUBLEBUFFERSDL_H - -#include "backends/mixer/sdl/sdl-mixer.h" - -/** - * SDL mixer manager with double buffering support. - */ -class DoubleBufferSDLMixerManager : public SdlMixerManager { -public: - DoubleBufferSDLMixerManager(); - virtual ~DoubleBufferSDLMixerManager(); - -protected: - SDL_mutex *_soundMutex; - SDL_cond *_soundCond; - SDL_Thread *_soundThread; - bool _soundThreadIsRunning; - bool _soundThreadShouldQuit; - - byte _activeSoundBuf; - uint _soundBufSize; - byte *_soundBuffers[2]; - - virtual SDL_AudioSpec getAudioSpec(uint32 rate) override; - - /** - * Handles and swap the sound buffers - */ - void mixerProducerThread(); - - /** - * Finish the mixer manager - */ - void deinitThreadedMixer(); - - /** - * Callback entry point for the sound thread - */ - static int SDLCALL mixerProducerThreadEntry(void *arg); - - virtual void startAudio(); - virtual void callbackHandler(byte *samples, int len); -}; - -#endif |