[pulseaudio-discuss] [PATCH] win32: Make once-test work

Maarten Bosmans mkbosmans at gmail.com
Thu Jun 23 13:21:02 PDT 2011


The barrier is not used when pthread is not available.
---
 src/Makefile.am              |    8 +-------
 src/pulsecore/thread-win32.c |   21 +++++++++++++++++++++
 src/tests/once-test.c        |   10 ++++++++++
 src/tests/thread-test.c      |    2 --
 4 files changed, 32 insertions(+), 9 deletions(-)

diff --git a/src/Makefile.am b/src/Makefile.am
index 3858cb3..a0e7ce3 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -271,6 +271,7 @@ TESTS = \
 
 TESTS_norun = \
 		mcalign-test \
+		once-test \
 		pacat-simple \
 		parec-simple \
 		extended-test \
@@ -309,13 +310,6 @@ TESTS_norun += \
 		alsa-time-test
 endif
 
-if !OS_IS_DARWIN
-if !OS_IS_WIN32
-TESTS_BINARIES += \
-		once-test
-endif
-endif
-
 if BUILD_TESTS_DEFAULT
 noinst_PROGRAMS = $(TESTS) $(TESTS_norun)
 else
diff --git a/src/pulsecore/thread-win32.c b/src/pulsecore/thread-win32.c
index e0839af..89c8c46 100644
--- a/src/pulsecore/thread-win32.c
+++ b/src/pulsecore/thread-win32.c
@@ -123,6 +123,27 @@ pa_thread* pa_thread_self(void) {
     return pa_tls_get(thread_tls);
 }
 
+void* pa_thread_get_data(pa_thread *t) {
+    pa_assert(t);
+
+    return t->userdata;
+}
+
+void pa_thread_set_data(pa_thread *t, void *userdata) {
+    pa_assert(t);
+
+    t->userdata = userdata;
+}
+
+void pa_thread_set_name(pa_thread *t, const char *name) {
+    /* Not implemented */
+}
+
+const char *pa_thread_get_name(pa_thread *t) {
+    /* Not implemented */
+    return NULL;
+}
+
 void pa_thread_yield(void) {
     Sleep(0);
 }
diff --git a/src/tests/once-test.c b/src/tests/once-test.c
index 1379168..8a9995d 100644
--- a/src/tests/once-test.c
+++ b/src/tests/once-test.c
@@ -21,7 +21,9 @@
 #include <config.h>
 #endif
 
+#ifdef HAVE_PTHREAD
 #include <pthread.h>
+#endif
 
 #include <pulsecore/thread.h>
 #include <pulsecore/once.h>
@@ -33,7 +35,9 @@
 static pa_once once = PA_ONCE_INIT;
 static volatile unsigned n_run = 0;
 static const char * volatile ran_by = NULL;
+#ifdef HAVE_PTHREAD
 static pthread_barrier_t barrier;
+#endif
 static unsigned n_cpu;
 
 #define N_ITERATIONS 500
@@ -45,6 +49,7 @@ static void once_func(void) {
 }
 
 static void thread_func(void *data) {
+#ifdef HAVE_PTHREAD
     int r;
 
 #ifdef HAVE_PTHREAD_SETAFFINITY_NP
@@ -60,6 +65,7 @@ static void thread_func(void *data) {
 
     r = pthread_barrier_wait(&barrier);
     pa_assert(r == 0 || r == PTHREAD_BARRIER_SERIAL_THREAD);
+#endif /* HAVE_PTHREAD */
 
     pa_run_once(&once, once_func);
 }
@@ -72,7 +78,9 @@ int main(int argc, char *argv[]) {
     for (n = 0; n < N_ITERATIONS; n++) {
         pa_thread* threads[N_THREADS];
 
+#ifdef HAVE_PTHREAD
         pa_assert_se(pthread_barrier_init(&barrier, NULL, N_THREADS) == 0);
+#endif
 
         /* Yes, kinda ugly */
         pa_zero(once);
@@ -94,7 +102,9 @@ int main(int argc, char *argv[]) {
         n_run = 0;
         ran_by = NULL;
 
+#ifdef HAVE_PTHREAD
         pa_assert_se(pthread_barrier_destroy(&barrier) == 0);
+#endif
     }
 
     return 0;
diff --git a/src/tests/thread-test.c b/src/tests/thread-test.c
index 4943a17..4071e42 100644
--- a/src/tests/thread-test.c
+++ b/src/tests/thread-test.c
@@ -94,8 +94,6 @@ int main(int argc, char *argv[]) {
     int i, k;
     pa_thread* t[THREADS_MAX];
 
-    assert(pa_thread_is_running(pa_thread_self()));
-
     mutex = pa_mutex_new(FALSE, FALSE);
     cond1 = pa_cond_new();
     cond2 = pa_cond_new();
-- 
1.7.4.1



More information about the pulseaudio-discuss mailing list