Michael Grant
4e2abff2d6
window-copy: avoid erasing and needlessly re-flashing images during copy-mode redraws
...
window_copy_write_one() used to write text/highlight styling directly
over image-covered cells via the normal path, which - since a character
write typically clears whatever pixel content a terminal was showing
there - erased the image with nothing to redraw it back in. Image-covered
cells now bypass styling and go straight into the grid instead (a
non-graphical client's ASCII fallback for the image still depends on this
same write, so it can't just be skipped).
window_copy_write_line()'s call to image_redraw_area() used to fire
unconditionally on every redraw, needlessly recompositing (and briefly
flashing) the image on every single cursor step even after the erasure
above was fixed, even though nothing about the image had changed. It now
only fires when window_copy_update_image_refresh() (new) determines the
view's underlying history position actually moved since the last redraw.
Also adds window_copy_visible_has_images(), used by a later commit's
scroll-region fix as a bypass to a full redraw when the visible range
carries image data - line insert/delete only shifts character cells, not
already-sent image pixels, so scroll's normal fast path leaves stale or
missing image content behind.
2026-08-25 11:24:14 +01:00
..
2026-07-05 14:36:47 +01:00
2026-07-24 09:49:32 +01:00
2026-07-13 22:08:58 +01:00
2026-07-06 11:50:58 +01:00
2026-07-06 11:50:58 +01:00
2026-07-06 11:50:58 +01:00
2026-07-06 11:50:58 +01:00
2026-07-06 11:50:58 +01:00
2026-07-17 09:13:33 +01:00
2026-07-06 11:50:58 +01:00
2026-07-06 11:50:58 +01:00
2026-07-06 11:50:58 +01:00
2026-07-06 11:50:58 +01:00
2026-07-17 09:29:59 +01:00
2025-12-07 22:11:45 +00:00
2026-07-06 11:50:58 +01:00
2026-07-06 11:50:58 +01:00
2026-07-12 22:03:16 +01:00
2026-07-12 22:03:16 +01:00
2026-08-03 21:19:10 +01:00
2026-07-10 07:54:21 -07:00
2026-07-06 11:50:58 +01:00
2026-07-17 09:37:50 +01:00
2026-07-10 16:45:58 +01:00
2026-07-13 10:23:38 +01:00
2026-08-03 20:27:10 +01:00
2026-07-06 11:50:58 +01:00
2026-07-14 12:05:06 +01:00
2026-07-09 08:56:06 +01:00
2026-07-13 11:32:28 +01:00
2026-07-06 11:50:58 +01:00
2026-08-03 09:53:50 +01:00
2021-05-13 08:49:58 +01:00
2019-04-02 09:44:28 +01:00
2026-07-06 11:50:58 +01:00
2019-04-02 09:44:28 +01:00
2026-07-06 11:50:58 +01:00
2019-04-02 09:44:28 +01:00
2026-07-06 11:50:58 +01:00
2019-04-02 09:44:28 +01:00
2026-07-06 11:50:58 +01:00
2019-04-02 09:44:28 +01:00
2026-07-28 11:36:03 +01:00
2026-07-06 11:50:58 +01:00
2026-07-19 20:58:20 +01:00
2026-07-06 11:50:58 +01:00
2026-07-06 11:50:58 +01:00
2026-08-22 16:53:08 +01:00
2026-08-22 16:53:08 +01:00
2026-07-06 11:50:58 +01:00
2026-08-25 10:14:49 +01:00
2026-07-22 14:17:22 +01:00
2026-07-06 11:50:58 +01:00
2026-07-08 12:36:19 +01:00
2026-07-06 11:50:58 +01:00
2026-07-06 11:50:58 +01:00
2026-07-06 11:50:58 +01:00
2026-07-12 20:59:11 +01:00
2026-07-06 11:50:58 +01:00
2026-07-13 10:23:38 +01:00
2026-07-13 10:23:38 +01:00
2026-07-13 22:52:25 +01:00
2026-07-28 08:08:26 +01:00
2026-07-06 11:50:58 +01:00
2026-07-06 11:50:58 +01:00
2026-07-06 11:50:58 +01:00
2026-08-25 11:23:52 +01:00
2026-08-25 11:23:52 +01:00
2026-08-25 11:24:14 +01:00
2026-08-25 11:24:14 +01:00
2026-08-25 11:23:52 +01:00
2026-07-26 10:02:31 +01:00
2026-07-02 10:26:25 +01:00
2026-07-02 10:26:25 +01:00
2026-07-06 11:50:58 +01:00
2026-07-02 10:26:25 +01:00
2026-07-21 08:00:39 +01:00
2026-07-26 10:21:01 +01:00
2026-07-02 10:26:25 +01:00
2026-07-02 10:26:25 +01:00
2026-07-02 10:26:25 +01:00
2026-07-02 10:26:25 +01:00
2026-07-02 10:26:25 +01:00
2026-07-02 10:26:25 +01:00
2026-07-02 10:26:25 +01:00
2026-07-02 10:26:25 +01:00
2026-07-02 10:26:25 +01:00
2026-07-09 09:39:44 +01:00
2026-07-06 11:50:58 +01:00
2026-07-06 11:50:58 +01:00
2026-07-02 10:26:25 +01:00
2026-07-02 10:26:25 +01:00
2026-07-26 10:02:31 +01:00
2026-07-06 11:50:58 +01:00
2026-07-06 11:50:58 +01:00
2026-07-12 20:59:11 +01:00
2026-07-28 14:18:18 +01:00
2026-08-20 10:19:19 +01:00
2026-07-14 18:18:52 +01:00
2026-08-17 08:06:31 +01:00
2026-08-25 11:22:26 +01:00
2026-07-22 20:24:21 +01:00
2026-07-06 11:50:58 +01:00
2026-07-06 11:50:58 +01:00
2026-07-06 11:50:58 +01:00
2026-07-06 11:50:58 +01:00
2026-07-12 22:03:16 +01:00
2026-07-06 11:50:58 +01:00
2026-07-23 08:06:09 +01:00
2026-07-06 11:50:58 +01:00
2026-07-23 08:06:09 +01:00
2026-07-06 11:50:58 +01:00
2026-08-20 09:18:58 +01:00
2026-08-05 08:26:10 +01:00
2026-08-25 10:14:49 +01:00
2026-08-25 10:14:49 +01:00
2026-08-25 10:14:49 +01:00
2026-08-25 10:14:49 +01:00
2026-07-06 11:50:58 +01:00
2026-07-13 10:23:38 +01:00
2026-08-25 10:14:49 +01:00
2026-08-25 10:14:49 +01:00
2026-08-25 10:14:49 +01:00
2026-08-18 08:45:11 +01:00
2026-07-26 16:08:58 +01:00
2026-07-12 23:18:47 +01:00
2026-07-06 11:50:58 +01:00
2026-07-23 10:38:27 +01:00
2026-07-23 10:38:27 +01:00
2026-07-06 11:50:58 +01:00
2026-07-14 22:09:52 +01:00
2026-07-06 11:50:58 +01:00
2026-07-12 22:03:16 +01:00
2026-07-06 11:50:58 +01:00
2026-07-06 11:50:58 +01:00
2026-07-13 07:08:05 +01:00
2026-07-06 11:50:58 +01:00
2026-08-03 11:09:04 +01:00
2026-07-06 11:50:58 +01:00
2026-07-08 09:16:50 +01:00
2026-07-28 08:08:26 +01:00
2026-07-13 10:23:38 +01:00
2026-07-06 11:50:58 +01:00
2026-07-23 08:06:09 +01:00
2026-07-06 11:50:58 +01:00
2026-08-25 10:14:49 +01:00
2026-08-18 08:23:16 +01:00
2026-08-03 13:59:27 +01:00
2026-07-06 11:50:58 +01:00
2026-07-06 11:50:58 +01:00
2026-07-08 09:22:55 +01:00
2026-08-21 10:54:29 +01:00
2026-07-19 18:34:18 +01:00
2026-07-01 18:43:01 +01:00
2026-07-06 11:50:58 +01:00
2026-07-01 18:43:01 +01:00
2026-07-13 10:23:38 +01:00
2026-08-20 09:18:58 +01:00