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
diff options
context:
space:
mode:
Diffstat (limited to 'intern/audaspace')
-rw-r--r--intern/audaspace/CMakeLists.txt62
-rw-r--r--intern/audaspace/OpenAL/AUD_OpenALDevice.cpp18
-rw-r--r--intern/audaspace/OpenAL/AUD_OpenALDevice.h2
3 files changed, 56 insertions, 26 deletions
diff --git a/intern/audaspace/CMakeLists.txt b/intern/audaspace/CMakeLists.txt
index ab88c9ecabd..7eef13b103b 100644
--- a/intern/audaspace/CMakeLists.txt
+++ b/intern/audaspace/CMakeLists.txt
@@ -22,9 +22,9 @@
set(INC
.
- intern
FX
SRC
+ intern
../ffmpeg
)
@@ -159,8 +159,12 @@ set(SRC
if(WITH_CODEC_FFMPEG)
add_definitions(-DWITH_FFMPEG)
- list(APPEND INC ffmpeg)
- list(APPEND INC_SYS ${FFMPEG_INCLUDE_DIRS})
+ list(APPEND INC
+ ffmpeg
+ )
+ list(APPEND INC_SYS
+ ${FFMPEG_INCLUDE_DIRS}
+ )
list(APPEND SRC
ffmpeg/AUD_FFMPEGFactory.cpp
ffmpeg/AUD_FFMPEGReader.cpp
@@ -172,8 +176,12 @@ endif()
if(WITH_SDL)
add_definitions(-DWITH_SDL)
- list(APPEND INC SDL)
- list(APPEND INC_SYS ${SDL_INCLUDE_DIR})
+ list(APPEND INC
+ SDL
+ )
+ list(APPEND INC_SYS
+ ${SDL_INCLUDE_DIR}
+ )
list(APPEND SRC
SDL/AUD_SDLDevice.cpp
@@ -183,8 +191,12 @@ endif()
if(WITH_OPENAL)
add_definitions(-DWITH_OPENAL)
- list(APPEND INC OpenAL)
- list(APPEND INC_SYS ${OPENAL_INCLUDE_DIR})
+ list(APPEND INC
+ OpenAL
+ )
+ list(APPEND INC_SYS
+ ${OPENAL_INCLUDE_DIR}
+ )
list(APPEND SRC
OpenAL/AUD_OpenALDevice.cpp
@@ -194,8 +206,12 @@ endif()
if(WITH_JACK)
add_definitions(-DWITH_JACK)
- list(APPEND INC jack)
- list(APPEND INC_SYS ${JACK_INCLUDE_DIRS})
+ list(APPEND INC
+ jack
+ )
+ list(APPEND INC_SYS
+ ${JACK_INCLUDE_DIRS}
+ )
list(APPEND SRC
jack/AUD_JackDevice.cpp
@@ -205,8 +221,12 @@ endif()
if(WITH_CODEC_SNDFILE)
add_definitions(-DWITH_SNDFILE)
- list(APPEND INC sndfile)
- list(APPEND INC_SYS ${SNDFILE_INCLUDE_DIRS})
+ list(APPEND INC
+ sndfile
+ )
+ list(APPEND INC_SYS
+ ${SNDFILE_INCLUDE_DIRS}
+ )
list(APPEND SRC
sndfile/AUD_SndFileFactory.cpp
sndfile/AUD_SndFileReader.cpp
@@ -218,7 +238,9 @@ endif()
if(WITH_SAMPLERATE)
add_definitions(-DWITH_SAMPLERATE)
- list(APPEND INC_SYS ${SAMPLERATE_INCLUDE_DIRS})
+ list(APPEND INC_SYS
+ ${SAMPLERATE_INCLUDE_DIRS}
+ )
list(APPEND SRC
SRC/AUD_SRCResampleFactory.cpp
SRC/AUD_SRCResampleReader.cpp
@@ -230,8 +252,12 @@ endif()
if(WITH_FFTW3 AND FALSE)
add_definitions(-DWITH_FFTW3)
- list(APPEND INC fftw)
- list(APPEND INC_SYS ${FFTW3_INCLUDE_DIRS})
+ list(APPEND INC
+ fftw
+ )
+ list(APPEND INC_SYS
+ ${FFTW3_INCLUDE_DIRS}
+ )
list(APPEND SRC
fftw/AUD_BandPassFactory.cpp
fftw/AUD_BandPassReader.cpp
@@ -242,8 +268,12 @@ if(WITH_FFTW3 AND FALSE)
endif()
if(WITH_PYTHON)
- list(APPEND INC Python)
- list(APPEND INC_SYS ${PYTHON_INCLUDE_DIRS})
+ list(APPEND INC
+ Python
+ )
+ list(APPEND INC_SYS
+ ${PYTHON_INCLUDE_DIRS}
+ )
list(APPEND SRC
Python/AUD_PyAPI.cpp
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.