没有gtk_main()结束gtk的正确方法是什么?

时间:2014-07-17 06:24:20

标签: c gtk

我写了一个小的gtk程序,但我没有使用gtk_main()。相反,只要有服务事件然后运行我自己的更新功能,我就会运行gtk_main_iteration(),如下所示:

while (active) {
    while ( gtk_events_pending() ) gtk_main_iteration();
    update();
}

由于没有gtk_main()gtk_main_quit()将毫无用处。

g_signal_connect(window,"destroy",G_CALLBACK(gtk_main_quit),NULL);

那么当我注册销毁信号时该怎么办?

如果我没有处理销毁信号,我的代码会尝试继续,但是因为gtk层次结构不再存在而失败,但是gtk的某些部分仍然存在,会引发同样的异常7次:

GLib-GObject-CRITICAL **: g_signal_handler_disconnect: assertion 'G_TYPE_CHECK_INSTANCE (instance)' failed

我可以调用自己的G_CALLBACK函数,只需调用exit(),然后就不会发生异常,但这并没有让我有机会干净地处理应用程序关闭。

0 个答案:

没有答案