GNU bug report logs - #38187
27.0.50; No mouse-wheel scaling on images

Previous Next

Package: emacs;

Reported by: Juri Linkov <juri <at> linkov.net>

Date: Tue, 12 Nov 2019 21:11:02 UTC

Severity: normal

Found in version 27.0.50

Fixed in version 27.1

Done: Lars Ingebrigtsen <larsi <at> gnus.org>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: Alan Third <alan <at> idiocy.org>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: larsi <at> gnus.org, stefan <at> marxist.se, 38187 <at> debbugs.gnu.org, juri <at> linkov.net
Subject: bug#38187: 27.0.50; No mouse-wheel scaling on images
Date: Fri, 22 Nov 2019 10:33:00 +0000
On Fri, Nov 22, 2019 at 12:04:49PM +0200, Eli Zaretskii wrote:
> > Date: Fri, 22 Nov 2019 09:50:08 +0000
> > From: Alan Third <alan <at> idiocy.org>
> > Cc: 38187 <at> debbugs.gnu.org, stefan <at> marxist.se, Juri Linkov <juri <at> linkov.net>
> > 
> > It would be nice if Emacs was able to reuse the actual image data
> > where the only difference is scaling or rotation.
> 
> I think we found that too complicated at the time.

Yes, and I’m not sure the pay‐off would be worth it as it really only
makes a big difference in situations like these where an image is
being scaled repeatedly.

But we can consider it a wishlist item. ;)

> > A simple ‘solution’ to the mousewheel scaling issue would be to
> > explicitly flush the old image from the cache on each change. I think
> > that’s what image mode does when you zoom.
> 
> image-mode can do that when it knows the scaled image will replace the
> previous one, yes.  (We will need to add an API for that, I think.)
> But that's not cache eviction, that's application being smarter about
> the "garbage" it produces.

Actually, now I look at the code, when an image is resized using the
mousewheel the previous image should already be flushed.

In image.el we have this function:

(defun image--get-imagemagick-and-warn ()
  (unless (or (fboundp 'imagemagick-types) (image-transforms-p))
    (error "Cannot rescale images on this terminal"))
  (let ((image (image--get-image)))
    (image-flush image)    ;;; <<---------------
    (when (and (fboundp 'imagemagick-types)
               (not (image-transforms-p)))
      (plist-put (cdr image) :type 'imagemagick))
    image))

which is called every time an image is resized. So perhaps I
misunderstand what image-flush does, or we do have a memory leak?
-- 
Alan Third




This bug report was last modified 5 years and 237 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.