dbusiface-core: Track sinks and sources using synchronous hooks instead of asynchrono...
authorTanu Kaskinen <tanu.kaskinen@digia.com>
Mon, 2 Aug 2010 11:12:26 +0000 (14:12 +0300)
committerTanu Kaskinen <tanu.kaskinen@digia.com>
Tue, 10 Aug 2010 12:19:50 +0000 (15:19 +0300)
commit021aa306aa614385ff2029fd152008d4f9107414
treefaada3b51ec31e46b587a7cc6c0734cb92d03454
parent1552abf62820e063e933e54372bec25f8ea2f68a
dbusiface-core: Track sinks and sources using synchronous hooks instead of asynchronous subscription events.

Using the subscription events caused an assertion crash sometimes when a sink
was removed and a new sink was created (i.e. card profile change) and a stream
was moved from the removed sink to the new sink. The stream dbus object's
subscription callback got a change event before the core dbus object's
subscription callback got the sink remove/creation events. The stream's
subscription callback then queried the core for the object path of the new
sink, and since the core was not yet aware of the new sink, an assertion was
hit in pa_dbusiface_device_get_path().

Now that the core uses synchronous hooks to keep the sink and source lists up
to date, this particular problem can't occur anymore.
src/modules/dbus/iface-core.c