今日もデバッグ

GTK 的な処理をするところと、計算処理をするところを、別々のスレッドにして、progress bar を描くのに g_idle_add() とか使ってたのですが、g_idle_add なんか使うと、CPU 資源を食いまくることが発覚。 で、計算エンジンだけ CUI で走らせたときの倍時間がかかるって、そりゃ、まあ各スレッドに割り当てられる実行時間は平等だから、そうなんですが。

GUI をまともに作るのって初めてなんですが、けっこう難しいね。
GTK 的な処理をするところと、計算処理をするところを、別々のスレッドにして、progress bar を描くのに g_idle_add() とか使ってたのですが、g_idle_add なんか使うと、CPU 資源を食いまくることが発覚。で、計算エンジンだけ CUI で走らせたときの倍時間がかかるって、そりゃ、まあ各スレッドに割り当てられる実行時間は平等だから、そうなんですが。g_timeout_add() にしたら、progress bar の操作は一定時間おきになって、あとは特に何かが起きなければ GTK は寝ていてくれるので、超高速になりました。やったぜー。
そのほか、いままでベタっとしたコードになってたところを、ちゃんと class を使って実装したら、いい感じになりましたよ。C++ ってすげえな。こんなの使ってたら、バカになりそうだ。
gdk_pixbuf って、ユーザがメモリ上に確保したメモリ領域に描いた pixmap を、どっかにコピーするのではなくてそのまま表示に使うっぽいですね。いちど gdk_pixbuf_new_from_data() とかで作った pixmap が書き換わったら、gdk_draw_pixbuf だけ呼べばいいのかな?そのうち試そう。
で、もう crash することはないと期待してるんですが、crash するようなことがあったら教えてください > 研究室のみなさま

コメントを残す