all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: "Jan Djärv" <jan.h.d@swipnet.se>
To: "alin.s" <alinsoar@voila.fr>
Cc: Emacs-devel@gnu.org
Subject: Re: redisplay system of emacs
Date: Fri, 12 Feb 2010 15:25:11 +0100	[thread overview]
Message-ID: <4B7564C7.1010309@swipnet.se> (raw)
In-Reply-To: <27563610.post@talk.nabble.com>

alin.s skrev:
> 
> 
> alin.s skrev:
>> An improvement in redisplay for X can be done by defining in the edit area
>> of
>> every window a subwindow for every character. For a window of geometry
>> 200x70 of characters, it would be 1400 windows registered in X-server.
> 
> You are mad.  Everything would be 1400 times more.  1400 times more calls to 
> the X server, 1400 times more GC:s created, 1400 times more events from the
> X 
> server, 1400 times more Xft structures (XftDraws for example) created.
> Emacs would be at least 1400 times slower.
> 
> The computations are not done as you say. Please read the X windows manual.

I have done so for every edition since X10.

> 
> If you make 1000 identical calls of Xlib functions, Xlib put them into its
> queue, and send them once.
> 

Yes it does put calls in a queue.  All 1400 of them instead of one.  But given 
how IPC works, in reality it will be many writes to the socket anyway, even if 
the queue tries to minimize that.  And the amount of data is still 1400 (or 
14000) times more.  X does not squeeze several calls into one, there are still 
several calls.  And they are not identical anyway, they are for different windows.

> 
> I do not know what is bad to keep in the server 100.000 of little
> structures. Apart from memory consuming, no problem of speed.

But you have to keep track of all handles to these data as well in Emacs so 
both have to have 14000 times more data.

> 
> You do not need 14.000 Graphics Contextes, only 1 for window is enough!

Ok, so GC:s wasn't a good example.

> It is many times more consuming of memory of the server side. Please learn
> Xlib programming to understand it.

No need to be condescending, it doesn't help your cause.  I've done X 
programming since the late 80:s.

> 
>> To say more, in order to clear a character it would require no
>> computation,
>> but only a simply call of XClearWindow().
>>
>> Every window could have its own font.
> 
> So say we have 1400 windows each with a different font with a different
> size? 
>   How do you purpose we lay this out?  Instead of laying out characters we
> are 
> now laying out windows.  Same problem, but with an enormous overhead.
> 
> Same problem, only 1 GC for every window.

No it is not the same problem.  For every window you will have to tell X where 
it will be positioned, i,e. x and y and width and height.  If every window 
have its own font with its own size you have to calculate all this for every 
window, and the recalculate it for all windows when a font changes in one 
window.  Sounds like what redisplay does today.

> 
>> And to say more, an image of high dimension will be divided in many
>> subwindows, and emacs will be able to display images normally, not as a
>> huge
>> glyph.
> 
> Again, making the display of an image to be so much slower, because instead
> of 
> one (ideally), call to the X server, we now have one per window.  And what a 
> nightmare to figure out what part of an image that needs to be redrawn and 
> moved if the user changes the size of the Emacs frame...
> 
> We do have 1 call for window, and 1 network message to the server for every
> update.

... times 14000 windows...

> 
> The only problem in this implementation would be to compute the size of
> every window, and to compute its coordinates.

So you have gained nothing really, redisplay is the hard part.

	Jan D.





  reply	other threads:[~2010-02-12 14:25 UTC|newest]

Thread overview: 162+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-01-28  0:19 redisplay system of emacs alin.s
2010-01-28  4:13 ` Eli Zaretskii
2010-01-28  9:07   ` Lennart Borgman
2010-01-28 11:27     ` Eli Zaretskii
2010-01-28 11:47       ` Lennart Borgman
2010-01-28 12:43         ` Eli Zaretskii
2010-01-28 12:53           ` Lennart Borgman
2010-01-28 14:10             ` Miles Bader
2010-01-28 15:04               ` alin.s
2010-01-28 22:34               ` Lennart Borgman
2010-01-29 10:04               ` Paul R
2010-01-29 10:17                 ` David Kastrup
2010-01-29 10:23                   ` Lennart Borgman
2010-01-29 10:30                     ` David Kastrup
2010-01-29 13:18                       ` Lennart Borgman
2010-01-29 11:03                     ` Miles Bader
2010-01-29 11:38                       ` Eli Zaretskii
2010-01-29 15:10                         ` Miles Bader
2010-01-29 17:30                           ` Eli Zaretskii
2010-01-29 10:48                   ` Paul R
2010-01-29 11:01                     ` David Kastrup
2010-01-29 18:19                   ` Stefan Monnier
2010-01-29 11:35                 ` Eli Zaretskii
2010-01-29 13:06                   ` Paul R
2010-01-29 13:10                     ` David Kastrup
2010-01-29 13:45                     ` Eli Zaretskii
2010-01-29 15:28                     ` Chong Yidong
2010-01-29 18:35                     ` Stefan Monnier
2010-01-29 18:56                       ` Óscar Fuentes
2010-01-30 11:46                         ` Richard Stallman
2010-01-30 12:51                           ` Óscar Fuentes
2010-01-30 15:39                             ` Eli Zaretskii
2010-01-30 19:21                               ` Óscar Fuentes
2010-01-30 21:31                                 ` Eli Zaretskii
2010-01-31  9:32                               ` David Kastrup
2010-01-31 12:41                             ` Richard Stallman
2010-01-29 19:53                       ` Eli Zaretskii
2010-01-30 18:04                         ` Stefan Monnier
2010-01-30 18:39                           ` Stephen J. Turnbull
2010-01-30 10:34                       ` Fabian Ezequiel Gallina
2010-01-30 10:52                         ` David Kastrup
2010-01-30 21:18                         ` Stefan Monnier
2010-01-29 13:07                   ` David Kastrup
2010-01-28  5:10 ` Ken Hori
2010-01-28 12:10 ` Stephen J. Turnbull
2010-01-28 13:41   ` alin.s
2010-01-28 14:50     ` Stephen J. Turnbull
2010-02-12  8:31 ` alin.s
2010-02-12 12:10   ` Juanma Barranquero
2010-02-12 13:41     ` alin.s
2010-02-12 12:49   ` Jan Djärv
2010-02-12 13:30     ` alin.s
2010-02-12 14:25       ` Jan Djärv [this message]
2010-02-12 14:37         ` alin.s
2010-02-12 14:53         ` alin.s
2010-02-12 15:11           ` Jan Djärv
2010-02-12 15:31             ` David Kastrup
2010-02-12 15:55               ` Jan Djärv
2010-02-12 16:53               ` alin.s
2010-02-12 18:55                 ` David Kastrup
2010-02-14 19:13                   ` alin.s
2010-02-17 13:14                     ` Chong Yidong
2010-02-23  0:45                       ` Giuseppe Scrivano
2010-02-23  3:01                         ` David Reitter
2010-02-23  3:34                           ` Tom Tromey
2010-02-23 14:31                         ` Richard Stallman
2010-03-05 22:53                         ` Concurrency (was: redisplay system of emacs) Stefan Monnier
2010-03-05 22:57                           ` Andreas Schwab
2010-03-11 14:18                           ` Giuseppe Scrivano
2010-03-25 16:49                           ` Giuseppe Scrivano
2010-03-26 17:10                             ` Concurrency Ted Zlatanov
2010-03-26 19:37                               ` Concurrency Tom Tromey
2010-03-27  3:00                                 ` Concurrency Ted Zlatanov
2010-03-27 13:33                                   ` Concurrency Stefan Monnier
2010-03-29 18:18                                     ` Concurrency Tom Tromey
2010-03-28 19:40                                   ` Concurrency Tom Tromey
2010-03-28 20:03                                     ` Concurrency Stefan Monnier
2010-03-28 20:25                                       ` Concurrency Davis Herring
2010-03-28 20:54                                         ` Concurrency Giuseppe Scrivano
2010-03-28 23:18                                           ` Concurrency Stefan Monnier
2010-03-29 10:04                                             ` Concurrency Giuseppe Scrivano
2010-03-29 15:37                                               ` Concurrency Tom Tromey
2010-03-29 16:16                                                 ` Concurrency Stefan Monnier
2010-03-29 16:36                                                   ` Concurrency Ken Raeburn
2010-03-29 17:41                                                     ` Concurrency Stefan Monnier
2010-03-29 16:33                                                 ` Concurrency Ken Raeburn
2010-03-29 16:58                                                   ` Concurrency Tom Tromey
2010-03-29 17:46                                                     ` Concurrency Stefan Monnier
2010-03-29 17:37                                                 ` Concurrency Giuseppe Scrivano
2010-03-29 18:21                                                   ` Concurrency Stefan Monnier
2010-03-28 21:19                                         ` Concurrency Tom Tromey
2010-03-28 21:22                                         ` Concurrency Daniel Colascione
2010-03-28 23:20                                           ` Concurrency Stefan Monnier
2010-03-29  2:18                                           ` Concurrency Tom Tromey
2010-03-28 21:17                                       ` Concurrency Tom Tromey
2010-03-29 16:25                                         ` Concurrency Ken Raeburn
2010-03-29 16:49                                           ` Concurrency Tom Tromey
2010-03-29 17:39                                             ` Concurrency Stefan Monnier
2010-03-31 17:13                                         ` gsoc for concurrent Emacs? (was: Concurrency) Ted Zlatanov
2010-04-01  9:45                                           ` Giuseppe Scrivano
2010-03-28 21:04                                     ` Concurrency Giuseppe Scrivano
2010-03-28 21:25                                     ` Concurrency Daniel Colascione
2010-03-29  2:20                                       ` Concurrency Tom Tromey
2010-02-14 19:25                   ` redisplay system of emacs alin.s
2010-02-16 16:40                 ` Davis Herring
2010-02-16 19:20                   ` grischka
2010-02-16 19:55                     ` Thien-Thi Nguyen
2010-02-17 13:56                       ` alin.s
2010-02-16 20:00                     ` Eli Zaretskii
2010-02-16 20:56                       ` grischka
2010-02-17  4:20                         ` Eli Zaretskii
  -- strict thread matches above, loose matches on Subject: below --
2010-01-29 19:48 grischka
2010-01-30  5:39 ` Stephen J. Turnbull
2010-01-30  9:53   ` David Kastrup
2010-01-30 11:01     ` Stephen J. Turnbull
2010-01-30 11:08       ` David Kastrup
2010-01-30 11:54         ` Paul R
2010-01-30 13:52           ` Stephen J. Turnbull
2010-01-30 11:24       ` Eli Zaretskii
2010-01-30 12:53       ` Alan Mackenzie
2010-01-30  9:57   ` Eli Zaretskii
2010-01-30 11:46 ` Richard Stallman
2010-01-30 12:11   ` Paul R
2010-01-30 13:26     ` Alan Mackenzie
2010-01-30 13:42       ` David Kastrup
2010-01-30 13:49       ` Juanma Barranquero
2010-01-30 13:54       ` Paul R
2010-01-30 15:15         ` Stephen J. Turnbull
2010-01-30 15:07       ` Stephen J. Turnbull
2010-01-31 12:41     ` Richard Stallman
2010-01-31 16:36       ` grischka
2010-02-01 21:06         ` Richard Stallman
2010-02-02  3:32           ` Stephen J. Turnbull
2010-02-02 21:21             ` Richard Stallman
2010-02-02 21:42               ` David Kastrup
2010-02-03  0:24                 ` Lennart Borgman
2010-02-03  6:45                   ` David Kastrup
2010-02-03 13:34                 ` Richard Stallman
2010-02-03 14:15                   ` David Kastrup
2010-02-03 14:18                     ` Daniel Colascione
2010-02-04 11:01                       ` Richard Stallman
2010-02-03  2:48               ` Stephen J. Turnbull
2010-02-03 12:19                 ` Juanma Barranquero
2010-02-04 11:00                   ` Richard Stallman
2010-02-04 11:06                     ` Juanma Barranquero
2010-02-05 12:44                       ` Richard Stallman
2010-02-05 18:37                         ` grischka
2010-02-03 13:34                 ` Richard Stallman
2010-02-03 17:26                   ` Stephen J. Turnbull
2010-02-03 17:45                     ` David Kastrup
2010-02-03 18:35                     ` grischka
2010-02-03 18:36                     ` Óscar Fuentes
2010-02-03 19:03                       ` Lennart Borgman
2010-02-03 20:31                         ` Ted Zlatanov
2010-02-03 20:37                           ` Lennart Borgman
2010-02-04  8:23                       ` Stephen J. Turnbull
2010-02-04 23:18                         ` Richard Stallman
2010-02-05  5:46                           ` Stephen J. Turnbull
2010-02-04 11:01                     ` Richard Stallman
2010-02-04 11:38                       ` David Kastrup
2010-02-05 19:08                         ` Richard Stallman
2010-02-04 12:28                       ` Stephen J. Turnbull

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=4B7564C7.1010309@swipnet.se \
    --to=jan.h.d@swipnet.se \
    --cc=Emacs-devel@gnu.org \
    --cc=alinsoar@voila.fr \
    /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.