[gst-devel] Specifying a different context for gst_bus_add_watch()

Karthik V karthikveeramani at gmail.com
Fri Nov 14 22:36:05 CET 2008


Any thoughts?

On Thu, Nov 13, 2008 at 3:02 PM, Karthik V <karthikveeramani at gmail.com>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.
> Does anyone have any idea what could be wrong with EOS alone?
>
>
>
> On Thu, Nov 13, 2008 at 2:40 PM, Karthik V <karthikveeramani at gmail.com>wrote:
>
>> 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 <wim.taymans at gmail.com>wrote:
>>
>>> 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 gstreamer-devel at lists.sourceforge.net
>>> 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
>>> gstreamer-devel at lists.sourceforge.net
>>> https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
>>>
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/gstreamer-devel/attachments/20081114/4eb8c14a/attachment.htm>


More information about the gstreamer-devel mailing list