[gst-embedded] gst_bus_add_watch without _main_loop_run (loop)

Tim-Philipp Müller tim.muller at collabora.co.uk
Mon Apr 6 03:59:25 PDT 2009


On Mon, 2009-04-06 at 18:35 +0800, 宋江山 wrote:

> I would like to know that can I get the "end of stream" event (or a
> signal?)

It's a "bus message" in GStreamer terminology.

>  without using the mainloop?
> 
> I used:
>  gst_bus_add_watch (bus, my_bus_callback, NULL);
>  to add a watch to catch the "end of stream" signal. But it seems
> my_bus_callback not been called at all.
> Maybe because I did not use 
>   g_main_loop_run (loop);
>   because I have something else to do with my program.
>  
> What should  I do?
> Should I create a thread and run  g_main_loop_run (loop)  or 
> this loop is not needed ?

There's no need to run a main loop for this. You can check for messages
on the bus with functions like

 gst_bus_pop()
 gst_bus_timed_pop()

etc. which will block or not block, depending on your circumstances. See
here:

http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBus.html#gst-bus-timed-pop

You should check for messages on the bus regularly. How often regularly
is, is up to you really.

Cheers
 -Tim






More information about the Gstreamer-embedded mailing list