mirror of
https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
synced 2025-11-09 13:29:59 -05:00
Assorted minor Windows compatibility fixes for recent code updates.
git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/lennart@1928 fefdeb5f-60dc-0310-8127-8f9354f1896f
This commit is contained in:
parent
ce74146a81
commit
cef6563273
15 changed files with 98 additions and 39 deletions
|
|
@ -219,6 +219,7 @@ AC_CHECK_HEADERS([windows.h winsock2.h ws2tcpip.h])
|
||||||
# Other
|
# Other
|
||||||
AC_CHECK_HEADERS([sys/ioctl.h])
|
AC_CHECK_HEADERS([sys/ioctl.h])
|
||||||
AC_CHECK_HEADERS([byteswap.h])
|
AC_CHECK_HEADERS([byteswap.h])
|
||||||
|
AC_CHECK_HEADERS([sys/syscall.h])
|
||||||
|
|
||||||
#### Typdefs, structures, etc. ####
|
#### Typdefs, structures, etc. ####
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,22 +2,22 @@
|
||||||
/* config-h.in. Generated from configure.ac by autoheader. */
|
/* config-h.in. Generated from configure.ac by autoheader. */
|
||||||
|
|
||||||
/* Define to 1 if you have the `argz_append' function. */
|
/* Define to 1 if you have the `argz_append' function. */
|
||||||
#define HAVE_ARGZ_APPEND 1
|
/* #undef HAVE_ARGZ_APPEND */
|
||||||
|
|
||||||
/* Define to 1 if you have the `argz_create_sep' function. */
|
/* Define to 1 if you have the `argz_create_sep' function. */
|
||||||
#define HAVE_ARGZ_CREATE_SEP 1
|
/* #undef HAVE_ARGZ_CREATE_SEP */
|
||||||
|
|
||||||
/* Define to 1 if you have the <argz.h> header file. */
|
/* Define to 1 if you have the <argz.h> header file. */
|
||||||
#define HAVE_ARGZ_H 1
|
/* #undef HAVE_ARGZ_H */
|
||||||
|
|
||||||
/* Define to 1 if you have the `argz_insert' function. */
|
/* Define to 1 if you have the `argz_insert' function. */
|
||||||
#define HAVE_ARGZ_INSERT 1
|
/* #undef HAVE_ARGZ_INSERT */
|
||||||
|
|
||||||
/* Define to 1 if you have the `argz_next' function. */
|
/* Define to 1 if you have the `argz_next' function. */
|
||||||
#define HAVE_ARGZ_NEXT 1
|
/* #undef HAVE_ARGZ_NEXT */
|
||||||
|
|
||||||
/* Define to 1 if you have the `argz_stringify' function. */
|
/* Define to 1 if you have the `argz_stringify' function. */
|
||||||
#define HAVE_ARGZ_STRINGIFY 1
|
/* #undef HAVE_ARGZ_STRINGIFY */
|
||||||
|
|
||||||
/* Define to 1 if you have the <assert.h> header file. */
|
/* Define to 1 if you have the <assert.h> header file. */
|
||||||
#define HAVE_ASSERT_H 1
|
#define HAVE_ASSERT_H 1
|
||||||
|
|
@ -42,10 +42,10 @@
|
||||||
/* #undef HAVE_DLD_H */
|
/* #undef HAVE_DLD_H */
|
||||||
|
|
||||||
/* Define to 1 if you have the `dlerror' function. */
|
/* Define to 1 if you have the `dlerror' function. */
|
||||||
#define HAVE_DLERROR 1
|
/* #undef HAVE_DLERROR */
|
||||||
|
|
||||||
/* Define to 1 if you have the <dlfcn.h> header file. */
|
/* Define to 1 if you have the <dlfcn.h> header file. */
|
||||||
#define HAVE_DLFCN_H 1
|
/* #undef HAVE_DLFCN_H */
|
||||||
|
|
||||||
/* Define to 1 if you have the <dl.h> header file. */
|
/* Define to 1 if you have the <dl.h> header file. */
|
||||||
/* #undef HAVE_DL_H */
|
/* #undef HAVE_DL_H */
|
||||||
|
|
@ -57,7 +57,7 @@
|
||||||
#define HAVE_ERRNO_H 1
|
#define HAVE_ERRNO_H 1
|
||||||
|
|
||||||
/* Define to 1 if the system has the type `error_t'. */
|
/* Define to 1 if the system has the type `error_t'. */
|
||||||
#define HAVE_ERROR_T 1
|
/* #undef HAVE_ERROR_T */
|
||||||
|
|
||||||
/* Define to 1 if you have the `index' function. */
|
/* Define to 1 if you have the `index' function. */
|
||||||
/* #undef HAVE_INDEX */
|
/* #undef HAVE_INDEX */
|
||||||
|
|
@ -66,7 +66,7 @@
|
||||||
#define HAVE_INTTYPES_H 1
|
#define HAVE_INTTYPES_H 1
|
||||||
|
|
||||||
/* Define if you have the libdl library or equivalent. */
|
/* Define if you have the libdl library or equivalent. */
|
||||||
#define HAVE_LIBDL 1
|
/* #undef HAVE_LIBDL */
|
||||||
|
|
||||||
/* Define to 1 if you have the <mach-o/dyld.h> header file. */
|
/* Define to 1 if you have the <mach-o/dyld.h> header file. */
|
||||||
/* #undef HAVE_MACH_O_DYLD_H */
|
/* #undef HAVE_MACH_O_DYLD_H */
|
||||||
|
|
@ -146,7 +146,7 @@
|
||||||
#define HAVE_UNISTD_H 1
|
#define HAVE_UNISTD_H 1
|
||||||
|
|
||||||
/* Define if the OS needs help to load dependent libraries for dlopen(). */
|
/* Define if the OS needs help to load dependent libraries for dlopen(). */
|
||||||
/* #undef LTDL_DLOPEN_DEPLIBS */
|
#define LTDL_DLOPEN_DEPLIBS 1
|
||||||
|
|
||||||
/* Define to the sub-directory in which libtool stores uninstalled libraries.
|
/* Define to the sub-directory in which libtool stores uninstalled libraries.
|
||||||
*/
|
*/
|
||||||
|
|
@ -154,13 +154,13 @@
|
||||||
|
|
||||||
/* Define to the name of the environment variable that determines the dynamic
|
/* Define to the name of the environment variable that determines the dynamic
|
||||||
library search path. */
|
library search path. */
|
||||||
#define LTDL_SHLIBPATH_VAR "LD_LIBRARY_PATH"
|
#define LTDL_SHLIBPATH_VAR "PATH"
|
||||||
|
|
||||||
/* Define to the extension used for shared libraries, say, ".so". */
|
/* Define to the extension used for shared libraries, say, ".so". */
|
||||||
#define LTDL_SHLIB_EXT ".so"
|
#define LTDL_SHLIB_EXT ".dll"
|
||||||
|
|
||||||
/* Define to the system default library search path. */
|
/* Define to the system default library search path. */
|
||||||
#define LTDL_SYSSEARCHPATH "/lib:/usr/lib:/usr/lib/atlas:/usr/local/lib:/lib/i486-linux-gnu:/usr/lib/i486-linux-gnu:/usr/local/lib"
|
#define LTDL_SYSSEARCHPATH "/lib:/usr/lib"
|
||||||
|
|
||||||
/* Define if dlsym() requires a leading underscore in symbol names. */
|
/* Define if dlsym() requires a leading underscore in symbol names. */
|
||||||
/* #undef NEED_USCORE */
|
/* #undef NEED_USCORE */
|
||||||
|
|
@ -187,7 +187,7 @@
|
||||||
/* #undef const */
|
/* #undef const */
|
||||||
|
|
||||||
/* Define to a type to use for `error_t' if it is not otherwise available. */
|
/* Define to a type to use for `error_t' if it is not otherwise available. */
|
||||||
/* #undef error_t */
|
#define error_t int
|
||||||
|
|
||||||
/* Define to `__inline__' or `__inline' if that's what the C compiler
|
/* Define to `__inline__' or `__inline' if that's what the C compiler
|
||||||
calls it, or to nothing if 'inline' is not supported under any name. */
|
calls it, or to nothing if 'inline' is not supported under any name. */
|
||||||
|
|
|
||||||
|
|
@ -78,8 +78,8 @@ endif
|
||||||
if OS_IS_WIN32
|
if OS_IS_WIN32
|
||||||
PA_THREAD_OBJS = \
|
PA_THREAD_OBJS = \
|
||||||
pulsecore/mutex-win32.c pulsecore/mutex.h \
|
pulsecore/mutex-win32.c pulsecore/mutex.h \
|
||||||
pulsecore/thread-win32.c pulsecore/thread.h
|
pulsecore/thread-win32.c pulsecore/thread.h \
|
||||||
# pulsecore/semaphore-win32.c pulsecore/semaphore.h
|
pulsecore/semaphore-win32.c pulsecore/semaphore.h
|
||||||
else
|
else
|
||||||
PA_THREAD_OBJS = \
|
PA_THREAD_OBJS = \
|
||||||
pulsecore/mutex-posix.c pulsecore/mutex.h \
|
pulsecore/mutex-posix.c pulsecore/mutex.h \
|
||||||
|
|
|
||||||
|
|
@ -71,6 +71,10 @@ static int generate(int fd, void *ret_data, size_t length) {
|
||||||
#define O_BINARY 0
|
#define O_BINARY 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef O_NOCTTY
|
||||||
|
#define O_NOCTTY 0
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Load an euthorization cookie from file fn and store it in data. If
|
/* Load an euthorization cookie from file fn and store it in data. If
|
||||||
* the cookie file doesn't exist, create it */
|
* the cookie file doesn't exist, create it */
|
||||||
static int load(const char *fn, void *data, size_t length) {
|
static int load(const char *fn, void *data, size_t length) {
|
||||||
|
|
|
||||||
|
|
@ -653,13 +653,21 @@ const char *pa_sig2str(int sig) {
|
||||||
case SIGHUP: return "SIGHUP";
|
case SIGHUP: return "SIGHUP";
|
||||||
#endif
|
#endif
|
||||||
case SIGINT: return "SIGINT";
|
case SIGINT: return "SIGINT";
|
||||||
|
#ifdef SIGQUIT
|
||||||
case SIGQUIT: return "SIGQUIT";
|
case SIGQUIT: return "SIGQUIT";
|
||||||
|
#endif
|
||||||
case SIGILL: return "SIGULL";
|
case SIGILL: return "SIGULL";
|
||||||
|
#ifdef SIGTRAP
|
||||||
case SIGTRAP: return "SIGTRAP";
|
case SIGTRAP: return "SIGTRAP";
|
||||||
|
#endif
|
||||||
case SIGABRT: return "SIGABRT";
|
case SIGABRT: return "SIGABRT";
|
||||||
|
#ifdef SIGBUS
|
||||||
case SIGBUS: return "SIGBUS";
|
case SIGBUS: return "SIGBUS";
|
||||||
|
#endif
|
||||||
case SIGFPE: return "SIGFPE";
|
case SIGFPE: return "SIGFPE";
|
||||||
|
#ifdef SIGKILL
|
||||||
case SIGKILL: return "SIGKILL";
|
case SIGKILL: return "SIGKILL";
|
||||||
|
#endif
|
||||||
#ifdef SIGUSR1
|
#ifdef SIGUSR1
|
||||||
case SIGUSR1: return "SIGUSR1";
|
case SIGUSR1: return "SIGUSR1";
|
||||||
#endif
|
#endif
|
||||||
|
|
@ -670,30 +678,58 @@ const char *pa_sig2str(int sig) {
|
||||||
#ifdef SIGPIPE
|
#ifdef SIGPIPE
|
||||||
case SIGPIPE: return "SIGPIPE";
|
case SIGPIPE: return "SIGPIPE";
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef SIGALRM
|
||||||
case SIGALRM: return "SIGALRM";
|
case SIGALRM: return "SIGALRM";
|
||||||
|
#endif
|
||||||
case SIGTERM: return "SIGTERM";
|
case SIGTERM: return "SIGTERM";
|
||||||
|
#ifdef SIGSTKFLT
|
||||||
case SIGSTKFLT: return "SIGSTKFLT";
|
case SIGSTKFLT: return "SIGSTKFLT";
|
||||||
|
#endif
|
||||||
#ifdef SIGCHLD
|
#ifdef SIGCHLD
|
||||||
case SIGCHLD: return "SIGCHLD";
|
case SIGCHLD: return "SIGCHLD";
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef SIGCONT
|
||||||
case SIGCONT: return "SIGCONT";
|
case SIGCONT: return "SIGCONT";
|
||||||
|
#endif
|
||||||
|
#ifdef SIGSTOP
|
||||||
case SIGSTOP: return "SIGSTOP";
|
case SIGSTOP: return "SIGSTOP";
|
||||||
|
#endif
|
||||||
|
#ifdef SIGTSTP
|
||||||
case SIGTSTP: return "SIGTSTP";
|
case SIGTSTP: return "SIGTSTP";
|
||||||
|
#endif
|
||||||
|
#ifdef SIGTTIN
|
||||||
case SIGTTIN: return "SIGTTIN";
|
case SIGTTIN: return "SIGTTIN";
|
||||||
|
#endif
|
||||||
|
#ifdef SIGTTOU
|
||||||
case SIGTTOU: return "SIGTTOU";
|
case SIGTTOU: return "SIGTTOU";
|
||||||
|
#endif
|
||||||
|
#ifdef SIGURG
|
||||||
case SIGURG: return "SIGURG";
|
case SIGURG: return "SIGURG";
|
||||||
|
#endif
|
||||||
#ifdef SIGXCPU
|
#ifdef SIGXCPU
|
||||||
case SIGXCPU: return "SIGXCPU";
|
case SIGXCPU: return "SIGXCPU";
|
||||||
#endif
|
#endif
|
||||||
#ifdef SIGXFSZ
|
#ifdef SIGXFSZ
|
||||||
case SIGXFSZ: return "SIGXFSZ";
|
case SIGXFSZ: return "SIGXFSZ";
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef SIGVTALRM
|
||||||
case SIGVTALRM: return "SIGVTALRM";
|
case SIGVTALRM: return "SIGVTALRM";
|
||||||
|
#endif
|
||||||
|
#ifdef SIGPROF
|
||||||
case SIGPROF: return "SIGPROF";
|
case SIGPROF: return "SIGPROF";
|
||||||
|
#endif
|
||||||
|
#ifdef SIGWINCH
|
||||||
case SIGWINCH: return "SIGWINCH";
|
case SIGWINCH: return "SIGWINCH";
|
||||||
|
#endif
|
||||||
|
#ifdef SIGIO
|
||||||
case SIGIO: return "SIGIO";
|
case SIGIO: return "SIGIO";
|
||||||
|
#endif
|
||||||
|
#ifdef SIGPWR
|
||||||
case SIGPWR: return "SIGPWR";
|
case SIGPWR: return "SIGPWR";
|
||||||
|
#endif
|
||||||
|
#ifdef SIGSYS
|
||||||
case SIGSYS: return "SIGSYS";
|
case SIGSYS: return "SIGSYS";
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef SIGRTMIN
|
#ifdef SIGRTMIN
|
||||||
|
|
@ -943,7 +979,10 @@ int pa_lock_lockfile(const char *fn) {
|
||||||
for (;;) {
|
for (;;) {
|
||||||
struct stat st;
|
struct stat st;
|
||||||
|
|
||||||
if ((fd = open(fn, O_CREAT|O_RDWR|O_NOCTTY
|
if ((fd = open(fn, O_CREAT|O_RDWR
|
||||||
|
#ifdef O_NOCTTY
|
||||||
|
|O_NOCTTY
|
||||||
|
#endif
|
||||||
#ifdef O_NOFOLLOW
|
#ifdef O_NOFOLLOW
|
||||||
|O_NOFOLLOW
|
|O_NOFOLLOW
|
||||||
#endif
|
#endif
|
||||||
|
|
@ -1431,6 +1470,7 @@ void *pa_will_need(const void *p, size_t l) {
|
||||||
|
|
||||||
pa_log_debug("posix_madvise() failed (or doesn't exist), trying mlock(): %s", pa_cstrerror(r));
|
pa_log_debug("posix_madvise() failed (or doesn't exist), trying mlock(): %s", pa_cstrerror(r));
|
||||||
|
|
||||||
|
#ifdef HAVE_MLOCK
|
||||||
while (size > 0 && bs > 0) {
|
while (size > 0 && bs > 0) {
|
||||||
|
|
||||||
if (bs > size)
|
if (bs > size)
|
||||||
|
|
@ -1446,9 +1486,10 @@ void *pa_will_need(const void *p, size_t l) {
|
||||||
a = (const uint8_t*) a + bs;
|
a = (const uint8_t*) a + bs;
|
||||||
size -= bs;
|
size -= bs;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
if (bs <= 0)
|
if (bs <= 0)
|
||||||
pa_log_debug("mlock() failed too, giving up: %s", pa_cstrerror(errno));
|
pa_log_debug("mlock() failed too (or doesn't exist), giving up: %s", pa_cstrerror(errno));
|
||||||
else
|
else
|
||||||
pa_log_debug("mlock() worked fine!");
|
pa_log_debug("mlock() worked fine!");
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,10 @@
|
||||||
#include <config.h>
|
#include <config.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef HAVE_SYS_SYSCALL_H
|
||||||
#include <sys/syscall.h>
|
#include <sys/syscall.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
|
|
||||||
|
|
@ -36,6 +39,10 @@
|
||||||
#include <pulsecore/core-util.h>
|
#include <pulsecore/core-util.h>
|
||||||
#include <pulse/xmalloc.h>
|
#include <pulse/xmalloc.h>
|
||||||
|
|
||||||
|
#ifndef HAVE_PIPE
|
||||||
|
#include <pulsecore/pipe.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef __linux__
|
#ifdef __linux__
|
||||||
|
|
||||||
#if !defined(__NR_eventfd) && defined(__i386__)
|
#if !defined(__NR_eventfd) && defined(__i386__)
|
||||||
|
|
|
||||||
|
|
@ -32,6 +32,7 @@
|
||||||
|
|
||||||
#include <pulse/xmalloc.h>
|
#include <pulse/xmalloc.h>
|
||||||
|
|
||||||
|
#include <pulsecore/winsock.h>
|
||||||
#include <pulsecore/core-error.h>
|
#include <pulsecore/core-error.h>
|
||||||
#include <pulsecore/log.h>
|
#include <pulsecore/log.h>
|
||||||
#include <pulsecore/macro.h>
|
#include <pulsecore/macro.h>
|
||||||
|
|
|
||||||
|
|
@ -40,7 +40,7 @@ struct pa_cond {
|
||||||
pa_hashmap *wait_events;
|
pa_hashmap *wait_events;
|
||||||
};
|
};
|
||||||
|
|
||||||
pa_mutex* pa_mutex_new(int recursive) {
|
pa_mutex* pa_mutex_new(pa_bool_t recursive, pa_bool_t inherit_priority) {
|
||||||
pa_mutex *m;
|
pa_mutex *m;
|
||||||
|
|
||||||
m = pa_xnew(pa_mutex, 1);
|
m = pa_xnew(pa_mutex, 1);
|
||||||
|
|
|
||||||
|
|
@ -25,8 +25,6 @@
|
||||||
#include <config.h>
|
#include <config.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <pthread.h>
|
|
||||||
|
|
||||||
#include <pulsecore/macro.h>
|
#include <pulsecore/macro.h>
|
||||||
#include <pulsecore/mutex.h>
|
#include <pulsecore/mutex.h>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -88,7 +88,10 @@ static int open_pid_file(const char *fn, int mode) {
|
||||||
for (;;) {
|
for (;;) {
|
||||||
struct stat st;
|
struct stat st;
|
||||||
|
|
||||||
if ((fd = open(fn, mode|O_NOCTTY
|
if ((fd = open(fn, mode
|
||||||
|
#ifdef O_NOCTTY
|
||||||
|
|O_NOCTTY
|
||||||
|
#endif
|
||||||
#ifdef O_NOFOLLOW
|
#ifdef O_NOFOLLOW
|
||||||
|O_NOFOLLOW
|
|O_NOFOLLOW
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -24,9 +24,6 @@
|
||||||
USA.
|
USA.
|
||||||
***/
|
***/
|
||||||
|
|
||||||
#include <poll.h>
|
|
||||||
#include <sys/types.h>
|
|
||||||
|
|
||||||
/* Return the next unused POSIX Realtime signals */
|
/* Return the next unused POSIX Realtime signals */
|
||||||
int pa_rtsig_get(void);
|
int pa_rtsig_get(void);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -244,7 +244,11 @@ int pa_play_file(
|
||||||
|
|
||||||
memset(&sfinfo, 0, sizeof(sfinfo));
|
memset(&sfinfo, 0, sizeof(sfinfo));
|
||||||
|
|
||||||
if ((fd = open(fname, O_RDONLY|O_NOCTTY)) < 0) {
|
if ((fd = open(fname, O_RDONLY
|
||||||
|
#ifdef O_NOCTTY
|
||||||
|
|O_NOCTTY
|
||||||
|
#endif
|
||||||
|
)) < 0) {
|
||||||
pa_log("Failed to open file %s: %s", fname, pa_cstrerror(errno));
|
pa_log("Failed to open file %s: %s", fname, pa_cstrerror(errno));
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -63,7 +63,11 @@ int pa_sound_file_load(
|
||||||
pa_memchunk_reset(chunk);
|
pa_memchunk_reset(chunk);
|
||||||
memset(&sfinfo, 0, sizeof(sfinfo));
|
memset(&sfinfo, 0, sizeof(sfinfo));
|
||||||
|
|
||||||
if ((fd = open(fname, O_RDONLY|O_NOCTTY)) < 0) {
|
if ((fd = open(fname, O_RDONLY
|
||||||
|
#ifdef O_NOCTTY
|
||||||
|
|O_NOCTTY
|
||||||
|
#endif
|
||||||
|
)) < 0) {
|
||||||
pa_log("Failed to open file %s: %s", fname, pa_cstrerror(errno));
|
pa_log("Failed to open file %s: %s", fname, pa_cstrerror(errno));
|
||||||
goto finish;
|
goto finish;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -53,9 +53,8 @@ struct pa_tls_monitor {
|
||||||
};
|
};
|
||||||
|
|
||||||
static pa_tls *thread_tls;
|
static pa_tls *thread_tls;
|
||||||
static pa_once_t thread_tls_once = PA_ONCE_INIT;
|
static pa_once thread_tls_once = PA_ONCE_INIT;
|
||||||
static pa_tls *monitor_tls;
|
static pa_tls *monitor_tls;
|
||||||
static pa_once_t monitor_tls_once = PA_ONCE_INIT;
|
|
||||||
|
|
||||||
static void thread_tls_once_func(void) {
|
static void thread_tls_once_func(void) {
|
||||||
thread_tls = pa_tls_new(NULL);
|
thread_tls = pa_tls_new(NULL);
|
||||||
|
|
@ -66,7 +65,7 @@ static DWORD WINAPI internal_thread_func(LPVOID param) {
|
||||||
pa_thread *t = param;
|
pa_thread *t = param;
|
||||||
assert(t);
|
assert(t);
|
||||||
|
|
||||||
pa_once(&thread_tls_once, thread_tls_once_func);
|
pa_run_once(&thread_tls_once, thread_tls_once_func);
|
||||||
pa_tls_set(thread_tls, t);
|
pa_tls_set(thread_tls, t);
|
||||||
|
|
||||||
t->thread_func(t->userdata);
|
t->thread_func(t->userdata);
|
||||||
|
|
@ -122,7 +121,7 @@ int pa_thread_join(pa_thread *t) {
|
||||||
}
|
}
|
||||||
|
|
||||||
pa_thread* pa_thread_self(void) {
|
pa_thread* pa_thread_self(void) {
|
||||||
pa_once(&thread_tls_once, thread_tls_once_func);
|
pa_run_once(&thread_tls_once, thread_tls_once_func);
|
||||||
return pa_tls_get(thread_tls);
|
return pa_tls_get(thread_tls);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -130,12 +129,6 @@ void pa_thread_yield(void) {
|
||||||
Sleep(0);
|
Sleep(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void monitor_tls_once_func(void) {
|
|
||||||
monitor_tls = pa_tls_new(NULL);
|
|
||||||
assert(monitor_tls);
|
|
||||||
pa_tls_set(monitor_tls, NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
static DWORD WINAPI monitor_thread_func(LPVOID param) {
|
static DWORD WINAPI monitor_thread_func(LPVOID param) {
|
||||||
struct pa_tls_monitor *m = param;
|
struct pa_tls_monitor *m = param;
|
||||||
assert(m);
|
assert(m);
|
||||||
|
|
@ -191,7 +184,11 @@ void *pa_tls_set(pa_tls *t, void *userdata) {
|
||||||
if (t->free_func) {
|
if (t->free_func) {
|
||||||
struct pa_tls_monitor *m;
|
struct pa_tls_monitor *m;
|
||||||
|
|
||||||
pa_once(&monitor_tls_once, monitor_tls_once_func);
|
PA_ONCE_BEGIN {
|
||||||
|
monitor_tls = pa_tls_new(NULL);
|
||||||
|
assert(monitor_tls);
|
||||||
|
pa_tls_set(monitor_tls, NULL);
|
||||||
|
} PA_ONCE_END;
|
||||||
|
|
||||||
m = pa_tls_get(monitor_tls);
|
m = pa_tls_get(monitor_tls);
|
||||||
if (!m) {
|
if (!m) {
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,8 @@
|
||||||
#define EHOSTUNREACH WSAEHOSTUNREACH
|
#define EHOSTUNREACH WSAEHOSTUNREACH
|
||||||
#define EWOULDBLOCK WSAEWOULDBLOCK
|
#define EWOULDBLOCK WSAEWOULDBLOCK
|
||||||
|
|
||||||
|
typedef long suseconds_t;
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef HAVE_WS2TCPIP_H
|
#ifdef HAVE_WS2TCPIP_H
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue