From: Alan Third <alan@idiocy.org>
To: Lars Ingebrigtsen <larsi@gnus.org>
Cc: Gregory Heytings <ghe@sdf.org>, Eli Zaretskii <eliz@gnu.org>,
emacs-devel@gnu.org
Subject: Re: Redisplay slower in Emacs 28 than Emacs 27
Date: Mon, 7 Dec 2020 22:23:35 +0000 [thread overview]
Message-ID: <X86rZ/NMjccN+bhC@breton.holly.idiocy.org> (raw)
In-Reply-To: <874kkx6zwj.fsf@gnus.org>
On Mon, Dec 07, 2020 at 10:59:24PM +0100, Lars Ingebrigtsen wrote:
> And this is the culprit -- i.e., this is what's busting the cache, as
> far as I can tell:
>
> (defun tool-bar--image-expression (icon)
> "Return an expression that evaluates to an image spec for ICON."
> (let* ((fg (face-attribute 'tool-bar :foreground))
> (bg (face-attribute 'tool-bar :background))
> (colors (nconc (if (eq fg 'unspecified) nil (list :foreground fg))
> (if (eq bg 'unspecified) nil (list :background bg))))
> (xpm-spec (list :type 'xpm :file (concat icon ".xpm")))
> (xpm-lo-spec (list :type 'xpm :file
> (concat "low-color/" icon ".xpm")))
> (pbm-spec (append (list :type 'pbm :file
> (concat icon ".pbm")) colors))
> (xbm-spec (append (list :type 'xbm :file
> (concat icon ".xbm")) colors)))
> `(find-image (cond ((not (display-color-p))
> ',(list pbm-spec xbm-spec xpm-lo-spec xpm-spec))
> ((< (display-color-cells) 256)
> ',(list xpm-lo-spec xpm-spec pbm-spec xbm-spec))
> (t
> ',(list xpm-spec pbm-spec xbm-spec))))))
>
> Whenever Emacs is asked to redisplay the toolbar, Emacs will run this
> function? That's what my instrumentation seems to say...
>
> I don't use toolbars normally, so I'm not sure how they're supposed to
> work -- but shouldn't this toolbar data be computed only once, instead
> of repeatedly?
I think the image cache is actually broken.
If we have two image specs that have the same contents, but don't have
identical memory locations, surely we still want the cache to work?
For example when playing an animated gif image.el doesn't store the
image specs for each frame, it generates them on the fly by
incrementing the frame counter. I can see that Emacs creates a new
cache entry for every frame every time the gif is played through.
That means it must be decoding every frame every time.
--
Alan Third
next prev parent reply other threads:[~2020-12-07 22:23 UTC|newest]
Thread overview: 82+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-12-07 14:53 Redisplay slower in Emacs 28 than Emacs 27 Gregory Heytings via Emacs development discussions.
2020-12-07 15:04 ` Lars Ingebrigtsen
2020-12-07 15:14 ` Gregory Heytings via Emacs development discussions.
2020-12-07 15:19 ` Lars Ingebrigtsen
2020-12-07 15:28 ` Gregory Heytings via Emacs development discussions.
2020-12-07 15:41 ` Lars Ingebrigtsen
2020-12-07 15:43 ` Gregory Heytings via Emacs development discussions.
2020-12-07 15:45 ` Gregory Heytings via Emacs development discussions.
2020-12-07 16:14 ` Lars Ingebrigtsen
2020-12-07 16:46 ` Gregory Heytings via Emacs development discussions.
2020-12-07 17:30 ` Eli Zaretskii
2020-12-07 18:45 ` Gregory Heytings via Emacs development discussions.
2020-12-07 18:47 ` Lars Ingebrigtsen
2020-12-07 18:49 ` Gregory Heytings via Emacs development discussions.
2020-12-07 20:58 ` Alan Third
2020-12-07 21:24 ` Gregory Heytings via Emacs development discussions.
2020-12-07 21:06 ` Gregory Heytings via Emacs development discussions.
2020-12-07 21:15 ` Lars Ingebrigtsen
2020-12-07 21:23 ` Alan Third
2020-12-07 21:31 ` Lars Ingebrigtsen
2020-12-07 21:47 ` Lars Ingebrigtsen
2020-12-07 21:46 ` Gregory Heytings via Emacs development discussions.
2020-12-07 21:49 ` Gregory Heytings via Emacs development discussions.
2020-12-07 21:59 ` Lars Ingebrigtsen
2020-12-07 22:11 ` Lars Ingebrigtsen
2020-12-07 22:56 ` Gregory Heytings via Emacs development discussions.
2020-12-07 23:02 ` Lars Ingebrigtsen
2020-12-07 23:09 ` Gregory Heytings via Emacs development discussions.
2020-12-07 23:44 ` Lars Ingebrigtsen
2020-12-07 23:47 ` Lars Ingebrigtsen
2020-12-08 0:04 ` Gregory Heytings via Emacs development discussions.
2020-12-07 23:48 ` Lars Ingebrigtsen
2020-12-08 0:17 ` Gregory Heytings via Emacs development discussions.
2020-12-08 0:23 ` Lars Ingebrigtsen
2020-12-08 0:41 ` Lars Ingebrigtsen
2020-12-08 1:21 ` Lars Ingebrigtsen
2020-12-08 17:21 ` João Távora
2020-12-08 14:58 ` Eli Zaretskii
2020-12-08 15:07 ` Lars Ingebrigtsen
2020-12-08 15:19 ` Lars Ingebrigtsen
2020-12-08 16:17 ` Eli Zaretskii
2020-12-08 16:34 ` Lars Ingebrigtsen
2020-12-08 16:56 ` Eli Zaretskii
2020-12-08 17:52 ` Lars Ingebrigtsen
2020-12-08 16:11 ` Eli Zaretskii
2020-12-07 22:23 ` Alan Third [this message]
2020-12-07 22:32 ` Lars Ingebrigtsen
2020-12-07 18:50 ` Lars Ingebrigtsen
2020-12-07 19:26 ` Eli Zaretskii
2020-12-08 14:06 ` Lars Ingebrigtsen
2020-12-08 15:50 ` Eli Zaretskii
2020-12-08 15:56 ` Stefan Monnier
2020-12-08 16:21 ` Eli Zaretskii
2020-12-08 16:31 ` Lars Ingebrigtsen
2020-12-08 16:53 ` Eli Zaretskii
2020-12-08 17:29 ` Lars Ingebrigtsen
2020-12-08 17:36 ` Eli Zaretskii
2020-12-08 17:51 ` Lars Ingebrigtsen
2020-12-08 18:03 ` Eli Zaretskii
2020-12-08 18:39 ` Stefan Monnier
2020-12-08 19:12 ` Lars Ingebrigtsen
2020-12-08 19:36 ` Lars Ingebrigtsen
2020-12-08 20:21 ` Eli Zaretskii
2020-12-08 20:32 ` Lars Ingebrigtsen
2020-12-08 20:35 ` Lars Ingebrigtsen
2020-12-08 20:51 ` Lars Ingebrigtsen
2020-12-08 21:10 ` Alfred M. Szmidt
2020-12-08 21:41 ` Lars Ingebrigtsen
2020-12-08 22:31 ` Alfred M. Szmidt
2020-12-08 21:33 ` Stefan Monnier
2020-12-08 22:46 ` Stefan Monnier
2020-12-08 22:58 ` Lars Ingebrigtsen
2020-12-08 23:10 ` Stefan Monnier
2020-12-08 23:43 ` Lars Ingebrigtsen
2020-12-09 18:49 ` Eli Zaretskii
2020-12-09 21:01 ` Stefan Monnier
2020-12-10 3:36 ` Eli Zaretskii
2020-12-10 16:21 ` Stefan Monnier
2020-12-07 16:06 ` Óscar Fuentes
2020-12-07 16:15 ` Gregory Heytings via Emacs development discussions.
2020-12-07 16:16 ` Eli Zaretskii
2020-12-07 15:21 ` Jean Louis
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=X86rZ/NMjccN+bhC@breton.holly.idiocy.org \
--to=alan@idiocy.org \
--cc=eliz@gnu.org \
--cc=emacs-devel@gnu.org \
--cc=ghe@sdf.org \
--cc=larsi@gnus.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).