タイマーを使用してアニメーションを実行するGtk+
コードを記述しています。ほとんどの場合、アプリケーションを閉じるアイコンをクリックすると、ターミナルに次のメッセージが表示されます。C
Cairo
Gtk-CRITICAL **:gtk_widget_queue_draw:アサーション `GTK_IS_WIDGET(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
まだアクティブで有効かどうかをテストする方法があるはずだと思いますか?