【发布时间】:2012-06-16 07:06:32
【问题描述】:
我有一些用C 编写的Gtk+ 代码,它使用Cairo 和一个计时器来制作一些动画。大多数情况下,当我单击关闭应用程序图标时,我会在终端上收到以下消息:
Gtk-CRITICAL **: gtk_widget_queue_draw: 断言`GTK_IS_WIDGET (小部件)'失败
现在我假设这正在发生,因为在我关闭应用程序的那一刻,计时器被触发并且主窗口小部件被访问但已经被销毁。确定 Gtk 小部件是否仍然有效并且可以引用的常用方法是什么?
有问题的代码在这里:
gboolean rotate_cb( void *degrees )
{
rotation += DegreesToRadians((*(int*)(degrees)));
// Tell our window that it should repaint itself (ie. emit an expose event)
/* need to only call gtk_widget_queue_draw() if window is still valid / exists */
gtk_widget_queue_draw(window);
return( TRUE );
}
我假设必须有某种方法来测试window 是否仍然有效和有效?
【问题讨论】: