[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