gst_bus_add_watch()和g_signal_connect()之间的区别

时间:2016-05-13 22:10:28

标签: c gstreamer glib

我正在阅读GStreamer应用程序开发人员手册,该手册讨论了消息处理/事件处理环境中的管道总线,他们讨论了两个函数:gst_bus_add_watch()和g_signal_connect()。看来这两个功能是可以互换的。申请手册说:

  

请注意,如果您使用的是默认的GLib主循环集成,则可以代替附加手表,   连接到总线上的“消息”信号。

在第27页。这两个函数之间有什么区别,它们在哪些上下文中有用?谁使用我们在这些函数中注册的回调?元素本身是否会调用回调?

1 个答案:

答案 0 :(得分:1)

如果您正在使用gst_bus_add_watch(),那么您将提供一个在消息可用时将被调用的回调。

如果你调用gst_bus_add_signal_watch(),那么它会注册一个默认的回调,它会将GSource注册到主循环。这样就可以使用信号。

它是功能明智的等价物,但如果你是编写基于glib / gtk的应用程序,在任何地方使用信号可能会使代码更加一致。