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

Re: pages with many images slow



白井です。

# 開き直って最初から日本語。

From: Naohiro Aota <naota@xxxxxxxxx> さん曰く
Subject: [emacs-w3m:10639] Re: pages with many images slow
Message-ID: <87ocxuja5o.fsf@xxxxxxxxxxxxxxxx>
Date: Tue, 27 Jan 2009 01:37:39 +0900

> To be exact, emacs-w3m waits for retrieving process creating or image
> size conversion (if cached and need to resize). Anyway, I changed the
> code to use the idle-timer system only when all the following conditions
> are met.
> 
> 1. the image is remote one
> 2. emacs-w3m doesn't have cache of the image
> 3. emacs-w3m doesn't need to resize the image
> 
> Now, I think the code is good enough to be tested in emacs-w3m CVS. If
> there is no objection, I'll commit the code in the CVS.

一点不味いところを見つけました。Mew で text/html のパートを表示
するときの話ですが、他の MUA も同じじゃないかな?

従来は Mew + w3m の設定で (setq mew-w3m-auto-insert-image t)
とすると、text/html のパート内部のうち、mew-w3m-safe-url-regexp
で示された "\\`cid:" だけを自動的に表示して、外部にアクセスする
画像データは取得しに行きませんでした。

が、現在は同時に取得しに行ってしまいます。ちょっとまずい。

Mew だと↓のように w3m-region() を呼ぶわけなので、w3m-region()
には、w3m-safe-url-regexp が効いていて外部にはアクセスしなかった
のですが、現状では、timer で遅れて起動されるので、その時に呼ばれ
た w3m-image() => w3m-retrieve() ではすでに w3m-safe-url-regexp
が nil となっていてガードが効かない、ということだと思います。

  (let ((w3m-display-inline-images mew-w3m-auto-insert-image)
	(w3m-safe-url-regexp (when mew-w3m-use-safe-url-regexp
			       mew-w3m-safe-url-regexp))
    .....
	w3m-force-redisplay	;; don't redraw
	charset wcs xref
	cache begin end params execute)
	  (w3m-region (point)
		      (progn (insert-buffer-substring cache begin end)
			     (point))
		      xref))))

メインルーチンの方で直すなら、現状「変数 w3m-safe-url-regexp」だ
けをみているところを「プロパティ w3m-safe-url-regexp」も見るよう
にすれば大丈夫だと思います。画像の delay 表示側で対応するより、
その方が素直かも。
 
-- 
白井秀行 (mailto:shirai@xxxxxxxxxxx)