[Date Prev][Date Next][Thread Prev][][Date Index][Thread Index]

Re: page with many images makes one want to killall emacs



ごぶさたしております。 青田です。

Katsumi Yamaoka <yamaoka@xxxxxxx> writes:

> Katsumi Yamaoka wrote:
>> Normally
>> emacs-w3m works asynchronously to fetch and to display images.
>> Why `C-c C-k' doesn't work seems to be that there's no time slot
>> in which Emacs accepts that command because of many asynchronous
>> processes at a time.  I have no idea.  Sorry.
>
>> ;; (sit-for 0) in each process might do the trick.  But it's ever
>> ;; been tried, hasn't it?
>
> Japanese:
>
> たくさんの画像を表示しようとしている最中に、それを `C-c C-k' で
> 止めようとしても効き目が無いことは、たぶん経験していますよね。
> 非同期プロセスが次々に実行される間に、そのようなコマンドを Emacs
> が受け取る隙間が無いせいだと思うのですが。
> 各プロセスに (sit-for 0) などを入れてみるようなことは、たぶんど
> なたかがすでに試しているのではないかと思うのですが、いかがですか?

w3m-idle-images-show() の中にはすでに "(sit-for 0.1 t)" がありますね。た
だ、この処理ほんとは取り除くべきであるようです。 info によるとタイマーで
呼ばれる関数の中で sit-for() を呼ぶと再帰的にタイマーが呼ばれたり、
keyboard-translate が二回かかってしまったりよろしくないようです。

c.f. (info "(elisp) Timers")

むしろ問題は画像の取得などのさいに、無闇に w3m process を作ってしまうこと
かと思います。たとえば、このスレッドの最初で示されていたページだとあっと
いうまに 130ほども w3m が起動され、その sentinel で手いっぱいになってい
るのではないでしょうか。

ということで

- (画像関連の) w3m の起動数を抑制
  or
- 画像と分っているものには w3m を使わない (curl や url-retrieve などの軽
  量なものにする)

というのはどうでしょうか。

--
青田

Attachment: pgpJN21qXrvgD.pgp
Description: PGP signature