トップ «前の日記 最新 次の日記»

2020-01-21 (Tu) [長年日記]

_ Emacs デバッグ

何故カーソルの点滅が安定しないのか、 というか、安定してチラッチラッと一瞬点滅するのは何故なのか、デバッグしてみた。

答えは簡単で、gtk_widget_queue_draw() した後 pselect で sleep する前に、 draw ハンドラが呼ばれるタイミングがないから。 X の場合と同様に pselect から起きてきた後に dispatch してる。 だから pselect した後にしか描画されず、描画のタイミングが安定しなかった。 X の場合はあちこちで XFlush() してるから問題ないのだろう。

add_keyboard_wait_descriptor (0);

↑という意見もあったけど、< /dev/null したら emacs が busy loop に なってしまって CPU 負荷 100% になるし、 他のプロセスとの通信でフリーズすることあるし。 私の環境では /dev/null につながってるんだよね…。wayfire の性格? GNOME だとどうなんだろう?

w32 も↑これやってるんだけど、 w32 は sys_select() っていう独自関数を用意して使ってて、 0 もその中で独自処理してるので、全然参考にならない。 そもそも Windows は file descriptor じゃなくて Handle なので いったい何をどうしてるんだか…

ns は… なんで delete_keyboard_wait_descriptor (0); してるのか不明。 git blame してみようかな… してみたけどわかんなかった sweat_smile

x は socket を真面目に渡してる。一番真っ当かな。

そして pgtk の場合は「呼ばない」という選択肢w

さて。久しぶりにガッツリとデバッグして疲れた。

ここ数日思ったこと。さすがに英語が通じないww 全然通じないならともかく、誤解与えてて参る。 相手が native ならもう少しなんとかなってる気がする。


編集 パスワード変更