[Bug 642174] Playbin2 cannot work with non-raw custom sinks

GStreamer (bugzilla.gnome.org) bugzilla at gnome.org
Fri Feb 18 03:16:20 PST 2011


https://bugzilla.gnome.org/show_bug.cgi?id=642174
  GStreamer | gst-plugins-base | 0.10.31

--- Comment #14 from Sebastian Dröge <slomo at circular-chaos.org> 2011-02-18 11:16:17 UTC ---
(In reply to comment #13)
> Isn't the thread of activate_group() always same as that of signal handlers?

Not always, otherwise it would've never started any playback at all instead of
deadlocking when switching tracks.

> As the comment in activate_group() says 
>   /* release the group lock before setting the state of the decodebins, they
>    * might fire signals in this thread that we need to handle with the
>    * group_lock taken. */
> , I think the same is true for playbin lock.
> how about moving the state setting code in activate_group() to the place where
> in setup_next_source() and after releasing the playbin lock?

Look at the code that calls group_set_locked_state_unlocked() in
activate_group(). That has to be called after setting the state and needs to
have the group and playbin lock.

Another possible solution would be to release the playbin lock together with
the group lock in activate_group() and take it again after setting the state
but IMO this can lead to races because the playbin lock is also used to protect
against concurrent group changes... which could easily happen at the short time
when the state change is happening. That's why I used the solution that was
committed now.

-- 
Configure bugmail: https://bugzilla.gnome.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.


More information about the gstreamer-bugs mailing list