c - 防止 GSignal 传播到进一步注册的 GCallback

标签 c glib gobject

如何防止从 GSignal 中的第一个信号处理程序回调中调用更多信号处理程序?

例如,我为同一个信号“mysignal”注册了三个函数 - func1、func2 和 func3。如果先调用 func1,如何防止从 func1 调用 func2 和 func3?

这不应该成为永久性的。应该是运行时。即func1可以根据获取到的输入参数来决定func2和func3是否可以获取到回调。

最佳答案

g_signal_stop_emission_by_name()和g_signal_stop_emission()解决了这个问题。

从 func1 调用 g_signal_stop_emission_by_name() 可防止进一步传播到 func2 和 func3。

关于c - 防止 GSignal 传播到进一步注册的 GCallback,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3404380/

相关文章:

c - 2 线程在 Linux 中并行

c++ - 避免单线程死锁

c - 使用 GLib 集合删除列表中的重复项

callback - GLib - 为类的所有实例调用回调

memory-management - 何时释放 GObject?

c - C 中 sscanf 的段错误

c - C 中的单浮点十进制到二进制

c - 循环数组 N 次

python - 如何从 PyGObject 获取 GObject.Callback?

c++ - C/C++ 声音操作系统 API