我Gtk+
写了一些代码C
,使用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
仍然有效和有效?