aboutsummaryrefslogtreecommitdiff
path: root/backends/mixer
diff options
context:
space:
mode:
authorThierry Crozat2017-09-12 21:46:20 +0100
committerThierry Crozat2017-09-12 21:46:20 +0100
commit20e628cac33ab199d17bacae3d307569fb2fc0f2 (patch)
tree3a160535718e1a99e1dc95afaa77d86c728eb20c /backends/mixer
parentf7436a9b3a95fef90ec8001d0381b6aa44e2d008 (diff)
downloadscummvm-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.cpp137
-rw-r--r--backends/mixer/doublebuffersdl/doublebuffersdl-mixer.h68
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