[Armadillo:05777] Re: Armadillo-440 GUI 開発ツール

Yasushi SHOJI email@hidden
2010年 9月 6日 (月) 16:48:54 JST


At Mon, 06 Sep 2010 13:28:18 +0900,
MasakiAoyama wrote:
> 
> 私も500FXでGtk+を使って、演算処理の途中経過を表示させるための簡単な画面ア
> プリを作成しましたが、次のようなところで引っかかって苦労したのでご参考まで。

答えれるかわかりませんが、聞いてください。(T-T)
# マニュアルがないこと自体、だめなんですけど…。

> 問題
> 子スレッドから画面のリスト(一覧表)を更新しようとすると、再描画がうまくいか
> なかったり、何度かやってるうちに落ちる。

Gtk+は、Thread safe ではなく、Thread awareです[1]。なので、複数のスレッ
ドから Gtk+を扱ってはいけません。

> 解決策
> 結局、画面の再描画は親スレッドでgtk_timeout_add()を使ってタイマイベントを
> 駆動し、そこでグローバル変数のフラグを読んでそれに合わせて画面を描き換える。

同じことをやるための機能が、Gtk+に含まれていますよ。
GtkWidget::queue_draw_area()です[2]。

[1]: http://library.gnome.org/devel/gdk/stable/gdk-Threads.html#gdk-Threads.description
[2]: http://library.gnome.org/devel/gtk/stable/GtkWidget.html#gtk-widget-queue-draw-area
-- 
           yashi




armadillo メーリングリストの案内