[pulseaudio-commits] src/utils

Colin Guthrie colin at kemper.freedesktop.org
Mon Aug 29 02:35:10 PDT 2011


 src/utils/pacat.c |   20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

New commits:
commit cef16430d0e307a3978dc6aa9a0d9b6940b0e0fa
Author: Lu Guanqun <guanqun.lu at intel.com>
Date:   Tue Aug 23 14:18:22 2011 +0800

    pacat: make pacat respond to cork/uncork events
    
    Pacat remembers the number of cork requests, and then cork/uncork the stream
    accordingly.
    
    With this change, it makes below test script work correctly:
    
    	pacat -p --property=media.role="music" <long-sound> &
    	sleep 2
    	pacat -p --property=media.role="phone" <short-sound>
    	wait
    
    Initial idea by Lu Guanqun, but modified by Colin Guthrie (so blame
    me if it's broken)

diff --git a/src/utils/pacat.c b/src/utils/pacat.c
index 4041877..3be1f6c 100644
--- a/src/utils/pacat.c
+++ b/src/utils/pacat.c
@@ -91,6 +91,8 @@ static int32_t latency_msec = 0, process_time_msec = 0;
 static pa_bool_t raw = TRUE;
 static int file_format = -1;
 
+static uint32_t cork_requests = 0;
+
 /* A shortcut for terminating the application */
 static void quit(int ret) {
     pa_assert(mainloop_api);
@@ -408,6 +410,24 @@ static void stream_event_callback(pa_stream *s, const char *name, pa_proplist *p
 
     t = pa_proplist_to_string_sep(pl, ", ");
     pa_log("Got event '%s', properties '%s'", name, t);
+
+    if (pa_streq(name, PA_STREAM_EVENT_REQUEST_CORK)) {
+        if (cork_requests == 0) {
+            pa_log(_("Cork request stack is empty: corking stream"));
+            pa_operation_unref(pa_stream_cork(s, 1, NULL, NULL));
+        }
+        cork_requests++;
+    } else if (pa_streq(name, PA_STREAM_EVENT_REQUEST_UNCORK)) {
+        if (cork_requests == 1) {
+            pa_log(_("Cork request stack is empty: uncorking stream"));
+            pa_operation_unref(pa_stream_cork(s, 0, NULL, NULL));
+        }
+        if (cork_requests == 0)
+            pa_log(_("Warning: Received more uncork requests than cork requests!"));
+        else
+            cork_requests--;
+    }
+
     pa_xfree(t);
 }
 



More information about the pulseaudio-commits mailing list