[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
## Re: How is current_matrix and desired_matrix be created?

**From**: |
Eli Zaretskii |

**Subject**: |
Re: How is current_matrix and desired_matrix be created? |

**Date**: |
Mon, 04 May 2020 17:55:44 +0300 |

>* Date: Mon, 4 May 2020 13:49:55 +0200*
>* From: <address@hidden>*
>* *
>* Current matrix is the status as is shown on screen. Buffer updates*
>* (insert character here, change some property there, scroll, etc)*
>* go (conceptually, see below) to desired matrix. So the differences*
>* of both represent the work that has to be done.*
>* *
>* At redisplay time, both are compared and some "minimal" set of*
>* changes is calculated, which are transmitted to the "glass", as*
>* Gerd calls that.*
Small correction: the desired matrix is built as part of redisplay,
not before.
>* At this point, current matrix is thrown away, and desired matrix*
>* becomes current matrix.*
Small correction: the current matrix is never thrown away. Instead,
it is updated by copying portions of the desired matrix into the
corresponding portions of the current matrix. Then the _desired_
matrix is thrown away.
>* The "conceptually" above hints at the fact that the desired*
>* matrix is "sparse", i.e. where it is equal to the current matrix*
>* it might have a "hole" (if I got things right it happens line-*
>* wise). So at redisplay time it starts out empty (which means*
>* "equal to current matrix").*
Exactly, which is why the current matrix cannot be thrown away.