我正在阅读GStreamer应用程序开发人员手册,该手册讨论了消息处理/事件处理环境中的管道总线,他们讨论了两个函数:gst_bus_add_watch()和g_signal_connect()。看来这两个功能是可以互换的。申请手册说:
请注意,如果您使用的是默认的GLib主循环集成,则可以代替附加手表, 连接到总线上的“消息”信号。
在第27页。这两个函数之间有什么区别,它们在哪些上下文中有用?谁使用我们在这些函数中注册的回调?元素本身是否会调用回调?
答案 0 :(得分:1)
如果您正在使用gst_bus_add_watch(),那么您将提供一个在消息可用时将被调用的回调。
如果你调用gst_bus_add_signal_watch(),那么它会注册一个默认的回调,它会将GSource注册到主循环。这样就可以使用信号。
它是功能明智的等价物,但如果你是编写基于glib / gtk的应用程序,在任何地方使用信号可能会使代码更加一致。