From: Tim <t....@ze...> - 2007-12-06 20:12:41
|
On Thu, 2007-12-06 at 13:44 -0500, Jos=C3=A9 Alburquerque wrote: > One such question is related=20 > to the gst_bus_add/remove_signal_watch[_full] functions (which I'm=20 > presently working on right now). As I understand the docs,=20 > gst_add_signal_watch[_full] can be called several times, but=20 > remove_signal_watch must be called the same number of times to remove=20 > the watches. >=20 > My question is: does the message signal get transmitted as many times=20 > as gst_bus_add_signal_watch() has been called or just once regardless? The signal gets emitted exactly once per message, regardless of how often gst_bus_add_signal_watch() has been called. > If so, why allow several calls to gst_bus_add_signal_watch(). To make it easier for independent pieces of code to watch for the same signal (they don't need to worry about what's done elsewhere in the application or in other libraries, but only need to call _add/_remove as required for their own purposes). > Also, am I correct in assuming that the GstBus is not destroyed unless=20 > gst_bus_remove_signal_watch() is called the same number of times that=20 > gst_bus_add_signal_watch[_full]() has been called? Yes: gst_bus_add_signal_watch() calls gst_bus_add_watch_full() which calls gst_bus_create_watch() which takes a reference to the bus, and that reference is not dropped until the source is removed, which only happens when _remove_signal_watch() has been called as many times as _add_signal_watch() has been called before. Cheers -Tim |