]> code.delx.au - pulseaudio/commitdiff
module-waveout: Fix record/playback args
authorMaarten Bosmans <mkbosmans@gmail.com>
Mon, 14 Mar 2011 09:51:11 +0000 (10:51 +0100)
committerMaarten Bosmans <mkbosmans@gmail.com>
Sat, 19 Mar 2011 12:41:06 +0000 (13:41 +0100)
src/modules/module-waveout.c

index 90d059918a4bf203810c6cb6443387892f0bcb86..6c96921245a2093b2c7b820a21f6f639d37889c8 100644 (file)
@@ -256,20 +256,23 @@ static void thread_func(void *userdata) {
 
     for (;;) {
         int ret;
+        pa_bool_t need_timer = FALSE;
 
-        if (PA_SINK_IS_OPENED(u->sink->thread_info.state) ||
-            PA_SOURCE_IS_OPENED(u->source->thread_info.state)) {
-
+        if (u->sink && PA_SINK_IS_OPENED(u->sink->thread_info.state)) {
             if (u->sink->thread_info.rewind_requested)
                 pa_sink_process_rewind(u->sink, 0);
 
-            if (PA_SINK_IS_OPENED(u->sink->thread_info.state))
-                do_write(u);
-            if (PA_SOURCE_IS_OPENED(u->source->thread_info.state))
-                do_read(u);
+            do_write(u);
+            need_timer = TRUE;
+        }
+        if (u->source && PA_SOURCE_IS_OPENED(u->source->thread_info.state)) {
+            do_read(u);
+            need_timer = TRUE;
+        }
 
+        if (need_timer)
             pa_rtpoll_set_timer_relative(u->rtpoll, u->poll_timeout);
-        else
+        else
             pa_rtpoll_set_timer_disabled(u->rtpoll);
 
         /* Hmm, nothing to do. Let's sleep */
@@ -643,6 +646,7 @@ int pa__init(pa_module *m) {
     u->sink_underflow = 1;
 
     u->poll_timeout = pa_bytes_to_usec(u->fragments * u->fragment_size / 10, &ss);
+    pa_log_debug("Poll timeout = %.1f ms", (double) u->poll_timeout / PA_USEC_PER_MSEC);
 
     u->cur_ihdr = 0;
     u->cur_ohdr = 0;