From: Josh de Kock <[email protected]> Previously, with JACK installed, the configure script would enabled the JACK indev; this broke on Mac OS X due to a incomplete pthreads implementation. Some simple macros to map libdispatch to pthreads if on OS X.
Signed-off-by: Luca Barbato <[email protected]> --- configure | 7 ++++++- libavdevice/jack.c | 10 ++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/configure b/configure index a68a5d7..86f6ff0 100755 --- a/configure +++ b/configure @@ -1447,6 +1447,7 @@ BUILTIN_LIST=" MemoryBarrier mm_empty rdtsc + sem_timedwait sync_val_compare_and_swap " HAVE_LIST_CMDLINE=" @@ -1467,6 +1468,7 @@ HEADERS_LIST=" arpa_inet_h cdio_paranoia_h cdio_paranoia_paranoia_h + dispatch_dispatch_h dev_bktr_ioctl_bt848_h dev_bktr_ioctl_meteor_h dev_ic_bt8xx_h @@ -2290,7 +2292,8 @@ bktr_indev_deps_any="dev_bktr_ioctl_bt848_h machine_ioctl_bt848_h dev_video_bktr dv1394_indev_deps="dv1394" dv1394_indev_select="dv_demuxer" fbdev_indev_deps="linux_fb_h" -jack_indev_deps="jack_jack_h pthreads" +jack_indev_deps="jack_jack_h" +jack_indev_deps_any="sem_timedwait dispatch_dispatch_h" libcdio_indev_deps="libcdio" libdc1394_indev_deps="libdc1394" oss_indev_deps_any="soundcard_h sys_soundcard_h" @@ -3737,6 +3740,7 @@ case $target_os in enabled x86_64 && objformat="macho64" enabled_any pic shared || { check_cflags -mdynamic-no-pic && add_asflags -mdynamic-no-pic; } + check_header dispatch/dispatch.h ;; msys*) die "Native MSYS builds are discouraged, please use the MINGW environment."; @@ -4373,6 +4377,7 @@ fi check_builtin atomic_cas_ptr atomic.h "void **ptr; void *oldval, *newval; atomic_cas_ptr(ptr, oldval, newval)" check_builtin machine_rw_barrier mbarrier.h "__machine_rw_barrier()" check_builtin MemoryBarrier windows.h "MemoryBarrier()" +check_builtin sem_timedwait semaphore.h "sem_t *s; sem_init(s,0,0); sem_timedwait(s,0); sem_destroy(s)" -lpthread check_builtin sync_val_compare_and_swap "" "int *ptr; int oldval, newval; __sync_val_compare_and_swap(ptr, oldval, newval)" case "$custom_allocator" in diff --git a/libavdevice/jack.c b/libavdevice/jack.c index 0b4deee..10e93aa 100644 --- a/libavdevice/jack.c +++ b/libavdevice/jack.c @@ -34,6 +34,16 @@ #include "libavformat/internal.h" #include "timefilter.h" +#if HAVE_DISPATCH_DISPATCH_H +#include <dispatch/dispatch.h> +#define sem_t dispatch_semaphore_t +#define sem_init(psem,x,val) *psem = dispatch_semaphore_create(val) +#define sem_post(psem) dispatch_semaphore_signal(*psem) +#define sem_wait(psem) dispatch_semaphore_wait(*psem, DISPATCH_TIME_FOREVER) +#define sem_timedwait(psem, val) dispatch_semaphore_wait(*psem, dispatch_walltime(val, 0)) +#define sem_destroy(psem) dispatch_release(*psem) +#endif + /** * Size of the internal FIFO buffers as a number of audio packets */ -- 2.6.1 _______________________________________________ libav-devel mailing list [email protected] https://lists.libav.org/mailman/listinfo/libav-devel
