all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Eli Zaretskii <eliz@gnu.org>
To: Stefan Monnier <monnier@iro.umontreal.ca>
Cc: tomas@tuxteam.de, emacs-devel@gnu.org
Subject: Re: Emacs canvas support
Date: Thu, 30 Apr 2020 16:46:57 +0300	[thread overview]
Message-ID: <831ro5xezy.fsf@gnu.org> (raw)
In-Reply-To: <jwvftcl6adj.fsf-monnier+emacs@gnu.org> (message from Stefan Monnier on Wed, 29 Apr 2020 21:19:51 -0400)

> From: Stefan Monnier <monnier@iro.umontreal.ca>
> Cc: Eli Zaretskii <eliz@gnu.org>,  emacs-devel@gnu.org
> Date: Wed, 29 Apr 2020 21:19:51 -0400
> 
> I think it would make more sense to treat the overlaid canvas as
> a completely separate pixmap: when we get an request to redraw
> a particular area of the screen, we'd ask the current redisplay code to
> redraw the corresponding text content and then we'd ask the canvas code
> to draw on top of it.

Unfortunately, most redisplay cycles don't start from a request to
redraw a particular area of the screen.  This only happens when we get
expose events from the WM, which is not the "normal" trigger of
redisplay.  Usually, redisplay is entered when Emacs is idle, and it's
one of the display engine's main jobs to figure out what parts of
which windows need to be redrawn, by just considering the changes in
buffer text, their properties/overlays, and window geometry and
starting point.  In doing so, the display engine need to know, up
front, which parts of the display reside where on the screen, whether
any of them needs to be redrawn because the underlying Lisp data was
modified by some command since the last redisplay.

So AFAIU it won't work to redraw the "canvas" only when the text
beneath it changes; the display engine needs to be able to redraw the
canvas itself even if the text didn't change, and it needs to know
which portions of the window are affected by the canvas in order to
make decisions regarding how to redraw the window optimally.



  parent reply	other threads:[~2020-04-30 13:46 UTC|newest]

Thread overview: 53+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <875zdikdge.fsf.ref@yahoo.com>
2020-04-29  6:34 ` Emacs canvas support Po Lu via Emacs development discussions.
2020-04-29  8:24   ` Eli Zaretskii
2020-04-29  9:57     ` Po Lu
2020-04-29 10:10       ` Eli Zaretskii
2020-04-29 10:22         ` Po Lu
2020-04-29 10:27           ` Po Lu via Emacs development discussions.
2020-04-29 11:47             ` Eli Zaretskii
2020-04-29 10:35           ` Eli Zaretskii
2020-04-29 10:41             ` Po Lu
2020-04-29 11:51               ` Eli Zaretskii
2020-04-29 12:12                 ` Po Lu
2020-04-29 16:14               ` David Engster
2020-04-29 16:54                 ` Eli Zaretskii
2020-04-29 17:16                   ` tomas
2020-04-29 17:27                     ` Eli Zaretskii
2020-04-29 17:38                       ` Eli Zaretskii
2020-04-30 13:11                         ` Arthur Miller
2020-04-30 14:18                           ` Eli Zaretskii
2020-04-30 14:58                             ` Arthur Miller
2020-04-30 17:30                               ` Eli Zaretskii
2020-05-01 14:32                                 ` Arthur Miller
2020-04-29 18:51                       ` tomas
2020-04-29 19:03                         ` Eli Zaretskii
2020-04-29 19:08                           ` tomas
2020-04-29 19:25                             ` Eli Zaretskii
2020-04-29 19:59                               ` tomas
2020-04-30  1:19                                 ` Stefan Monnier
2020-04-30  6:55                                   ` tomas
2020-04-30 12:03                                     ` Stefan Monnier
2020-04-30 12:50                                       ` tomas
2020-04-30  8:04                                   ` Po Lu
2020-04-30 12:08                                     ` Stefan Monnier
2020-04-30 13:55                                     ` Eli Zaretskii
2020-05-01 23:27                                       ` Po Lu
2020-05-02  6:51                                         ` Eli Zaretskii
2020-04-30 13:46                                   ` Eli Zaretskii [this message]
2020-04-30 14:37                                     ` Stefan Monnier
2020-04-30 17:27                                       ` Eli Zaretskii
2020-04-30 18:22                                         ` Stefan Monnier
2020-04-30 18:42                                           ` Eli Zaretskii
2020-04-30 14:27                                   ` Drew Adams
2020-04-30 13:33                                 ` Eli Zaretskii
2020-04-30 13:52                                   ` Arthur Miller
2020-04-29 19:23                   ` David Engster
2020-04-30 13:29                     ` Eli Zaretskii
2020-04-30  6:52                   ` Corwin Brust
2020-04-29 17:08                 ` Eli Zaretskii
2020-04-29 20:14                   ` David Engster
2020-04-30 13:35                     ` Eli Zaretskii
2020-04-29 20:48   ` Juri Linkov
2020-04-30  2:36     ` Eli Zaretskii
2020-04-30 20:20       ` Juri Linkov
2020-05-01  6:01         ` Eli Zaretskii

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=831ro5xezy.fsf@gnu.org \
    --to=eliz@gnu.org \
    --cc=emacs-devel@gnu.org \
    --cc=monnier@iro.umontreal.ca \
    --cc=tomas@tuxteam.de \
    /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.