[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [55616] trunk/blender: Fix #33518: Jack sync doesn't work in 2.64, 2.64 or 2.65 stable versions
Sergey Sharybin
sergey.vfx at gmail.com
Wed Mar 27 08:19:55 CET 2013
Revision: 55616
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=55616
Author: nazgul
Date: 2013-03-27 07:19:54 +0000 (Wed, 27 Mar 2013)
Log Message:
-----------
Fix #33518: Jack sync doesn't work in 2.64, 2.64 or 2.65 stable versions
Added new build option WITH_JACK_DYNLOAD for CMake and
WITH_BF_JACK_DYNLOAD for SCons, which means there'll be
no build-time linking against libjack and getting symbols
from libjack will happen runtime using dlopen and dlsym
tricks.
Alternative would be to use weak linking, but it'll require
having wrapper for preloading libjack.
This new options are disabled by default and they only
intended to be used on linux. Other platforms shall not
be using this and there shall be no functional changes
on non-linux platforms at all.
Modified Paths:
--------------
trunk/blender/CMakeLists.txt
trunk/blender/build_files/buildbot/config/user-config-glibc211-i686.py
trunk/blender/build_files/buildbot/config/user-config-glibc211-x86_64.py
trunk/blender/build_files/buildbot/config/user-config-player-glibc211-i686.py
trunk/blender/build_files/buildbot/config/user-config-player-glibc211-x86_64.py
trunk/blender/build_files/cmake/macros.cmake
trunk/blender/build_files/scons/tools/Blender.py
trunk/blender/build_files/scons/tools/btools.py
trunk/blender/intern/audaspace/CMakeLists.txt
trunk/blender/intern/audaspace/SConscript
trunk/blender/intern/audaspace/intern/AUD_C-API.cpp
trunk/blender/intern/audaspace/intern/AUD_C-API.h
trunk/blender/intern/audaspace/jack/AUD_JackDevice.cpp
trunk/blender/intern/audaspace/jack/AUD_JackDevice.h
trunk/blender/source/blender/blenkernel/BKE_sound.h
trunk/blender/source/blender/blenkernel/intern/sound.c
trunk/blender/source/blender/makesrna/intern/rna_userdef.c
Added Paths:
-----------
trunk/blender/intern/audaspace/jack/AUD_JackLibrary.cpp
trunk/blender/intern/audaspace/jack/AUD_JackLibrary.h
Modified: trunk/blender/CMakeLists.txt
===================================================================
--- trunk/blender/CMakeLists.txt 2013-03-27 06:49:16 UTC (rev 55615)
+++ trunk/blender/CMakeLists.txt 2013-03-27 07:19:54 UTC (rev 55616)
@@ -229,6 +229,9 @@
option(WITH_SDL "Enable SDL for sound and joystick support" ON)
option(WITH_OPENAL "Enable OpenAL Support (http://www.openal.org)" ON)
option(WITH_JACK "Enable Jack Support (http://www.jackaudio.org)" OFF)
+if(UNIX AND NOT APPLE)
+ option(WITH_JACK_DYNLOAD "Enable runtime dynamic Jack libraries loading" OFF)
+endif()
# Compression
option(WITH_LZO "Enable fast LZO compression (used for pointcache)" ON)
@@ -2202,6 +2205,7 @@
info_cfg_option(WITH_OPENAL)
info_cfg_option(WITH_SDL)
info_cfg_option(WITH_JACK)
+ info_cfg_option(WITH_JACK_DYNLOAD)
info_cfg_option(WITH_CODEC_AVI)
info_cfg_option(WITH_CODEC_FFMPEG)
info_cfg_option(WITH_CODEC_SNDFILE)
Modified: trunk/blender/build_files/buildbot/config/user-config-glibc211-i686.py
===================================================================
--- trunk/blender/build_files/buildbot/config/user-config-glibc211-i686.py 2013-03-27 06:49:16 UTC (rev 55615)
+++ trunk/blender/build_files/buildbot/config/user-config-glibc211-i686.py 2013-03-27 07:19:54 UTC (rev 55616)
@@ -104,9 +104,8 @@
WITH_BF_STATICFFTW3 = True
# JACK
-WITH_BF_JACK = False
-WITH_BF_STATICJACK = True
-BF_JACK_LIB_STATIC = '${BF_ZLIB}/lib/libjack.a'
+WITH_BF_JACK = True
+WITH_BF_JACK_DYNLOAD = True
# Cycles
WITH_BF_CYCLES = True
Modified: trunk/blender/build_files/buildbot/config/user-config-glibc211-x86_64.py
===================================================================
--- trunk/blender/build_files/buildbot/config/user-config-glibc211-x86_64.py 2013-03-27 06:49:16 UTC (rev 55615)
+++ trunk/blender/build_files/buildbot/config/user-config-glibc211-x86_64.py 2013-03-27 07:19:54 UTC (rev 55616)
@@ -104,9 +104,8 @@
WITH_BF_STATICFFTW3 = True
# JACK
-WITH_BF_JACK = False
-WITH_BF_STATICJACK = True
-BF_JACK_LIB_STATIC = '${BF_ZLIB}/lib/libjack.a'
+WITH_BF_JACK = True
+WITH_BF_JACK_DYNLOAD = True
# Cycles
WITH_BF_CYCLES = True
Modified: trunk/blender/build_files/buildbot/config/user-config-player-glibc211-i686.py
===================================================================
--- trunk/blender/build_files/buildbot/config/user-config-player-glibc211-i686.py 2013-03-27 06:49:16 UTC (rev 55615)
+++ trunk/blender/build_files/buildbot/config/user-config-player-glibc211-i686.py 2013-03-27 07:19:54 UTC (rev 55616)
@@ -103,9 +103,8 @@
BF_BOOST_LIBPATH = '${BF_BOOST}/lib'
# JACK
-WITH_BF_JACK = False
-WITH_BF_STATICJACK = True
-BF_JACK_LIB_STATIC = '${BF_ZLIB}/lib/libjack.a'
+WITH_BF_JACK = True
+WITH_BF_JACK_DYNLOAD = True
# Motion Tracking
WITH_BF_LIBMV = False
Modified: trunk/blender/build_files/buildbot/config/user-config-player-glibc211-x86_64.py
===================================================================
--- trunk/blender/build_files/buildbot/config/user-config-player-glibc211-x86_64.py 2013-03-27 06:49:16 UTC (rev 55615)
+++ trunk/blender/build_files/buildbot/config/user-config-player-glibc211-x86_64.py 2013-03-27 07:19:54 UTC (rev 55616)
@@ -103,9 +103,8 @@
BF_BOOST_LIBPATH = '${BF_BOOST}/lib'
# JACK
-WITH_BF_JACK = False
-WITH_BF_STATICJACK = True
-BF_JACK_LIB_STATIC = '${BF_ZLIB}/lib/libjack.a'
+WITH_BF_JACK = True
+WITH_BF_JACK_DYNLOAD = True
# Motion Tracking
WITH_BF_LIBMV = False
Modified: trunk/blender/build_files/cmake/macros.cmake
===================================================================
--- trunk/blender/build_files/cmake/macros.cmake 2013-03-27 06:49:16 UTC (rev 55615)
+++ trunk/blender/build_files/cmake/macros.cmake 2013-03-27 07:19:54 UTC (rev 55616)
@@ -228,7 +228,7 @@
if(WITH_OPENAL)
link_directories(${OPENAL_LIBPATH})
endif()
- if(WITH_JACK)
+ if(WITH_JACK AND NOT WITH_JACK_DYNLOAD)
link_directories(${JACK_LIBPATH})
endif()
if(WITH_CODEC_SNDFILE)
@@ -293,7 +293,7 @@
if(WITH_FFTW3)
target_link_libraries(${target} ${FFTW3_LIBRARIES})
endif()
- if(WITH_JACK)
+ if(WITH_JACK AND NOT WITH_JACK_DYNLOAD)
target_link_libraries(${target} ${JACK_LIBRARIES})
endif()
if(WITH_CODEC_SNDFILE)
Modified: trunk/blender/build_files/scons/tools/Blender.py
===================================================================
--- trunk/blender/build_files/scons/tools/Blender.py 2013-03-27 06:49:16 UTC (rev 55615)
+++ trunk/blender/build_files/scons/tools/Blender.py 2013-03-27 07:19:54 UTC (rev 55616)
@@ -147,10 +147,9 @@
libincs += Split(lenv['BF_PYTHON_LIBPATH'])
if lenv['WITH_BF_SDL']:
libincs += Split(lenv['BF_SDL_LIBPATH'])
- if lenv['WITH_BF_JACK']:
+ if lenv['WITH_BF_JACK'] and not lenv['WITH_BF_JACK_DYNLOAD']:
libincs += Split(lenv['BF_JACK_LIBPATH'])
- if lenv['WITH_BF_STATICJACK']:
- statlibs += Split(lenv['BF_JACK_LIB_STATIC'])
+ statlibs += Split(lenv['BF_JACK_LIB_STATIC'])
if lenv['WITH_BF_SNDFILE']:
libincs += Split(lenv['BF_SNDFILE_LIBPATH'])
if lenv['WITH_BF_OPENEXR']:
@@ -292,7 +291,7 @@
syslibs += Split(lenv['BF_FFMPEG_LIB'])
if lenv['WITH_BF_OGG']:
syslibs += Split(lenv['BF_OGG_LIB'])
- if lenv['WITH_BF_JACK'] and not lenv['WITH_BF_STATICJACK']:
+ if lenv['WITH_BF_JACK'] and not lenv['WITH_BF_JACK_DYNLOAD']:
syslibs += Split(lenv['BF_JACK_LIB'])
if lenv['WITH_BF_SNDFILE'] and not lenv['WITH_BF_STATICSNDFILE']:
syslibs += Split(lenv['BF_SNDFILE_LIB'])
Modified: trunk/blender/build_files/scons/tools/btools.py
===================================================================
--- trunk/blender/build_files/scons/tools/btools.py 2013-03-27 06:49:16 UTC (rev 55615)
+++ trunk/blender/build_files/scons/tools/btools.py 2013-03-27 07:19:54 UTC (rev 55616)
@@ -99,7 +99,7 @@
'WITH_BF_PYTHON', 'WITH_BF_PYTHON_SAFETY', 'BF_PYTHON', 'BF_PYTHON_VERSION', 'BF_PYTHON_INC', 'BF_PYTHON_BINARY', 'BF_PYTHON_LIB', 'BF_PYTHON_LIBPATH', 'WITH_BF_STATICPYTHON', 'WITH_OSX_STATICPYTHON', 'BF_PYTHON_LIB_STATIC', 'BF_PYTHON_DLL', 'BF_PYTHON_ABI_FLAGS',
'WITH_BF_OPENAL', 'BF_OPENAL', 'BF_OPENAL_INC', 'BF_OPENAL_LIB', 'BF_OPENAL_LIBPATH', 'WITH_BF_STATICOPENAL', 'BF_OPENAL_LIB_STATIC',
'WITH_BF_SDL', 'BF_SDL', 'BF_SDL_INC', 'BF_SDL_LIB', 'BF_SDL_LIBPATH',
- 'WITH_BF_JACK', 'BF_JACK', 'BF_JACK_INC', 'BF_JACK_LIB', 'BF_JACK_LIBPATH', 'WITH_BF_STATICJACK', 'BF_JACK_LIB_STATIC',
+ 'WITH_BF_JACK', 'BF_JACK', 'BF_JACK_INC', 'BF_JACK_LIB', 'BF_JACK_LIBPATH', 'WITH_BF_JACK_DYNLOAD',
'WITH_BF_SNDFILE', 'BF_SNDFILE', 'BF_SNDFILE_INC', 'BF_SNDFILE_LIB', 'BF_SNDFILE_LIBPATH', 'WITH_BF_STATICSNDFILE', 'BF_SNDFILE_LIB_STATIC',
'BF_PTHREADS', 'BF_PTHREADS_INC', 'BF_PTHREADS_LIB', 'BF_PTHREADS_LIBPATH',
'WITH_BF_OPENEXR', 'BF_OPENEXR', 'BF_OPENEXR_INC', 'BF_OPENEXR_LIB', 'BF_OPENEXR_LIBPATH', 'WITH_BF_STATICOPENEXR', 'BF_OPENEXR_LIB_STATIC',
@@ -288,12 +288,11 @@
('BF_SDL_LIBPATH', 'SDL library path', ''),
(BoolVariable('WITH_BF_JACK', 'Enable jack support if true', True)),
- (BoolVariable('WITH_BF_STATICJACK', 'Staticly link to jack', False)),
('BF_JACK', 'jack base path', ''),
('BF_JACK_INC', 'jack include path', ''),
('BF_JACK_LIB', 'jack library', ''),
('BF_JACK_LIBPATH', 'jack library path', ''),
- ('BF_JACK_LIB_STATIC', 'jack static library', ''),
+ (BoolVariable('WITH_BF_JACK_DYNLOAD', 'Enable runtime dynamic Jack libraries loading (works only on Linux)', False)),
(BoolVariable('WITH_BF_SNDFILE', 'Enable sndfile support if true', True)),
('BF_SNDFILE', 'sndfile base path', ''),
Modified: trunk/blender/intern/audaspace/CMakeLists.txt
===================================================================
--- trunk/blender/intern/audaspace/CMakeLists.txt 2013-03-27 06:49:16 UTC (rev 55615)
+++ trunk/blender/intern/audaspace/CMakeLists.txt 2013-03-27 07:19:54 UTC (rev 55616)
@@ -253,9 +253,15 @@
)
list(APPEND SRC
jack/AUD_JackDevice.cpp
+ jack/AUD_JackLibrary.cpp
jack/AUD_JackDevice.h
+ jack/AUD_JackLibrary.h
)
+
+ if(WITH_JACK_DYNLOAD)
+ add_definitions(-DWITH_JACK_DYNLOAD)
+ endif()
endif()
if(WITH_CODEC_SNDFILE)
Modified: trunk/blender/intern/audaspace/SConscript
===================================================================
--- trunk/blender/intern/audaspace/SConscript 2013-03-27 06:49:16 UTC (rev 55615)
+++ trunk/blender/intern/audaspace/SConscript 2013-03-27 07:19:54 UTC (rev 55616)
@@ -46,6 +46,8 @@
sources += env.Glob('jack/*.cpp')
incs += ' jack ' + env['BF_JACK_INC']
defs.append('WITH_JACK')
+ if env['WITH_BF_JACK_DYNLOAD']:
+ defs.append('WITH_JACK_DYNLOAD')
if env['WITH_BF_SNDFILE']:
sources += env.Glob('sndfile/*.cpp')
Modified: trunk/blender/intern/audaspace/intern/AUD_C-API.cpp
===================================================================
--- trunk/blender/intern/audaspace/intern/AUD_C-API.cpp 2013-03-27 06:49:16 UTC (rev 55615)
+++ trunk/blender/intern/audaspace/intern/AUD_C-API.cpp 2013-03-27 07:19:54 UTC (rev 55616)
@@ -79,6 +79,7 @@
#ifdef WITH_JACK
#include "AUD_JackDevice.h"
+#include "AUD_JackLibrary.h"
#endif
@@ -110,8 +111,18 @@
#ifdef WITH_FFMPEG
av_register_all();
#endif
+#ifdef WITH_JACK
+ AUD_jack_init();
+#endif
}
+void AUD_exitOnce()
+{
+#ifdef WITH_JACK
+ AUD_jack_exit();
+#endif
+}
+
int AUD_init(AUD_DeviceType device, AUD_DeviceSpecs specs, int buffersize)
{
boost::shared_ptr<AUD_IDevice> dev;
@@ -144,14 +155,16 @@
// No break, fall through to default, to return false
}
else
- {
#endif
+ if (!AUD_jack_supported()) {
+ printf("Warning: Jack cllient not installed\n");
+ // No break, fall through to default, to return false
+ }
+ else {
dev = boost::shared_ptr<AUD_IDevice>(new AUD_JackDevice("Blender", specs, buffersize));
break;
-#ifdef __APPLE__
}
#endif
-#endif
default:
return false;
}
@@ -1262,3 +1275,12 @@
{
return AUD_3ddevice;
}
+
+int AUD_isJackSupported(void)
+{
+#ifdef WITH_JACK
+ return AUD_jack_supported();
+#else
+ return 0;
+#endif
+}
Modified: trunk/blender/intern/audaspace/intern/AUD_C-API.h
===================================================================
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list