Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/intern
diff options
context:
space:
mode:
authorNathan Letwory <nathan@letworyinteractive.com>2011-07-27 11:42:53 +0400
committerNathan Letwory <nathan@letworyinteractive.com>2011-07-27 11:42:53 +0400
commit73a9ce7ec04bd1170b292c8f2c83a8c5c10a95ad (patch)
treecfc0637d68339e9b4cd45de49aa30d585748717b /intern
parentf54068719f8f1965ffd3584f9f8ad53b3c7f9602 (diff)
svn merge -r38558:38752 https://svn.blender.org/svnroot/bf-blender/trunk/blender .
Diffstat (limited to 'intern')
-rw-r--r--intern/audaspace/OpenAL/AUD_OpenALDevice.cpp18
-rw-r--r--intern/audaspace/OpenAL/AUD_OpenALDevice.h2
2 files changed, 10 insertions, 10 deletions
diff --git a/intern/audaspace/OpenAL/AUD_OpenALDevice.cpp b/intern/audaspace/OpenAL/AUD_OpenALDevice.cpp
index b9e30bbf62a..71e7b7677e8 100644
--- a/intern/audaspace/OpenAL/AUD_OpenALDevice.cpp
+++ b/intern/audaspace/OpenAL/AUD_OpenALDevice.cpp
@@ -105,12 +105,15 @@ void* AUD_openalRunThread(void* device)
return NULL;
}
-void AUD_OpenALDevice::start()
+void AUD_OpenALDevice::start(bool join)
{
lock();
if(!m_playing)
{
+ if(join)
+ pthread_join(m_thread, NULL);
+
pthread_attr_t attr;
pthread_attr_init(&attr);
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE);
@@ -271,8 +274,8 @@ void AUD_OpenALDevice::updateStreams()
// stop thread
if(m_playingSounds->empty() || (cerr != ALC_NO_ERROR))
{
- unlock();
m_playing = false;
+ unlock();
pthread_exit(NULL);
}
@@ -366,6 +369,8 @@ AUD_OpenALDevice::AUD_OpenALDevice(AUD_DeviceSpecs specs, int buffersize)
pthread_mutex_init(&m_mutex, &attr);
pthread_mutexattr_destroy(&attr);
+
+ start(false);
}
AUD_OpenALDevice::~AUD_OpenALDevice()
@@ -414,13 +419,8 @@ AUD_OpenALDevice::~AUD_OpenALDevice()
alcProcessContext(m_context);
// wait for the thread to stop
- if(m_playing)
- {
- unlock();
- pthread_join(m_thread, NULL);
- }
- else
- unlock();
+ unlock();
+ pthread_join(m_thread, NULL);
delete m_playingSounds;
delete m_pausedSounds;
diff --git a/intern/audaspace/OpenAL/AUD_OpenALDevice.h b/intern/audaspace/OpenAL/AUD_OpenALDevice.h
index 3bbbe85d7e6..127f69beca8 100644
--- a/intern/audaspace/OpenAL/AUD_OpenALDevice.h
+++ b/intern/audaspace/OpenAL/AUD_OpenALDevice.h
@@ -106,7 +106,7 @@ private:
/**
* Starts the streaming thread.
*/
- void start();
+ void start(bool join = true);
/**
* Checks if a handle is valid.