set_element_set_state & multi thread safe

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

set_element_set_state & multi thread safe

franchan
Hello,

When I receive a buffering message,
I call gst_element_set_state(PAUSED)
from my synchronous message callback.
If just before the event is received,
the gst_element_set_state(NULL) is invoked
(because the user wants to quit the player),
I then seem to get locked on a GST_STATE_LOCK(element).
The application appears to be blocked forever.
Am I doing this the wrong way?

Thanks for you advice,
francis

------------------------------------------------------------------------------
This SF.Net email is sponsored by the Verizon Developer Community
Take advantage of Verizon's best-in-class app development support
A streamlined, 14 day to market process makes app distribution fast and easy
Join now and get one step closer to millions of Verizon customers
http://p.sf.net/sfu/verizon-dev2dev 
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: set_element_set_state & multi thread safe

Tim-Philipp Müller-2
On Tue, 2010-01-05 at 13:42 +0100, franchan wrote:

Hi,

> When I receive a buffering message,
> I call gst_element_set_state(PAUSED)
> from my synchronous message callback.
> If just before the event is received,
> the gst_element_set_state(NULL) is invoked
> (because the user wants to quit the player),
> I then seem to get locked on a GST_STATE_LOCK(element).
> The application appears to be blocked forever.
> Am I doing this the wrong way?

You are not allowed to call _set_state() from a streaming thread, so you
can't use it in a synchronous message callback.

 Cheers
  -Tim


------------------------------------------------------------------------------
This SF.Net email is sponsored by the Verizon Developer Community
Take advantage of Verizon's best-in-class app development support
A streamlined, 14 day to market process makes app distribution fast and easy
Join now and get one step closer to millions of Verizon customers
http://p.sf.net/sfu/verizon-dev2dev 
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: set_element_set_state & multi thread safe

Tim-Philipp Müller-2
On Tue, 2010-01-05 at 13:27 +0000, Tim-Philipp Müller wrote:

> You are not allowed to call _set_state() from a streaming thread, so
> you can't use it in a synchronous message callback.

Just to correct myself: this isn't entirely true, it's fine to call
_set_state() on a newly-added element in a pad-added callback for
example, but you shouldn't change pipeline state from a streaming
thread.

Without more information it's hard to guess what exactly you're doing
and what's going on. Do you have a short piece of code that reproduces
the problem?

Cheers
 -Tim




------------------------------------------------------------------------------
This SF.Net email is sponsored by the Verizon Developer Community
Take advantage of Verizon's best-in-class app development support
A streamlined, 14 day to market process makes app distribution fast and easy
Join now and get one step closer to millions of Verizon customers
http://p.sf.net/sfu/verizon-dev2dev 
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel