GNOME Bugzilla – Bug 323874
[playbin] leaks sinks and threads when using gconfaudiosink
Last modified: 2006-02-06 21:44:23 UTC
The gstreamer 0.10 backend for rhythmbox uses playbin with gconfaudiosink as the audio sink for playback. To change songs, it pauses the playbin, changes the uri property, and starts it playing again. gconfaudiosink creates a new audio sink when it goes through this state transition, but for some reason the old audio sink doesn't get cleaned up, so the thread associated with the clock stays around. I can't really tell why this is happening, but I'm guessing there's an extra reference on the sink somewhere. When I tried playing a file that I don't have a decoder for, the audio sink was cleaned up correctly.
*** Bug 325700 has been marked as a duplicate of this bug. ***
Fixed in CVS: * gst/gstbin.c: (gst_bin_dispose), (gst_bin_provide_clock_func), (gst_bin_remove_func), (gst_bin_handle_message_func), (bin_query_duration_fold), (bin_query_generic_fold): Clean up references to the clock provider when disposed or when handling a clock-lost message from it. Unref sinks when performing a query via gst_iterator_fold, as the gst_bin_iterate_sinks iterator refs each item. (Fixes #323874)