【发布时间】:2013-01-21 00:15:46
【问题描述】:
在实例的处理程序被g_signal_handler_block 阻塞后,是否可以检查处理程序是否仍然被阻塞或同时被 g_signal_handler_unblock 解除阻塞,除了将状态存储在布尔变量中,例如?
我希望这样的事情是可能的
g_signal_handler_block (selection, handler_id_row_selected);
if (g_signal_handler_is_blocked (selection, handler_id_row_selected))
g_print ("is still blocked");
但是"g_signal_handler_is_blocked" 函数不存在。 g_signal_handler_is_connected 不是正确使用的函数,因为信号处理程序保持连接状态,因此函数返回 TRUE。
我尝试过g_signal_handler_find (),因为G_SIGNAL_MATCH_UNBLOCKED 作为匹配类型之一,但它还没有奏效。即使我已经重写了我的代码,我仍然想知道它是否可能,因为我经常使用阻塞/解除阻塞。
【问题讨论】:
-
也许您可以编写该函数并在 bugzilla.gnome.org 上的错误报告中提交补丁?看看git.gnome.org/browse/glib/tree/gobject/gsignal.c,实现起来很容易......
-
虽然我的想法还没有达到那么远,但没有什么可失去的......我会看看 gsignal.c,谢谢你提出这个想法。跨度>