Ochusha is a so-called 2ch browser based on GTK+.
It is implemented mainly in C/C++ and employs multi-threading so that it runs considerably quickly. We would like to respond to user's request for features.
多段ポップアップができるようになりました。
* libghttpのproxy関連の機能をそのまま適用したproxy対応のコードを入
れた。全くテストしていません。これでさっくり動いてしまう可能性は
高いのですが、動かないと、私の凡ミスによる場合を除いて今後も使え
るようになる見込みはありません。作者が全くproxyを使っていないも
んで優先度は激低です。
* スレ一覧で新スレを新スレとして取り扱うために導入したフラグの使い
方が腐っていたのを修正した。
* ネットワークアクセス周りコードの見直しを行い、
OchushaNetworkBrokerクラスを導入した。この実装にあわせて、ネット
ワークアクセス時の各種イベントのコールバックを関数ポインタの直渡
しからGLibのシグナルに変更した。
* OchushaAsyncBufferからuser_dataを取り除いた。
* これまでsubject.txtやDATファイル取得時のLast-Modifiedヘッダの内
容をおちゅ〜しゃのGUI担当部分で管理する構造体に保持していたが、
Last-Modifiedヘッダの内容を取っておく価値があるかどうかは掲示板
のシステム依存なので、libochushaの2ch依存実装部分で管理するよう
に変更した。
* おちゅ〜しゃのGUI担当部分も以上の変更に対応して変更した。
* スレ一覧とスレのレンダリング時にそれぞれを実行しているスレッドが
定期的に休憩を入れることにより、メインスレッドの実行しているUIの
レスポンスを改善した。
* ThreadlistView内のleave_notify_eventに対するシグナルハンドラのシ
グニチャが間違っていたので修正した。
* いわゆる多段ポップアップを実装し、ポップアップを閉じるタイミング
を調整した。昔の実装ではリンクからマウスポインタが出た瞬間にポッ
プアップを閉じていたが、(ユーザ設定可能な)一定の時間内にポップ
アップウィンドウにポインタが入ったときにはそのポップアップを閉じ
ないように変更し、更に、ポップアップに子ポップアップウィンドウが
存在する場合にも親のポップアップウィンドウを閉じないようにした。
* ポップアップを閉じるタイミングの調整のために必要なので、
view_enter_notifyとview_leave_notifyシグナルを発行するように
BBSThreadViewを変更した。本当はGtkWidgetの
{enter,leave}_notify_eventがそのまま使えれば良いのだが、素の
BBSThreadViewウィジェットにはシグナルが届かないようなので泥臭く
処理している。
* メモリリーク探しを始めた。
* 想定しているもの(無駄なのでfreeしていないもの)を除いて(g_new0
やg_malloc、g_strdupなどにより)明示的に確保されたヒープメモリの
リークは全て解決したつもり。が、まだ何かリークしている気がしてな
らないので、恐らく、GTK+のウィジェット自体をリークしてしまってい
るのだろう。調査は後日やる気になってからとする。
* チューニングがまだなので、暇な時レンダリングの機能を一先ず無効化
した。
* デバッグ出力にポインタを表示するときにintにキャストするのをやめ
て真っ当に%pなフォーマットを使うように変更した。存在を知らなかっ
た。