1
0
mirror of https://git.tartarus.org/simon/putty.git synced 2025-01-09 01:18:00 +00:00
Go to file
Simon Tatham 7a25599d84 Fix terminal redraw slowdown in presence of true colour.
When do_paint breaks up a line of terminal text into contiguous runs
of characters to treat the same, one of the criteria it uses is, 'Does
this character even need redrawing? (or is it already displayed
correctly from the previous redraw?)' When we encounter a character
that matches its previous value, we end the previous run of
characters, so that we can skip the one we've just encountered.

That check was not taking account of the 'truecolour' field of the
termchar it was checking. So it would sometimes falsely believe the
character to be equivalent to its previously drawn value, even when in
fact it was not, and hence insert a run break, anticipating that the
previous character needed drawing and the current one did not.

This didn't cause a _wrong_ redraw, because there's a separate loop
further on which re-checks whether to actually draw things, which
didn't make the same error. So the character that loop #1 thought
didn't need a redraw, loop #2 knew _did_ need a redraw, and hence,
everything did get redrawn.

But by the time loop #2 is running, it's too late to change the run
boundaries. So everything does get redrawn, but in much smaller chunks
than it could have been. The net effect was that if the screen was
filled with text displayed in true colour, and you changed it to the
_same_ text in a different colour, then the whole terminal would be
redrawn in one-character increments instead of the usual behaviour of
folding together runs that can be drawn in one go.

Thanks to Bradley Smith for debugging this very confusing issue!
2021-07-15 20:16:49 +01:00
charset Add missing dependencies on generated source files. 2021-04-18 17:01:50 +01:00
cmake Don't #include <utmp.h> if it doesn't exist. 2021-05-13 18:40:47 +01:00
contrib New script contrib/proveprime.py. 2021-06-12 13:50:51 +01:00
crypto Spelling: standardise on "DSA", not "DSS". 2021-04-22 18:34:47 +01:00
doc Fix grammar nit. 2021-07-10 10:31:07 +01:00
icons Make Windows versions of the pterm icons. 2021-05-08 17:33:25 +01:00
keygen Spelling: standardise on "DSA", not "DSS". 2021-04-22 18:34:47 +01:00
otherbackends New Seat callback, seat_sent(). 2021-06-27 13:52:48 +01:00
ssh New Seat callback, seat_sent(). 2021-06-27 13:52:48 +01:00
test New script contrib/proveprime.py. 2021-06-12 13:50:51 +01:00
unix New Seat callback, seat_sent(). 2021-06-27 13:52:48 +01:00
utils New Seat callback, seat_sent(). 2021-06-27 13:52:48 +01:00
windows Avoid crash in MIT Kerberos for Windows on session restart. 2021-07-01 18:59:44 +01:00
.gitignore Add .gitignore rules for in-tree builds. 2021-04-19 18:26:56 +01:00
aqsync.c Build outgoing SSH agent requests in a strbuf. 2018-05-25 14:36:16 +01:00
be_all_s.c New GUI for protocol selection. 2021-04-10 09:51:29 +01:00
be_all.c New GUI for protocol selection. 2021-04-10 09:51:29 +01:00
be_misc.c Formatting change to braces around one case of a switch. 2020-02-16 11:26:21 +00:00
be_none.c New GUI for protocol selection. 2021-04-10 09:51:29 +01:00
be_nos_s.c New GUI for protocol selection. 2021-04-10 09:51:29 +01:00
be_nossh.c New GUI for protocol selection. 2021-04-10 09:51:29 +01:00
be_ssh.c New GUI for protocol selection. 2021-04-10 09:51:29 +01:00
Buildscr New application: a Windows version of 'pterm'! 2021-05-08 17:51:27 +01:00
Buildscr.cv Replace mkfiles.pl with a CMake build system. 2021-04-17 13:53:02 +01:00
callback.c Add lots of missing 'static' keywords. 2020-01-29 06:44:18 +00:00
cgtest.c cmdgen: support configurable key fingerprint type. 2021-03-13 11:01:35 +00:00
CHECKLST.txt Spelling errors in the release checklist. 2021-05-03 17:01:55 +01:00
clicons.c Change vtable defs to use C99 designated initialisers. 2020-03-10 21:06:29 +00:00
CMakeLists.txt Initial support for in-process proxy SSH connections. 2021-05-22 14:13:52 +01:00
cmdgen.c cmdgen: add missing null pointer check in --dump mode. 2021-05-19 10:42:42 +01:00
cmdline.c New option to reject 'trivial' success of userauth. 2021-06-19 21:34:56 +01:00
config.c New option to reject 'trivial' success of userauth. 2021-06-19 21:34:56 +01:00
console.c Console host key prompts: add 'more info' action. 2021-03-13 13:54:59 +00:00
console.h Factor out some common code in {ux,win}cons.c. 2021-03-13 11:01:35 +00:00
cproxy.c Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
defs.h Make cmake.h available everywhere. 2021-04-19 18:26:56 +01:00
dialog.c dialog system: add a side-by-side alignment feature. 2021-04-10 09:43:25 +01:00
dialog.h dialog system: add a side-by-side alignment feature. 2021-04-10 09:43:25 +01:00
errsock.c Change vtable defs to use C99 designated initialisers. 2020-03-10 21:06:29 +00:00
fuzzterm.c Make TermWin's palette_get_overrides() take a Terminal *. 2021-05-08 18:14:56 +01:00
import.c Spelling: standardise on "DSA", not "DSS". 2021-04-22 18:34:47 +01:00
LATEST.VER Update version number for 0.75 release. 2021-05-02 08:11:24 +01:00
ldisc.c Remove assertion that len != 0 in ldisc_send. 2020-06-14 10:17:20 +01:00
ldisc.h New array-growing macros: sgrowarray and sgrowarrayn. 2019-02-28 20:15:38 +00:00
LICENCE It's a new year. 2021-01-11 21:37:51 +00:00
licence.pl Separate the functions of licence.pl. 2021-04-17 13:52:27 +01:00
logging.c Assorted benign warning fixes. 2020-01-29 06:44:18 +00:00
marshal.h Add some more marshalling functions, for file parsing. 2020-01-09 19:57:35 +00:00
minibidi.c Formatting change to braces around one case of a switch. 2020-02-16 11:26:21 +00:00
misc.h Break up x11fwd.c. 2021-04-18 08:18:27 +01:00
mksrcarc.sh Replace mkfiles.pl with a CMake build system. 2021-04-17 13:53:02 +01:00
mkunxarc.sh Integrate the 'doc' subdir into the CMake system. 2021-05-03 17:01:55 +01:00
mpint.h Add mp_copy_integer_into function. 2020-03-01 20:09:01 +00:00
network.h Initial support for in-process proxy SSH connections. 2021-05-22 14:13:52 +01:00
nocmdline.c Make cmdline_tooltype a const int. 2020-01-30 06:40:22 +00:00
nocproxy.c Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
nogss.c Rewrite gprefs() in settings.c so that its input mapping includes 2011-06-25 17:37:31 +00:00
noprint.c noprint.c: fix compile failure. 2021-02-10 21:07:57 +00:00
noproxy.c Introduce noproxy.c. 2020-09-13 09:11:31 +01:00
norand.c Centralise 'no random numbers' stubs into norand.c. 2020-02-07 19:17:19 +00:00
nosshproxy.c Initial support for in-process proxy SSH connections. 2021-05-22 14:13:52 +01:00
noterm.c Make calling term_nopaste() a cross-platform feature. 2013-08-17 16:06:40 +00:00
notiming.c Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
nullplug.c Change vtable defs to use C99 designated initialisers. 2020-03-10 21:06:29 +00:00
pageant.c pageant_get_keylist: add missing init of kl->broken. 2021-04-10 10:55:53 +01:00
pageant.h winpgnt: menu options to delete/reencrypt everything. 2021-04-04 10:02:24 +01:00
pinger.c Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
pproxy.c Get rid of lots of implicit pointer types. 2018-10-04 19:10:23 +01:00
proxy.c Make SSH proxying conditional on CONF_proxy_type! 2021-05-24 14:16:01 +01:00
proxy.h Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
pscp.c New Seat callback, seat_sent(). 2021-06-27 13:52:48 +01:00
psftp.c New Seat callback, seat_sent(). 2021-06-27 13:52:48 +01:00
psftp.h Remove FLAG_VERBOSE. 2020-01-30 06:40:21 +00:00
psftpcommon.c Move the SSH implementation into its own subdirectory. 2021-04-22 18:09:13 +01:00
psocks.c Move the SSH implementation into its own subdirectory. 2021-04-22 18:09:13 +01:00
psocks.h Auxiliary application: 'psocks', a simple SOCKS server. 2020-02-23 16:36:27 +00:00
putty.h New Seat callback, seat_sent(). 2021-06-27 13:52:48 +01:00
puttymem.h Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
README Replace mkfiles.pl with a CMake build system. 2021-04-17 13:53:02 +01:00
release.pl Replace mkfiles.pl with a CMake build system. 2021-04-17 13:53:02 +01:00
settings.c New option to reject 'trivial' success of userauth. 2021-06-19 21:34:56 +01:00
sign.sh Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
ssh.h New Seat callback, seat_sent(). 2021-06-27 13:52:48 +01:00
sshcr.h Assorted benign warning fixes. 2020-01-29 06:44:18 +00:00
sshkeygen.h Spelling: standardise on "DSA", not "DSS". 2021-04-22 18:34:47 +01:00
sshproxy.c New Seat callback, seat_sent(). 2021-06-27 13:52:48 +01:00
sshpubk.c Fix tight loop on reading truncated key files. 2021-05-23 08:59:13 +01:00
sshrand.c Remove dependency of sshrand.c on SHA-512. 2020-09-13 09:11:31 +01:00
storage.h Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
terminal.c Fix terminal redraw slowdown in presence of true colour. 2021-07-15 20:16:49 +01:00
terminal.h Apply UPDATE_DELAY in arrears, not in advance. 2021-02-07 19:59:21 +00:00
testcrypt.c Spelling: standardise on "DSA", not "DSS". 2021-04-22 18:34:47 +01:00
testcrypt.h Break up crypto modules containing HW acceleration. 2021-04-21 21:55:26 +01:00
testsc.c Move a few stray header files into the crypto subdir. 2021-04-22 17:57:56 +01:00
testzlib.c Move the SSH implementation into its own subdirectory. 2021-04-22 18:09:13 +01:00
timing.c Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
tree234.h Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
version.h Replace mkfiles.pl with a CMake build system. 2021-04-17 13:53:02 +01:00
x11disp.c Move the SSH implementation into its own subdirectory. 2021-04-22 18:09:13 +01:00

This is the README for PuTTY, a free Windows and Unix Telnet and SSH
client.

PuTTY is built using CMake <https://cmake.org/>. To compile in the
simplest way (on any of Linux, Windows or Mac), run these commands in
the source directory:

  cmake .
  cmake --build .

Documentation (in various formats including Windows Help and Unix
`man' pages) is built from the Halibut (`.but') files in the `doc'
subdirectory using `doc/Makefile'. If you aren't using one of our
source snapshots, you'll need to do this yourself. Halibut can be
found at <https://www.chiark.greenend.org.uk/~sgtatham/halibut/>.

The PuTTY home web site is

    https://www.chiark.greenend.org.uk/~sgtatham/putty/

If you want to send bug reports or feature requests, please read the
Feedback section of the web site before doing so. Sending one-line
reports saying `it doesn't work' will waste your time as much as
ours.

See the file LICENCE for the licence conditions.