[gst-devel] JuK developer needs help w/ gstreamer 0.10

Andy Wingo wingo at pobox.com
Tue Mar 14 04:14:04 CET 2006


Hi,

On Sat, 2006-03-11 at 21:42 -0500, Michael Pyne wrote:
> #8  0xb7ee0cf6 in gst_element_get_state () 
> from /usr/lib/libgstreamer-0.10.so.0
> #9  0x080ee709 in GStreamerPlayer::state (this=0x8530130)
>     at /home/kde-cvs/kdesvn/kdemultimedia/juk/gstreamerplayer.cpp:368
> #10 0x080ee74f in GStreamerPlayer::playing (this=0x8530130)
>     at /home/kde-cvs/kdesvn/kdemultimedia/juk/gstreamerplayer.cpp:286
> #11 0x081067f0 in PlayerManager::play (this=0x81a5860, file=@0xbfbeb934)
>     at /home/kde-cvs/kdesvn/kdemultimedia/juk/playermanager.cpp:301

So state changes happen asynchronously in GStreamer 0.10. The state of a
bin is only set when all elements have completed their pending
transitions. If there is an error, perhaps an element stays in that
intermediate state, and the bin's state never gets committed.

It appears that JuK's error is that it wants to handle state changes
synchronously, but the change never happens. Either add a timeout to
your call to get_state, or (better) don't call it -- just keep track via
the messages that get posted asynchronously to the bus. Your users will
be happier if you take an async approach to state changes.

Everything else looks fine :)
-- 
Andy Wingo
http://wingolog.org/





More information about the gstreamer-devel mailing list