Hello All, I would like to run my g_main_loop in a separate context, so did something like this GMainContext *c = g_main_context_new(); GMainLoop *l = g_main_loop_new(c, false);
g_main_loop_run(l); My bus watch code goes like this: GstBus *bus = gst_pipeline_get_bus(pipe); gst_bus_add_watch(bus, BusHandler, NULL); If I run my main loop in the default context (by passing NULL), I receive call backs when there is an event on the bus. But after I moved it to a new context, I don't get the events anymore. Looking into the documentation, it looks like gst_bus_add_watch() adds watch only to the default context.
Could someone tell me how to add watch to my own context, please? Thanks Karthik ------------------------------------------------------------------------- This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK & win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100&url=/ _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.sourceforge.net/lists/listinfo/gstreamer-devel |
On Thu, 2008-11-13 at 10:16 -0800, Karthik V wrote:
> Hello All, > > > I would like to run my g_main_loop in a separate context, so did > something like this > > > GMainContext *c = g_main_context_new(); > GMainLoop *l = g_main_loop_new(c, false); > g_main_loop_run(l); > > > My bus watch code goes like this: > GstBus *bus = gst_pipeline_get_bus(pipe); > gst_bus_add_watch(bus, BusHandler, NULL); > > > If I run my main loop in the default context (by passing NULL), I > receive call backs when there is an event on the bus. But after I > moved it to a new context, I don't get the events anymore. Looking > into the documentation, it looks like gst_bus_add_watch() adds watch > only to the default context. > > > Could someone tell me how to add watch to my own context, please? You want something like this: GSource *source; source = gst_bus_create_watch (bus); g_source_set_callback (source, (GSourceFunc) func, user_data, notify); /* now attach to the custom context c */ id = g_source_attach (source, c); g_source_unref (source); ... Wim > > > Thanks > Karthik > > > ------------------------------------------------------------------------- > This SF.Net email is sponsored by the Moblin Your Move Developer's challenge > Build the coolest Linux based applications with Moblin SDK & win great prizes > Grand prize is a trip for two to an Open Source event anywhere in the world > http://moblin-contest.org/redirect.php?banner_id=100&url=/ > _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.sourceforge.net/lists/listinfo/gstreamer-devel ------------------------------------------------------------------------- This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK & win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100&url=/ _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.sourceforge.net/lists/listinfo/gstreamer-devel |
Thanks Wim.
I did the same but still didn't get the pipeline events. I confirmed that I do get the events if I use the default context. My code now looks like this: GstBus *bus = gst_pipeline_get_bus (GST_PIPELINE (pipe));
if ( ( source = gst_bus_create_watch(bus) ) == NULL ) { cout << "Unable to create sourced for bus watch";
} cout << "Created source"; g_source_set_callback(source, (GSourceFunc) BusHandler, data, NULL); cout << "Set callback";
busWatchId = g_source_attach(source, loopContext); cout << "Attached source. Id = " << busWatchId;
g_source_unref(source); gst_object_unref (bus);
The handler function (I retained what I had earlier when I used gst_bus_add_watch() ), gboolean BusHandler(GstBus *bus, GstMessage *message, gpointer data) {
cout << "Handler called"; } And elsewhere in the code, GMainContext *context = g_main_context_new();
GMainLoop *loop = g_main_loop_new(context, false); g_main_loop_run(loop);
On Thu, Nov 13, 2008 at 10:33 AM, Wim Taymans <[hidden email]> wrote:
------------------------------------------------------------------------- This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK & win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100&url=/ _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.sourceforge.net/lists/listinfo/gstreamer-devel |
I noticed that the BusHandler function does get called a few times in the beginning, but the 'end of stream' event fails to trigger a callback, for some reason. If I replace g_main_context_new() by g_main_context_default(), I get callback during when end of stream occurs.
Does anyone have any idea what could be wrong with EOS alone? On Thu, Nov 13, 2008 at 2:40 PM, Karthik V <[hidden email]> wrote: Thanks Wim. ------------------------------------------------------------------------- This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK & win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100&url=/ _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.sourceforge.net/lists/listinfo/gstreamer-devel |
Any thoughts?
On Thu, Nov 13, 2008 at 3:02 PM, Karthik V <[hidden email]> wrote: I noticed that the BusHandler function does get called a few times in the beginning, but the 'end of stream' event fails to trigger a callback, for some reason. If I replace g_main_context_new() by g_main_context_default(), I get callback during when end of stream occurs. ------------------------------------------------------------------------- This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK & win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100&url=/ _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.sourceforge.net/lists/listinfo/gstreamer-devel |
Free forum by Nabble | Edit this page |