[Scummvm-cvs-logs] SF.net SVN: scummvm:[50223] scummvm/branches/gsoc2010-opengl/backends
vgvgf at users.sourceforge.net
vgvgf at users.sourceforge.net
Thu Jun 24 19:13:32 CEST 2010
Revision: 50223
http://scummvm.svn.sourceforge.net/scummvm/?rev=50223&view=rev
Author: vgvgf
Date: 2010-06-24 17:13:32 +0000 (Thu, 24 Jun 2010)
Log Message:
-----------
Renamed MacOSXMixerManager to BufferingSDLMixerManager.
Modified Paths:
--------------
scummvm/branches/gsoc2010-opengl/backends/module.mk
Added Paths:
-----------
scummvm/branches/gsoc2010-opengl/backends/mixer/bufferingsdl/
scummvm/branches/gsoc2010-opengl/backends/mixer/bufferingsdl/bufferingsdl-mixer.cpp
scummvm/branches/gsoc2010-opengl/backends/mixer/bufferingsdl/bufferingsdl-mixer.h
Removed Paths:
-------------
scummvm/branches/gsoc2010-opengl/backends/mixer/bufferingsdl/macosx-mixer.cpp
scummvm/branches/gsoc2010-opengl/backends/mixer/bufferingsdl/macosx-mixer.h
scummvm/branches/gsoc2010-opengl/backends/mixer/macosx/
Copied: scummvm/branches/gsoc2010-opengl/backends/mixer/bufferingsdl/bufferingsdl-mixer.cpp (from rev 50198, scummvm/branches/gsoc2010-opengl/backends/mixer/macosx/macosx-mixer.cpp)
===================================================================
--- scummvm/branches/gsoc2010-opengl/backends/mixer/bufferingsdl/bufferingsdl-mixer.cpp (rev 0)
+++ scummvm/branches/gsoc2010-opengl/backends/mixer/bufferingsdl/bufferingsdl-mixer.cpp 2010-06-24 17:13:32 UTC (rev 50223)
@@ -0,0 +1,130 @@
+/* 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.
+ *
+ * $URL$
+ * $Id$
+ *
+ */
+
+#if defined(MACOSX)
+
+#include "backends/mixer/bufferingsdl/bufferingsdl-mixer.h"
+
+BufferingSDLMixerManager::BufferingSDLMixerManager()
+ :
+ _soundMutex(0), _soundCond(0), _soundThread(0),
+ _soundThreadIsRunning(false), _soundThreadShouldQuit(false) {
+
+}
+
+BufferingSDLMixerManager::~BufferingSDLMixerManager() {
+ deinitThreadedMixer();
+}
+
+void BufferingSDLMixerManager::startAudio() {
+ _soundThreadIsRunning = false;
+ _soundThreadShouldQuit = false;
+
+ // Create mutex and condition variable
+ _soundMutex = SDL_CreateMutex();
+ _soundCond = SDL_CreateCond();
+
+ // Create two sound buffers
+ _activeSoundBuf = 0;
+ uint bufSize = _obtainedRate.samples * 4;
+ _soundBufSize = bufSize;
+ _soundBuffers[0] = (byte *)calloc(1, bufSize);
+ _soundBuffers[1] = (byte *)calloc(1, bufSize);
+
+ _soundThreadIsRunning = true;
+
+ // Finally start the thread
+ _soundThread = SDL_CreateThread(mixerProducerThreadEntry, this);
+
+ SdlMixerManager::startAudio();
+}
+
+void BufferingSDLMixerManager::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 BufferingSDLMixerManager::mixerProducerThreadEntry(void *arg) {
+ BufferingSDLMixerManager *mixer = (BufferingSDLMixerManager *)arg;
+ assert(mixer);
+ mixer->mixerProducerThread();
+ return 0;
+}
+
+void BufferingSDLMixerManager::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 BufferingSDLMixerManager::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
Copied: scummvm/branches/gsoc2010-opengl/backends/mixer/bufferingsdl/bufferingsdl-mixer.h (from rev 50198, scummvm/branches/gsoc2010-opengl/backends/mixer/macosx/macosx-mixer.h)
===================================================================
--- scummvm/branches/gsoc2010-opengl/backends/mixer/bufferingsdl/bufferingsdl-mixer.h (rev 0)
+++ scummvm/branches/gsoc2010-opengl/backends/mixer/bufferingsdl/bufferingsdl-mixer.h 2010-06-24 17:13:32 UTC (rev 50223)
@@ -0,0 +1,55 @@
+/* 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.
+ *
+ * $URL$
+ * $Id$
+ *
+ */
+
+#ifndef BACKENDS_MIXER_BUFFERINGSDL_H
+#define BACKENDS_MIXER_BUFFERINGSDL_H
+
+#include "backends/mixer/sdl/sdl-mixer.h"
+
+class BufferingSDLMixerManager : public SdlMixerManager {
+public:
+ BufferingSDLMixerManager();
+ ~BufferingSDLMixerManager();
+
+protected:
+ SDL_mutex *_soundMutex;
+ SDL_cond *_soundCond;
+ SDL_Thread *_soundThread;
+ bool _soundThreadIsRunning;
+ bool _soundThreadShouldQuit;
+
+ byte _activeSoundBuf;
+ uint _soundBufSize;
+ byte *_soundBuffers[2];
+
+ void mixerProducerThread();
+ void deinitThreadedMixer();
+ static int SDLCALL mixerProducerThreadEntry(void *arg);
+
+ void startAudio();
+ void callbackHandler(byte *samples, int len);
+};
+
+#endif
Deleted: scummvm/branches/gsoc2010-opengl/backends/mixer/bufferingsdl/macosx-mixer.cpp
===================================================================
--- scummvm/branches/gsoc2010-opengl/backends/mixer/macosx/macosx-mixer.cpp 2010-06-24 04:11:54 UTC (rev 50198)
+++ scummvm/branches/gsoc2010-opengl/backends/mixer/bufferingsdl/macosx-mixer.cpp 2010-06-24 17:13:32 UTC (rev 50223)
@@ -1,130 +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.
- *
- * $URL$
- * $Id$
- *
- */
-
-#if defined(MACOSX)
-
-#include "backends/mixer/macosx/macosx-mixer.h"
-
-MacOSXMixerManager::MacOSXMixerManager()
- :
- _soundMutex(0), _soundCond(0), _soundThread(0),
- _soundThreadIsRunning(false), _soundThreadShouldQuit(false) {
-
-}
-
-MacOSXMixerManager::~MacOSXMixerManager() {
- deinitThreadedMixer();
-}
-
-void MacOSXMixerManager::startAudio() {
- _soundThreadIsRunning = false;
- _soundThreadShouldQuit = false;
-
- // Create mutex and condition variable
- _soundMutex = SDL_CreateMutex();
- _soundCond = SDL_CreateCond();
-
- // Create two sound buffers
- _activeSoundBuf = 0;
- uint bufSize = _obtainedRate.samples * 4;
- _soundBufSize = bufSize;
- _soundBuffers[0] = (byte *)calloc(1, bufSize);
- _soundBuffers[1] = (byte *)calloc(1, bufSize);
-
- _soundThreadIsRunning = true;
-
- // Finally start the thread
- _soundThread = SDL_CreateThread(mixerProducerThreadEntry, this);
-
- SdlMixerManager::startAudio();
-}
-
-void MacOSXMixerManager::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 MacOSXMixerManager::mixerProducerThreadEntry(void *arg) {
- MacOSXMixerManager *mixer = (MacOSXMixerManager *)arg;
- assert(mixer);
- mixer->mixerProducerThread();
- return 0;
-}
-
-void MacOSXMixerManager::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 MacOSXMixerManager::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
Deleted: scummvm/branches/gsoc2010-opengl/backends/mixer/bufferingsdl/macosx-mixer.h
===================================================================
--- scummvm/branches/gsoc2010-opengl/backends/mixer/macosx/macosx-mixer.h 2010-06-24 04:11:54 UTC (rev 50198)
+++ scummvm/branches/gsoc2010-opengl/backends/mixer/bufferingsdl/macosx-mixer.h 2010-06-24 17:13:32 UTC (rev 50223)
@@ -1,55 +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.
- *
- * $URL$
- * $Id$
- *
- */
-
-#ifndef BACKENDS_MIXER_MACOSX_H
-#define BACKENDS_MIXER_MACOSX_H
-
-#include "backends/mixer/sdl/sdl-mixer.h"
-
-class MacOSXMixerManager : public SdlMixerManager {
-public:
- MacOSXMixerManager();
- ~MacOSXMixerManager();
-
-protected:
- SDL_mutex *_soundMutex;
- SDL_cond *_soundCond;
- SDL_Thread *_soundThread;
- bool _soundThreadIsRunning;
- bool _soundThreadShouldQuit;
-
- byte _activeSoundBuf;
- uint _soundBufSize;
- byte *_soundBuffers[2];
-
- void mixerProducerThread();
- void deinitThreadedMixer();
- static int SDLCALL mixerProducerThreadEntry(void *arg);
-
- void startAudio();
- void callbackHandler(byte *samples, int len);
-};
-
-#endif
Modified: scummvm/branches/gsoc2010-opengl/backends/module.mk
===================================================================
--- scummvm/branches/gsoc2010-opengl/backends/module.mk 2010-06-24 17:10:26 UTC (rev 50222)
+++ scummvm/branches/gsoc2010-opengl/backends/module.mk 2010-06-24 17:13:32 UTC (rev 50223)
@@ -35,6 +35,7 @@
midi/timidity.o \
midi/dmedia.o \
midi/windows.o \
+ mixer/bufferingsdl/bufferingsdl-mixer.o \
mixer/sdl/sdl-mixer.o \
mutex/sdl/sdl-mutex.o \
plugins/dc/dc-provider.o \
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Scummvm-git-logs
mailing list