realize/unrealize

昨日のコードではgtk_widget_show()の後でOpenGLを初期化していましたが、より適切なタイミングが見つかったので書き直しました。
差分


GTK+Widgetは生成時点では実際のウィンドウは作成されていなくて、gtk_widget_realize()が呼ばれたときに作成されます。
その後、realizeイベントが発生するのでウィンドウハンドルが必要な初期化処理はここがベストでしょう。
逆に破棄されるのはunrealizeイベントです。


一つ疑問なのは、realizeイベントの中でエラーが発生した場合どうすべきかです。
realizeイベントのハンドラもgtk_widget_realize()も戻り値がないので、必ず成功しないとダメな作りのようですが、いくらでも失敗する要因はあるので不思議です。