From 2adb7d1c5da157d072c8606ae086a82ae8d94142 Mon Sep 17 00:00:00 2001 From: Lars Magne Ingebrigtsen Date: Sat, 18 Sep 2010 23:12:02 +0200 Subject: [PATCH] Fetch all images in parallel. 2010-09-18 Julien Danjou * gnus-html.el (gnus-html-schedule-image-fetching): Fetch all images in parallel. --- lisp/ChangeLog | 5 +++++ lisp/gnus-html.el | 46 ++++++++++++++++++++++------------------------ 2 files changed, 27 insertions(+), 24 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 12a7a07c4..468f62193 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2010-09-18 Julien Danjou + + * gnus-html.el (gnus-html-schedule-image-fetching): Fetch all images in + parallel. + 2010-09-18 Lars Magne Ingebrigtsen * nnimap.el (nnimap-update-info): When doing partial marks update, get diff --git a/lisp/gnus-html.el b/lisp/gnus-html.el index 40b74c243..b2ecb5cdf 100644 --- a/lisp/gnus-html.el +++ b/lisp/gnus-html.el @@ -297,34 +297,32 @@ fit these criteria." (defun gnus-html-schedule-image-fetching (buffer images) (gnus-message 8 "gnus-html-schedule-image-fetching: buffer %s, images %s" buffer images) - (url-retrieve (caar images) - 'gnus-html-image-fetched - (list buffer images))) + (dolist (image images) + (url-retrieve (car image) + 'gnus-html-image-fetched + (list buffer image)))) (defun gnus-html-image-id (url) (expand-file-name (sha1 url) gnus-html-cache-directory)) -(defun gnus-html-image-fetched (status buffer images) - (let ((spec (pop images))) - (when (and (buffer-live-p buffer) - ;; If the position of the marker is 1, then that - ;; means that the text it was in has been deleted; - ;; i.e., that the user has selected a different - ;; article before the image arrived. - (not (= (marker-position (cadr spec)) (point-min)))) - (let ((file (gnus-html-image-id (car spec)))) - ;; Search the start of the image data - (search-forward "\n\n") - ;; Write region (image) silently - (write-region (point) (point-max) file nil 1) - (kill-buffer) - (with-current-buffer buffer - (let ((inhibit-read-only t) - (string (buffer-substring (cadr spec) (caddr spec)))) - (delete-region (cadr spec) (caddr spec)) - (gnus-html-put-image file (cadr spec) string)))) - (when images - (gnus-html-schedule-image-fetching buffer images))))) +(defun gnus-html-image-fetched (status buffer image) + (when (and (buffer-live-p buffer) + ;; If the position of the marker is 1, then that + ;; means that the text it was in has been deleted; + ;; i.e., that the user has selected a different + ;; article before the image arrived. + (not (= (marker-position (cadr image)) (point-min)))) + (let ((file (gnus-html-image-id (car image)))) + ;; Search the start of the image data + (search-forward "\n\n") + ;; Write region (image) silently + (write-region (point) (point-max) file nil 1) + (kill-buffer) + (with-current-buffer buffer + (let ((inhibit-read-only t) + (string (buffer-substring (cadr image) (caddr image)))) + (delete-region (cadr image) (caddr image)) + (gnus-html-put-image file (cadr image) string)))))) (defun gnus-html-put-image (file point string &optional url alt-text) (when (gnus-graphic-display-p) -- 2.25.1