Commit Graph

23 Commits

Author SHA1 Message Date
bakkeby 5c7d8ab1ad auto-sync: draw on idle to avoid flicker/tearing
st could easily tear/flicker with animation or other unattended
output. This commit eliminates most of the tear/flicker.

Before this commit, the display timing had two "modes":

- Interactively, st was waiting fixed `1000/xfps` ms after forwarding
  the kb/mouse event to the application and before drawing.

- Unattended, and specifically with animations, the draw frequency was
  throttled to `actionfps`. Animation at a higher rate would throttle
  and likely tear, and at lower rates it was tearing big frames
  (specifically, when one `read` didn't get a full "frame").

The interactive behavior was decent, but it was impossible to get good
unattended-draw behavior even with carefully chosen configuration.

This commit changes the behavior such that it draws on idle instead of
using fixed latency/frequency. This means that it tries to draw only
when it's very likely that the application has completed its output
(or after some duration without idle), so it mostly succeeds to avoid
tear, flicker, and partial drawing.

The config values minlatency/maxlatency replace xfps/actionfps and
define the range which the algorithm is allowed to wait from the
initial draw-trigger until the actual draw. The range enables the
flexibility to choose when to draw - when least likely to flicker.

It also unifies the interactive and unattended behavior and config
values, which makes the code simpler as well - without sacrificing
latency during interactive use, because typically interactively idle
arrives very quickly, so the wait is typically minlatency.

While it only slighly improves interactive behavior, for animations
and other unattended-drawing it improves greatly, as it effectively
adapts to any [animation] output rate without tearing, throttling,
redundant drawing, or unnecessary delays (sounds impossible, but it
works).
2020-05-20 14:15:57 +02:00
bakkeby bda5b50b99 [st][PATCH] OSC 10/11/12 fg, bg and cursor colors
Support for OSC escape sequences 10, 11 and 12 to modify the bg, fg and
cursor colors. I selected entries in the colorname table after the 255
position for defaultfg, defaultbg and defaultcs
2020-04-20 12:35:11 +02:00
bakkeby f91a10d0e6 config.def.h: add a comment for the scroll variable 2020-04-20 10:49:54 +02:00
bakkeby 2090981be3 Add support for scroll(1)
Scroll is a program that stores all the lines of its child and be used in st as
a way of implementing scrollback.

This solution is much better than implementing the scrollback in st itself
because having a different program allows to use it in any other program
without doing modifications to those programs.
2020-04-20 10:24:34 +02:00
bakkeby d26b46ffa7 Adding invert patch 2020-03-29 15:38:16 +02:00
bakkeby 4966f31256 Custom changes to make the altscreen mouse scollback patch working with latest version of st 2020-03-24 20:05:07 +01:00
bakkeby 0cdfd86e5e mouse shortcuts: don't hardcode selpaste (ff828c) 2020-03-24 14:14:10 +01:00
bakkeby ed7837a816 mouse shortcuts: allow override for all shortcuts (7729e7) 2020-03-24 14:08:08 +01:00
bakkeby 584f3928ad mouse shortcuts: allow same functions as kb shortcuts (410651) 2020-03-24 14:02:44 +01:00
bakkeby 4aa6989993 config.def.h: remove crlf value section (938580) 2020-03-24 13:56:40 +01:00
bakkeby 87c1d1e598 revert part of commit add0211522 (cae586) 2020-03-24 13:51:45 +01:00
bakkeby 9e18ce3cb1 config.def.h: tweak extra worddelimiters (057e32) 2020-03-24 13:47:39 +01:00
bakkeby f86b641b5f use iswspace()/iswpunct() to find word delimiters (5cc1dd) 2020-03-24 13:41:19 +01:00
bakkeby 42f401b428 replace utf8strchr with wcschr (4b51e7) 2020-03-24 13:38:27 +01:00
bakkeby 9f1a2db7c5 Adding font2 patch as per request #3 2020-03-21 16:41:43 +01:00
bakkeby cfecd195ba Adding relativeborder, fix-keyboard-input, iso14755, visualbell, rightclicktoplumb, boxdraw and keyboard-select patches 2019-09-17 15:16:22 +02:00
bakkeby db32474a7f Adding spoiler, external pipe and themed cursor patches 2019-09-17 01:18:44 +02:00
bakkeby d52c5e4ce8 Adding scrollback patch 2019-09-16 15:31:58 +02:00
bakkeby 4bd0ed3327 Adding xresources patch 2019-09-16 14:21:09 +02:00
bakkeby 7615c2f0aa Adding fixime, newterm and opencopied patches 2019-09-16 12:40:07 +02:00
bakkeby 35e6403c69 Adding copyurl and disable-fonts patch 2019-09-16 10:40:16 +02:00
bakkeby ec58f77b6b Adding clipboard patch 2019-09-16 09:51:41 +02:00
bakkeby 5d336c2796 Initial commit, adding alpha and anysize patches 2019-09-16 09:35:57 +02:00