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

vgvgf at users.sourceforge.net vgvgf at users.sourceforge.net
Sat Jun 12 04:54:51 CEST 2010


Revision: 49602
          http://scummvm.svn.sourceforge.net/scummvm/?rev=49602&view=rev
Author:   vgvgf
Date:     2010-06-12 02:54:51 +0000 (Sat, 12 Jun 2010)

Log Message:
-----------
Created SdlMixerImpl. Added setSampleRate method to Audio::MixerImpl. Updated and removed mixer code in OSystem_SDL for using SdlMixerImpl.

Modified Paths:
--------------
    scummvm/branches/gsoc2010-opengl/backends/platform/sdl/sdl.cpp
    scummvm/branches/gsoc2010-opengl/backends/platform/sdl/sdl.h
    scummvm/branches/gsoc2010-opengl/sound/mixer.cpp
    scummvm/branches/gsoc2010-opengl/sound/mixer_intern.h

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

Added: scummvm/branches/gsoc2010-opengl/backends/mixer/sdl/sdl-mixer.cpp
===================================================================
--- scummvm/branches/gsoc2010-opengl/backends/mixer/sdl/sdl-mixer.cpp	                        (rev 0)
+++ scummvm/branches/gsoc2010-opengl/backends/mixer/sdl/sdl-mixer.cpp	2010-06-12 02:54:51 UTC (rev 49602)
@@ -0,0 +1,205 @@
+/* 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(WIN32) || defined(UNIX) || defined(MACOSX)
+
+#include "backends/mixer/sdl/sdl-mixer.h"
+
+#include "common/config-manager.h"
+
+//#define SAMPLES_PER_SEC 11025
+#define SAMPLES_PER_SEC 22050
+//#define SAMPLES_PER_SEC 44100
+
+SdlMixerImpl::SdlMixerImpl(OSystem *system)
+	:
+#if MIXER_DOUBLE_BUFFERING
+	_soundMutex(0), _soundCond(0), _soundThread(0),
+	_soundThreadIsRunning(false), _soundThreadShouldQuit(false),
+#endif
+	MixerImpl(system, SAMPLES_PER_SEC) {
+	SDL_AudioSpec desired;
+
+	// Determine the desired output sampling frequency.
+	uint32 samplesPerSec = 0;
+	if (ConfMan.hasKey("output_rate"))
+		samplesPerSec = ConfMan.getInt("output_rate");
+	if (samplesPerSec <= 0)
+		samplesPerSec = SAMPLES_PER_SEC;
+
+	// Determine the sample buffer size. We want it to store enough data for
+	// at least 1/16th of a second (though at most 8192 samples). Note
+	// that it must be a power of two. So e.g. at 22050 Hz, we request a
+	// sample buffer size of 2048.
+	uint32 samples = 8192;
+	while (samples * 16 > samplesPerSec * 2)
+		samples >>= 1;
+
+	memset(&desired, 0, sizeof(desired));
+	desired.freq = samplesPerSec;
+	desired.format = AUDIO_S16SYS;
+	desired.channels = 2;
+	desired.samples = (uint16)samples;
+	desired.callback = mixSdlCallback;
+	desired.userdata = this;
+
+	if (SDL_OpenAudio(&desired, &_obtainedRate) != 0) {
+		warning("Could not open audio device: %s", SDL_GetError());
+
+		setSampleRate(samplesPerSec);
+
+		setReady(false);
+	} else {
+		// Note: This should be the obtained output rate, but it seems that at
+		// least on some platforms SDL will lie and claim it did get the rate
+		// even if it didn't. Probably only happens for "weird" rates, though.
+		samplesPerSec = _obtainedRate.freq;
+		debug(1, "Output sample rate: %d Hz", samplesPerSec);
+
+		setSampleRate(samplesPerSec);
+
+		setReady(true);
+
+#if MIXER_DOUBLE_BUFFERING
+		initThreadedMixer(_obtainedRate.samples * 4);
+#endif
+
+		// start the sound system
+		SDL_PauseAudio(0);
+	}
+}
+
+SdlMixerImpl::~SdlMixerImpl() {
+	setReady(false);
+
+	SDL_CloseAudio();
+
+#if MIXER_DOUBLE_BUFFERING
+	deinitThreadedMixer();
+#endif
+}
+
+#if MIXER_DOUBLE_BUFFERING
+
+void SdlMixerImpl::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;
+		mixCallback(_soundBuffers[nextSoundBuffer], _soundBufSize);
+
+		// Swap buffers
+		_activeSoundBuf = nextSoundBuffer;
+	}
+	SDL_UnlockMutex(_soundMutex);
+}
+
+int SDLCALL SdlMixerImpl::mixerProducerThreadEntry(void *arg) {
+	SdlMixerImpl *mixer = (SdlMixerImpl *)arg;
+	assert(mixer);
+	mixer->mixerProducerThread();
+	return 0;
+}
+
+
+void SdlMixerImpl::initThreadedMixer(uint bufSize) {
+	_soundThreadIsRunning = false;
+	_soundThreadShouldQuit = false;
+
+	// Create mutex and condition variable
+	_soundMutex = SDL_CreateMutex();
+	_soundCond = SDL_CreateCond();
+
+	// Create two sound buffers
+	_activeSoundBuf = 0;
+	_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);
+}
+
+void SdlMixerImpl::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 SdlMixerImpl::mixSdlCallback(void *arg, byte *samples, int len) {
+	SdlMixerImpl *mixer = (SdlMixerImpl *)arg;
+	assert(mixer);
+
+	assert((int)mixer->getSoundBufSize() == len);
+
+	// Lock mutex, to ensure our data is not overwritten by the producer thread
+	g_system->lockMutex((OSystem::MutexRef)mixer->getSoundMutex());
+
+	// Copy data from the current sound buffer
+	memcpy(samples, mixer->getActiveSoundBuf(), len);
+
+	// Unlock mutex and wake up the produced thread
+	g_system->unlockMutex((OSystem::MutexRef)mixer->getSoundMutex());
+	SDL_CondSignal(mixer->getSoundCond());
+}
+
+#else
+
+void SdlMixerImpl::mixSdlCallback(void *sys, byte *samples, int len) {
+	Audio::MixerImpl *mixer = (Audio::MixerImpl *)sys;
+	assert(mixer);
+	mixer->mixCallback(samples, len);
+}
+
+#endif
+
+#endif


Property changes on: scummvm/branches/gsoc2010-opengl/backends/mixer/sdl/sdl-mixer.cpp
___________________________________________________________________
Added: svn:mime-type
   + text/plain
Added: svn:keywords
   + Date Rev Author URL Id
Added: svn:eol-style
   + native

Added: scummvm/branches/gsoc2010-opengl/backends/mixer/sdl/sdl-mixer.h
===================================================================
--- scummvm/branches/gsoc2010-opengl/backends/mixer/sdl/sdl-mixer.h	                        (rev 0)
+++ scummvm/branches/gsoc2010-opengl/backends/mixer/sdl/sdl-mixer.h	2010-06-12 02:54:51 UTC (rev 49602)
@@ -0,0 +1,81 @@
+/* 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_SDL_H
+#define BACKENDS_MIXER_SDL_H
+
+#if defined(__SYMBIAN32__)
+#include <esdl\SDL.h>
+#else
+#include <SDL.h>
+#endif
+
+#include "sound/mixer_intern.h"
+
+#if defined(MACOSX)
+// On Mac OS X, we need to double buffer the audio buffer, else anything
+// which produces sampled data with high latency (like the MT-32 emulator)
+// will sound terribly.
+// This could be enabled for more / most ports in the future, but needs some
+// testing.
+#define MIXER_DOUBLE_BUFFERING 1
+#endif
+
+class SdlMixerImpl : public Audio::MixerImpl {
+public:
+
+	SdlMixerImpl(OSystem *system);
+	~SdlMixerImpl();
+
+protected:
+	SDL_AudioSpec _obtainedRate;
+
+	static void mixSdlCallback(void *s, byte *samples, int len);
+
+#ifdef MIXER_DOUBLE_BUFFERING
+	SDL_mutex *_soundMutex;
+	SDL_cond *_soundCond;
+	SDL_Thread *_soundThread;
+	bool _soundThreadIsRunning;
+	bool _soundThreadShouldQuit;
+
+	byte _activeSoundBuf;
+	uint _soundBufSize;
+	byte *_soundBuffers[2];
+
+	void mixerProducerThread();
+	static int SDLCALL mixerProducerThreadEntry(void *arg);
+	void initThreadedMixer(uint bufSize);
+	void deinitThreadedMixer();
+
+public:
+	SDL_mutex *getSoundMutex() { return _soundMutex; }
+	SDL_cond *getSoundCond() { return _soundCond; }
+	uint getSoundBufSize() { return _soundBufSize; }
+	byte *getActiveSoundBuf() { return _soundBuffers[_activeSoundBuf]; }
+#endif
+};
+
+#endif


Property changes on: scummvm/branches/gsoc2010-opengl/backends/mixer/sdl/sdl-mixer.h
___________________________________________________________________
Added: svn:mime-type
   + text/plain
Added: svn:keywords
   + Date Rev Author URL Id
Added: svn:eol-style
   + native

Modified: scummvm/branches/gsoc2010-opengl/backends/platform/sdl/sdl.cpp
===================================================================
--- scummvm/branches/gsoc2010-opengl/backends/platform/sdl/sdl.cpp	2010-06-12 00:15:22 UTC (rev 49601)
+++ scummvm/branches/gsoc2010-opengl/backends/platform/sdl/sdl.cpp	2010-06-12 02:54:51 UTC (rev 49602)
@@ -42,17 +42,13 @@
   #include "backends/saves/default/default-saves.h"
 #endif
 #include "backends/timer/default/default-timer.h"
-#include "sound/mixer_intern.h"
 
+#include "backends/mixer/sdl/sdl-mixer.h"
+
 #include "icons/scummvm.xpm"
 
 #include <time.h>	// for getTimeAndDate()
 
-//#define SAMPLES_PER_SEC 11025
-#define SAMPLES_PER_SEC 22050
-//#define SAMPLES_PER_SEC 44100
-
-
 /*
  * Include header files needed for the getFilesystemFactory() method.
  */
@@ -137,12 +133,11 @@
 	// Create and hook up the mixer, if none exists yet (we check for this to
 	// allow subclasses to provide their own).
 	if (_mixer == 0) {
-		// TODO: Implement SdlAudioManager
 		if (SDL_InitSubSystem(SDL_INIT_AUDIO) == -1) {
 			error("Could not initialize SDL: %s", SDL_GetError());
 		}
 
-		setupMixer();
+		_mixer = new SdlMixerImpl(this);
 	}
 
 	// Create and hook up the timer manager, if none exists yet (we check for
@@ -182,10 +177,6 @@
 
 OSystem_SDL::OSystem_SDL()
 	:
-#if MIXER_DOUBLE_BUFFERING
-	_soundMutex(0), _soundCond(0), _soundThread(0),
-	_soundThreadIsRunning(false), _soundThreadShouldQuit(false),
-#endif
 	_scrollLock(false),
 	_joystick(0) {
 
@@ -209,8 +200,8 @@
 
 OSystem_SDL::~OSystem_SDL() {
 	SDL_RemoveTimer(_timerID);
-	closeMixer();
-
+	
+	delete _mixer;
 	delete _savefileManager;
 	delete _timerManager;
 }
@@ -366,8 +357,9 @@
 	SDL_ShowCursor(SDL_ENABLE);
 
 	SDL_RemoveTimer(_timerID);
-	closeMixer();
 
+	delete _mixer;
+
 	delete _timerManager;
 
 	SDL_Quit();
@@ -437,179 +429,3 @@
 	SDL_FreeSurface(sdl_surf);
 	free(icon);
 }
-
-#pragma mark -
-#pragma mark --- Audio ---
-#pragma mark -
-
-#if MIXER_DOUBLE_BUFFERING
-
-void OSystem_SDL::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;
-		((Audio::MixerImpl *)_mixer)->mixCallback(_soundBuffers[nextSoundBuffer], _soundBufSize);
-
-		// Swap buffers
-		_activeSoundBuf = nextSoundBuffer;
-	}
-	SDL_UnlockMutex(_soundMutex);
-}
-
-int SDLCALL OSystem_SDL::mixerProducerThreadEntry(void *arg) {
-	OSystem_SDL *this_ = (OSystem_SDL *)arg;
-	assert(this_);
-	this_->mixerProducerThread();
-	return 0;
-}
-
-
-void OSystem_SDL::initThreadedMixer(Audio::Mixer *mixer, uint bufSize) {
-	_soundThreadIsRunning = false;
-	_soundThreadShouldQuit = false;
-
-	// Create mutex and condition variable
-	_soundMutex = SDL_CreateMutex();
-	_soundCond = SDL_CreateCond();
-
-	// Create two sound buffers
-	_activeSoundBuf = 0;
-	_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);
-}
-
-void OSystem_SDL::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 OSystem_SDL::mixCallback(void *arg, byte *samples, int len) {
-	OSystem_SDL *this_ = (OSystem_SDL *)arg;
-	assert(this_);
-	assert(this_->_mixer);
-
-	assert((int)this_->_soundBufSize == len);
-
-	// Lock mutex, to ensure our data is not overwritten by the producer thread
-	SDL_LockMutex(this_->_soundMutex);
-
-	// Copy data from the current sound buffer
-	memcpy(samples, this_->_soundBuffers[this_->_activeSoundBuf], len);
-
-	// Unlock mutex and wake up the produced thread
-	SDL_UnlockMutex(this_->_soundMutex);
-	SDL_CondSignal(this_->_soundCond);
-}
-
-#else
-
-void OSystem_SDL::mixCallback(void *sys, byte *samples, int len) {
-	ModularBackend *this_ = (ModularBackend *)sys;
-	assert(this_);
-	assert(this_->getMixer());
-
-	((Audio::MixerImpl *)this_->getMixer())->mixCallback(samples, len);
-}
-
-#endif
-
-void OSystem_SDL::setupMixer() {
-	SDL_AudioSpec desired;
-
-	// Determine the desired output sampling frequency.
-	uint32 samplesPerSec = 0;
-	if (ConfMan.hasKey("output_rate"))
-		samplesPerSec = ConfMan.getInt("output_rate");
-	if (samplesPerSec <= 0)
-		samplesPerSec = SAMPLES_PER_SEC;
-
-	// Determine the sample buffer size. We want it to store enough data for
-	// at least 1/16th of a second (though at most 8192 samples). Note
-	// that it must be a power of two. So e.g. at 22050 Hz, we request a
-	// sample buffer size of 2048.
-	uint32 samples = 8192;
-	while (samples * 16 > samplesPerSec * 2)
-		samples >>= 1;
-
-	memset(&desired, 0, sizeof(desired));
-	desired.freq = samplesPerSec;
-	desired.format = AUDIO_S16SYS;
-	desired.channels = 2;
-	desired.samples = (uint16)samples;
-	desired.callback = mixCallback;
-	desired.userdata = this;
-
-	assert(!_mixer);
-	if (SDL_OpenAudio(&desired, &_obtainedRate) != 0) {
-		warning("Could not open audio device: %s", SDL_GetError());
-		_mixer = new Audio::MixerImpl(this, samplesPerSec);
-		assert(_mixer);
-		((Audio::MixerImpl *)_mixer)->setReady(false);
-	} else {
-		// Note: This should be the obtained output rate, but it seems that at
-		// least on some platforms SDL will lie and claim it did get the rate
-		// even if it didn't. Probably only happens for "weird" rates, though.
-		samplesPerSec = _obtainedRate.freq;
-		debug(1, "Output sample rate: %d Hz", samplesPerSec);
-
-		// Create the mixer instance and start the sound processing
-		_mixer = new Audio::MixerImpl(this, samplesPerSec);
-		assert(_mixer);
-		((Audio::MixerImpl *)_mixer)->setReady(true);
-
-#if MIXER_DOUBLE_BUFFERING
-		initThreadedMixer(_mixer, _obtainedRate.samples * 4);
-#endif
-
-		// start the sound system
-		SDL_PauseAudio(0);
-	}
-}
-
-void OSystem_SDL::closeMixer() {
-	if (_mixer)
-		((Audio::MixerImpl *)_mixer)->setReady(false);
-
-	SDL_CloseAudio();
-
-	delete _mixer;
-	_mixer = 0;
-
-#if MIXER_DOUBLE_BUFFERING
-	deinitThreadedMixer();
-#endif
-
-}

Modified: scummvm/branches/gsoc2010-opengl/backends/platform/sdl/sdl.h
===================================================================
--- scummvm/branches/gsoc2010-opengl/backends/platform/sdl/sdl.h	2010-06-12 00:15:22 UTC (rev 49601)
+++ scummvm/branches/gsoc2010-opengl/backends/platform/sdl/sdl.h	2010-06-12 02:54:51 UTC (rev 49602)
@@ -50,15 +50,6 @@
 #define USE_OSD	1
 #endif
 
-#if defined(MACOSX)
-// On Mac OS X, we need to double buffer the audio buffer, else anything
-// which produces sampled data with high latency (like the MT-32 emulator)
-// will sound terribly.
-// This could be enabled for more / most ports in the future, but needs some
-// testing.
-#define MIXER_DOUBLE_BUFFERING 1
-#endif
-
 class OSystem_SDL : public ModularBackend {
 public:
 	OSystem_SDL();
@@ -83,11 +74,6 @@
 
 	virtual void preprocessEvents(SDL_Event *event) {}
 
-	// Set function that generates samples
-	virtual void setupMixer();
-	static void mixCallback(void *s, byte *samples, int len);
-	virtual void closeMixer();
-
 	// Quit
 	virtual void quit(); // overloaded by CE backend
 
@@ -101,7 +87,6 @@
 
 protected:
 	bool _inited;
-	SDL_AudioSpec _obtainedRate;
 
 	// Keyboard mouse emulation.  Disabled by fingolfin 2004-12-18.
 	// I am keeping the rest of the code in for now, since the joystick
@@ -134,23 +119,6 @@
 	virtual bool handleJoyButtonUp(SDL_Event &ev, Common::Event &event);
 	virtual bool handleJoyAxisMotion(SDL_Event &ev, Common::Event &event);
 
-#ifdef MIXER_DOUBLE_BUFFERING
-	SDL_mutex *_soundMutex;
-	SDL_cond *_soundCond;
-	SDL_Thread *_soundThread;
-	bool _soundThreadIsRunning;
-	bool _soundThreadShouldQuit;
-
-	byte _activeSoundBuf;
-	uint _soundBufSize;
-	byte *_soundBuffers[2];
-
-	void mixerProducerThread();
-	static int SDLCALL mixerProducerThreadEntry(void *arg);
-	void initThreadedMixer(Audio::Mixer *mixer, uint bufSize);
-	void deinitThreadedMixer();
-#endif
-
 	SDL_TimerID _timerID;
 
 	virtual void fillMouseEvent(Common::Event &event, int x, int y); // overloaded by CE backend

Modified: scummvm/branches/gsoc2010-opengl/sound/mixer.cpp
===================================================================
--- scummvm/branches/gsoc2010-opengl/sound/mixer.cpp	2010-06-12 00:15:22 UTC (rev 49601)
+++ scummvm/branches/gsoc2010-opengl/sound/mixer.cpp	2010-06-12 02:54:51 UTC (rev 49602)
@@ -431,6 +431,9 @@
 	return _volumeForSoundType[type];
 }
 
+void MixerImpl::setSampleRate(uint sampleRate) {
+	_sampleRate = sampleRate;
+}
 
 #pragma mark -
 #pragma mark --- Channel implementations ---

Modified: scummvm/branches/gsoc2010-opengl/sound/mixer_intern.h
===================================================================
--- scummvm/branches/gsoc2010-opengl/sound/mixer_intern.h	2010-06-12 00:15:22 UTC (rev 49601)
+++ scummvm/branches/gsoc2010-opengl/sound/mixer_intern.h	2010-06-12 02:54:51 UTC (rev 49602)
@@ -60,7 +60,7 @@
 	OSystem *_syst;
 	Common::Mutex _mutex;
 
-	const uint _sampleRate;
+	uint _sampleRate;
 	bool _mixerReady;
 	uint32 _handleSeed;
 
@@ -127,6 +127,8 @@
 	 * their audio system has been completed.
 	 */
 	void setReady(bool ready);
+
+	void setSampleRate(uint sampleRate);
 };
 
 


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