У меня есть код 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
?