xentop.c: Change curses painting behavior to avoid flicker
authorJason McCarver <slam@parasite.cc>
Fri, 14 Sep 2012 09:02:51 +0000 (10:02 +0100)
committerJason McCarver <slam@parasite.cc>
Fri, 14 Sep 2012 09:02:51 +0000 (10:02 +0100)
commit06a4a3cdcccc56970f507f617667b9034b2975b0
treeb8d1cd8badc653553642f5aa93796a72a3e54a56
parent10a194b1c57de7ddc9d4fce07e01f2cd7d0ca26a
xentop.c: Change curses painting behavior to avoid flicker

Currently, xentop calls clear() before drawing the screen and calling
refresh().  This causes the entire screen to be repainted from scratch
on each call to refresh().  It is inefficient and causes visible flicker
when using xentop.

This patch fixes this by calling erase() instead of clear() which overwrites
the current screen with blanks instead.  The screen is then drawn as usual
in the top() function and refresh() is called.  This method allows curses
to only repaint the characters that have changed since the last call
to refresh(), thus avoiding the flicker and sending fewer characters to
the terminal.

In the event the screen becomes corrupted, this patch accepts a CTRL-L
keystroke from the user which will call clear() and force a repaint of
the entire screen.

Signed-off-by: Jason McCarver <slam@parasite.cc>
Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
Committed-by: Ian Campbell <ian.campbell@citrix.com>
tools/xenstat/xentop/xentop.c