all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Alan Third <alan@idiocy.org>
To: Eli Zaretskii <eliz@gnu.org>
Cc: juanjose.garciaripoll@gmail.com, emacs-devel@gnu.org
Subject: Re: GDI+ take 3
Date: Sat, 25 Apr 2020 17:51:45 +0100	[thread overview]
Message-ID: <20200425165145.GB82687@breton.holly.idiocy.org> (raw)
In-Reply-To: <83eesgg01b.fsf@gnu.org>

On Tue, Apr 21, 2020 at 09:34:56PM +0300, Eli Zaretskii wrote:
> > Date: Tue, 21 Apr 2020 19:17:34 +0100
> > From: Alan Third <alan@idiocy.org>
> > Cc: emacs-devel@gnu.org
> > 
> > I agree with you, though, that fixing this particular performance
> > problem would require us to rethink how we load and cache images.
> 
> I don't think our image caching mechanism was designed to show
> animations.  It was designed to show a small number of static images
> within mostly-textual content.

I’ve been thinking a little about if it’s possible to move image
loading into modules to be loaded at runtime, and one of the ideas I
had to support that may be helpful here. I don’t know too much about
Emacs Lisp’s internals, so feel free to shoot this idea down.

I believe we could add a new method of defining images which would be,
in effect, a pointer to a decoded image. Perhaps a system dependent
format, like pixmap on X, or an NSImage object on macOS, but it could
easily be some system independent format we devise ourselves.

We would have to provide a function (or perhaps modules could provide
it) where we pass in a filename, or data, and get back this pointer.
The function could also take a range of frame numbers, and return a
list of image pointers all decoded at once.

When displaying the image instead of passing a filename or data to
create-image, we pass in the image pointer, and everything should work
more or less the same from there.

We would have to rewrite how animations are displayed to update the
image from a list of image pointers instead of incrementing the frame
count.

The image pointer would, presumably, be subject to garbage collection,
so we may have to be able to clear any related images from the image
cache when it’s garbage collected. I don’t know how practical this is.

-- 
Alan Third



  reply	other threads:[~2020-04-25 16:51 UTC|newest]

Thread overview: 86+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-04-04 21:25 GDI+ take 3 Juan José García-Ripoll
2020-04-05 12:58 ` Eli Zaretskii
2020-04-13  6:19   ` Eli Zaretskii
2020-04-13 10:04     ` Juan José García-Ripoll
2020-04-14 15:33       ` Eli Zaretskii
2020-04-14 17:43         ` Eli Zaretskii
2020-04-14 22:19           ` Alan Third
2020-04-16 18:39             ` Eli Zaretskii
2020-04-14 18:38         ` Dmitry Gutov
2020-04-14 18:43           ` Eli Zaretskii
2020-04-14 19:38             ` Dmitry Gutov
2020-04-14 19:08         ` Basil L. Contovounesios
2020-04-14 19:24           ` Eli Zaretskii
2020-04-14 21:57             ` Basil L. Contovounesios
2020-04-15  6:18               ` Eli Zaretskii
2020-04-15 13:40                 ` Juanma Barranquero
2020-04-15 14:00                   ` Eli Zaretskii
2020-04-15 14:12                     ` Juanma Barranquero
2020-04-15 14:17                       ` Juanma Barranquero
2020-04-15 14:28                         ` Eli Zaretskii
2020-04-15 14:35                           ` Juanma Barranquero
2020-04-15 14:43                             ` Eli Zaretskii
2020-04-15 14:47                               ` Juanma Barranquero
2020-04-15 15:00                               ` Juanma Barranquero
2020-04-15 15:02                                 ` Juanma Barranquero
2020-04-15 15:10                                   ` Eli Zaretskii
2020-04-15 15:31                                     ` Juanma Barranquero
2020-04-15 15:46                                       ` Eli Zaretskii
2020-04-15 15:56                                         ` Eli Zaretskii
2020-04-15 16:08                                           ` Eli Zaretskii
2020-04-15 16:50                                         ` Juanma Barranquero
2020-04-15 16:59                                           ` Eli Zaretskii
2020-04-15 17:24                                             ` Juanma Barranquero
2020-04-15 17:34                                               ` Eli Zaretskii
2020-04-15 17:49                                                 ` Juanma Barranquero
2020-04-15 18:13                                                   ` Eli Zaretskii
2020-04-15 18:45                                                     ` Juanma Barranquero
2020-04-15 20:21                                                       ` Eli Zaretskii
2020-04-15 20:31                                                         ` Juanma Barranquero
2020-04-16 10:04                                                           ` Eli Zaretskii
2020-04-16 23:49                                                             ` Juanma Barranquero
2020-04-17  6:55                                                               ` Eli Zaretskii
2020-04-17  7:27                                                                 ` Juan José García-Ripoll
2020-04-17  8:36                                                                   ` Juanma Barranquero
2020-04-17  9:52                                                                   ` Eli Zaretskii
2020-04-18  8:41                                                                     ` Juan José García-Ripoll
2020-04-18 10:00                                                               ` Eli Zaretskii
2020-04-18 10:09                                                                 ` Juanma Barranquero
2020-04-18 12:38                                                                   ` Juan José García-Ripoll
2020-04-18 13:38                                                                     ` Eli Zaretskii
2020-04-18 15:56                                                                       ` Juanma Barranquero
2020-04-18 16:15                                                                         ` Eli Zaretskii
2020-04-18 17:51                                                                           ` Juan José García-Ripoll
2020-04-18 18:01                                                                             ` Eli Zaretskii
2020-04-18 18:04                                                                               ` Eli Zaretskii
2020-04-18 18:49                                                                                 ` Juanma Barranquero
2020-04-18 19:15                                                                                   ` Eli Zaretskii
2020-04-18 20:19                                                                       ` Alan Third
2020-04-19 10:20                                                                         ` Juan José García-Ripoll
2020-04-19 20:08                                                                           ` Juan José García-Ripoll
2020-04-20 13:37                                                                             ` Eli Zaretskii
2020-04-21  7:35                                                                               ` Juan José García-Ripoll
2020-04-21 14:15                                                                                 ` Eli Zaretskii
2020-04-21 18:17                                                                                 ` Alan Third
2020-04-21 18:34                                                                                   ` Eli Zaretskii
2020-04-25 16:51                                                                                     ` Alan Third [this message]
2020-04-20 20:16                                                                             ` Alan Third
2020-04-21  6:25                                                                               ` Juan José García-Ripoll
2020-04-25 16:23                                                                                 ` Alan Third
2020-04-25 13:42                                                                             ` Eli Zaretskii
2020-04-26 15:14                                                                               ` Juan José García-Ripoll
2020-04-19 18:16                                                                         ` Eli Zaretskii
2020-04-19 20:28                                                                           ` Juan José García-Ripoll
2020-04-20 13:54                                                                             ` Eli Zaretskii
2020-04-21  6:44                                                                               ` Juan José García-Ripoll
2020-04-21 14:13                                                                                 ` Eli Zaretskii
2020-04-21 16:20                                                                                   ` Juan José García-Ripoll
2020-04-15 16:50                                       ` Eli Zaretskii
2020-04-15 14:27                       ` Eli Zaretskii
     [not found] <617217672.240027.1586079490291@mail1.libero.it>
2020-04-15 14:07 ` Angelo Graziosi
2020-04-15 14:15   ` Eli Zaretskii
2020-04-15 14:22     ` Angelo Graziosi
2020-04-15 14:26       ` Eli Zaretskii
2020-04-15 15:25         ` Angelo Graziosi
2020-04-15 15:27           ` Eli Zaretskii
2020-04-15 15:46             ` Angelo Graziosi

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

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200425165145.GB82687@breton.holly.idiocy.org \
    --to=alan@idiocy.org \
    --cc=eliz@gnu.org \
    --cc=emacs-devel@gnu.org \
    --cc=juanjose.garciaripoll@gmail.com \
    /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 external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.