'Twas brillig, and Lu Guanqun at 23/08/11 07:18 did gyre and gimble: > 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 Interesting, this is likely good as a test bed/example. That said, I'm not sure we should be sending the operations every time. Perhaps we should only send a cork req when the count moves form 0->1 and an uncork when the count moves from 1->0? We may at some point have to change the semantics at the server side to deal with the start_corked issue, and thus this is likely more robust in those circumstances. Col > Signed-off-by: Lu Guanqun <guanqun.lu at intel.com> > --- > src/utils/pacat.c | 11 +++++++++++ > 1 files changed, 11 insertions(+), 0 deletions(-) > > diff --git a/src/utils/pacat.c b/src/utils/pacat.c > index f687402..2568db5 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 int cork_requests = 0; > + > /* A shortcut for terminating the application */ > static void quit(int ret) { > pa_assert(mainloop_api); > @@ -408,6 +410,15 @@ 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)) { > + cork_requests++; > + pa_operation_unref(pa_stream_cork(s, !!cork_requests, NULL, NULL)); > + } else if (pa_streq(name, PA_STREAM_EVENT_REQUEST_UNCORK)) { > + cork_requests--; > + pa_operation_unref(pa_stream_cork(s, !!cork_requests, NULL, NULL)); > + } > + > pa_xfree(t); > } -- Colin Guthrie gmane(at)colin.guthr.ie http://colin.guthr.ie/ Day Job: Tribalogic Limited [http://www.tribalogic.net/] Open Source: Mageia Contributor [http://www.mageia.org/] PulseAudio Hacker [http://www.pulseaudio.org/] Trac Hacker [http://trac.edgewall.org/]