pulsesrc: Handle negotiation events
authorArun Raghavan <arun.raghavan@collabora.co.uk>
Tue, 14 Aug 2012 10:10:31 +0000 (15:40 +0530)
committerWim Taymans <wim.taymans@collabora.co.uk>
Wed, 22 Aug 2012 09:38:42 +0000 (11:38 +0200)
commitef9c81d4958afe9678b6780c35a2ac8f145f8b8a
treeadedc2d49c8d4839c50f47bc4bdf77a0eefa8596
parent1a8512986ae983c3a362b023b8e55fdae681bb02
pulsesrc: Handle negotiation events

This makes sure that we:

a) Destroy an existing stream if a negotiate() request comes in: this is
required when receiving a downstream renegotiation request after a
stream has been created.

b) Create a new stream on prepare(): this is required since we do a
setcaps() in negotiate(), which causes the stream to be dropped by a
ringbuffer release() call (this does not happen during first negotiation
since the release is only done on a running ringbuffer). The subsequent
call to ringbuffer acquire() fails because the stream was lost on
release().

https://bugzilla.gnome.org/show_bug.cgi?id=681247
ext/pulse/pulsesrc.c