[Scummvm-cvs-logs] SF.net SVN: scummvm:[50458] scummvm/branches/gsoc2010-opengl/backends

vgvgf at users.sourceforge.net vgvgf at users.sourceforge.net
Mon Jun 28 22:41:09 CEST 2010


Revision: 50458
          http://scummvm.svn.sourceforge.net/scummvm/?rev=50458&view=rev
Author:   vgvgf
Date:     2010-06-28 20:41:08 +0000 (Mon, 28 Jun 2010)

Log Message:
-----------
Renamed BufferingSDLMixerManager to DoubleBufferSDLMixerManager.

Modified Paths:
--------------
    scummvm/branches/gsoc2010-opengl/backends/platform/sdl/macosx/macosx.cpp

Added Paths:
-----------
    scummvm/branches/gsoc2010-opengl/backends/mixer/doublebuffersdl/
    scummvm/branches/gsoc2010-opengl/backends/mixer/doublebuffersdl/doublebuffersdl-mixer.cpp
    scummvm/branches/gsoc2010-opengl/backends/mixer/doublebuffersdl/doublebuffersdl-mixer.h

Removed Paths:
-------------
    scummvm/branches/gsoc2010-opengl/backends/mixer/bufferingsdl/
    scummvm/branches/gsoc2010-opengl/backends/mixer/doublebuffersdl/bufferingsdl-mixer.cpp
    scummvm/branches/gsoc2010-opengl/backends/mixer/doublebuffersdl/bufferingsdl-mixer.h

Deleted: scummvm/branches/gsoc2010-opengl/backends/mixer/doublebuffersdl/bufferingsdl-mixer.cpp
===================================================================
--- scummvm/branches/gsoc2010-opengl/backends/mixer/bufferingsdl/bufferingsdl-mixer.cpp	2010-06-26 23:13:05 UTC (rev 50357)
+++ scummvm/branches/gsoc2010-opengl/backends/mixer/doublebuffersdl/bufferingsdl-mixer.cpp	2010-06-28 20:41:08 UTC (rev 50458)
@@ -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/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

Deleted: scummvm/branches/gsoc2010-opengl/backends/mixer/doublebuffersdl/bufferingsdl-mixer.h
===================================================================
--- scummvm/branches/gsoc2010-opengl/backends/mixer/bufferingsdl/bufferingsdl-mixer.h	2010-06-26 23:13:05 UTC (rev 50357)
+++ scummvm/branches/gsoc2010-opengl/backends/mixer/doublebuffersdl/bufferingsdl-mixer.h	2010-06-28 20:41:08 UTC (rev 50458)
@@ -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_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

Copied: scummvm/branches/gsoc2010-opengl/backends/mixer/doublebuffersdl/doublebuffersdl-mixer.cpp (from rev 50357, scummvm/branches/gsoc2010-opengl/backends/mixer/bufferingsdl/bufferingsdl-mixer.cpp)
===================================================================
--- scummvm/branches/gsoc2010-opengl/backends/mixer/doublebuffersdl/doublebuffersdl-mixer.cpp	                        (rev 0)
+++ scummvm/branches/gsoc2010-opengl/backends/mixer/doublebuffersdl/doublebuffersdl-mixer.cpp	2010-06-28 20:41:08 UTC (rev 50458)
@@ -0,0 +1,129 @@
+/* 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/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 = _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 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

Copied: scummvm/branches/gsoc2010-opengl/backends/mixer/doublebuffersdl/doublebuffersdl-mixer.h (from rev 50357, scummvm/branches/gsoc2010-opengl/backends/mixer/bufferingsdl/bufferingsdl-mixer.h)
===================================================================
--- scummvm/branches/gsoc2010-opengl/backends/mixer/doublebuffersdl/doublebuffersdl-mixer.h	                        (rev 0)
+++ scummvm/branches/gsoc2010-opengl/backends/mixer/doublebuffersdl/doublebuffersdl-mixer.h	2010-06-28 20:41:08 UTC (rev 50458)
@@ -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_DOUBLEBUFFERSDL_H
+#define BACKENDS_MIXER_DOUBLEBUFFERSDL_H
+
+#include "backends/mixer/sdl/sdl-mixer.h"
+
+class DoubleBufferSDLMixerManager : public SdlMixerManager {
+public:
+	DoubleBufferSDLMixerManager();
+	~DoubleBufferSDLMixerManager();
+
+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);
+
+	virtual void startAudio();
+	virtual void callbackHandler(byte *samples, int len);
+};
+
+#endif

Modified: scummvm/branches/gsoc2010-opengl/backends/platform/sdl/macosx/macosx.cpp
===================================================================
--- scummvm/branches/gsoc2010-opengl/backends/platform/sdl/macosx/macosx.cpp	2010-06-28 20:31:30 UTC (rev 50457)
+++ scummvm/branches/gsoc2010-opengl/backends/platform/sdl/macosx/macosx.cpp	2010-06-28 20:41:08 UTC (rev 50458)
@@ -26,7 +26,7 @@
 #ifdef MACOSX
 
 #include "backends/platform/sdl/macosx/macosx.h"
-#include "backends/mixer/bufferingsdl/bufferingsdl-mixer.h"
+#include "backends/mixer/doublebuffersdl/doublebuffersdl-mixer.h"
 
 #include "common/archive.h"
 #include "common/fs.h"
@@ -41,7 +41,7 @@
 void OSystem_MacOSX::initBackend() {
 	// Create the mixer manager
 	if (_mixer == 0) {
-		_mixerManager = new BufferingSDLMixerManager();
+		_mixerManager = new DoubleBufferSDLMixerManager();
 
 		// Setup and start mixer
 		_mixerManager->init();


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