Reduce webtiles redraws per key input by 2
authoradvil <rawlins@gmail.com>
Wed, 20 Jan 2021 17:38:37 +0000 (12:38 -0500)
committeradvil <rawlins@gmail.com>
Wed, 20 Jan 2021 17:38:37 +0000 (12:38 -0500)
commit288a49279187591ca2b1c6c12e22d05b34561cea
tree7ffe8c7070f31e0e3c62d238450895c07b29f675
parent66375cd4daf2ea43a2278cfbe905cddd0107d5f2
Reduce webtiles redraws per key input by 2

The previous behavior stems for a fairly old (729eb1357d24d1d5) decision
to send a redraw on each input mode change. Since every keypress swaps
between MOUSE_MODE_NORMAL and MOUSE_MODE_COMMAND, holding down a key
could trigger a lot of unnecessary redraws, and for example with no ammo
could max out the process's cpu usage (at least on a `make profile`
build).  I'm not actually sure why a webtiles redraw (which mainly send
the map and the player) is needed on any case of changing input mode,
but for now I'll be conservative -- and this is the case that shows up
in profiling.

As it happens, there's still at least one webtiles redraw per key input,
in getch_ck. But, the profiling with just this one doesn't seem like a
problem by itself. It's possible that redraw() itself has some issues
that could be addressed -- sending both the player and the map equally
eat up a lot of cpu with repeated calls.
crawl-ref/source/libutil.cc
crawl-ref/source/tileweb.cc
crawl-ref/source/tileweb.h