A fast, lightweight and minimalistic Wayland terminal emulator
Find a file
Daniel Eklöf a35738d96f
scroll-region: don't clear damage queue when changing scroll region
Vim, for example, changes the scroll region every time you scroll a
single line. Thus, resetting the damage queue is slow.

This reworks the damage handling of scroll updates:

* Split damage queue into two: one for scroll operations and one for
  update/erase operations.
* Don't separate update/erase operations inside/outside the scroll
  region
* Store the current scroll region in the scroll damage operation. This
  allows us to stack multiple scroll operations with different scroll
  regions.
* When updating update/erase operations after a scroll operation,
  split the update/erase operations if necessary (the current scroll
  operation may have a scroll region different from before, thus
  forcing us to split existing update/erase operations.
* The renderer no longer erases after a scroll. The scroll operation
  also adds an erase operation. This also means that erase operation
  are subject to adjustments by later scroll operations.
2019-06-25 20:11:08 +02:00
.gitignore initial commit: maps an XDG toplevel window 2019-06-12 20:08:54 +02:00
csi.c scroll-region: don't clear damage queue when changing scroll region 2019-06-25 20:11:08 +02:00
csi.h wip: vt parsing: initial csi/osc dispatching 2019-06-15 22:22:44 +02:00
font.c initial grid implementation 2019-06-13 16:24:35 +02:00
font.h initial grid implementation 2019-06-13 16:24:35 +02:00
grid.c scroll-region: don't clear damage queue when changing scroll region 2019-06-25 20:11:08 +02:00
grid.h scroll-region: don't clear damage queue when changing scroll region 2019-06-25 20:11:08 +02:00
input.c vt: implement DECCKM (cursor key sends either SS3 or CSI escapes) 2019-06-23 14:12:20 +02:00
input.h wip: initial input handling 2019-06-19 10:04:47 +02:00
LICENSE add license 2019-06-12 20:10:12 +02:00
log.c initial commit: maps an XDG toplevel window 2019-06-12 20:08:54 +02:00
log.h initial commit: maps an XDG toplevel window 2019-06-12 20:08:54 +02:00
main.c scroll-region: don't clear damage queue when changing scroll region 2019-06-25 20:11:08 +02:00
meson.build wip: initial input handling 2019-06-19 10:04:47 +02:00
osc.c wip: vt parsing: initial csi/osc dispatching 2019-06-15 22:22:44 +02:00
osc.h wip: vt parsing: initial csi/osc dispatching 2019-06-15 22:22:44 +02:00
shm.c shm: width/height must match 2019-06-12 20:17:35 +02:00
shm.h initial commit: maps an XDG toplevel window 2019-06-12 20:08:54 +02:00
slave.c wip: vt parsing: initial csi/osc dispatching 2019-06-15 22:22:44 +02:00
slave.h Set up pseudo terminal and fork slave 2019-06-13 15:19:10 +02:00
terminal.h scroll-region: don't clear damage queue when changing scroll region 2019-06-25 20:11:08 +02:00
tllist.h initial commit: maps an XDG toplevel window 2019-06-12 20:08:54 +02:00
vt.c scroll-region: don't clear damage queue when changing scroll region 2019-06-25 20:11:08 +02:00
vt.h wip: vt parsing: initial csi/osc dispatching 2019-06-15 22:22:44 +02:00