Merge branch '2453_screen_corruption'

* 2453_screen_corruption:
  Ticket #2453: aggressive screen repaint
This commit is contained in:
Andrew Borodin 2011-07-08 13:52:17 +04:00
commit 51617ea9dd
4 changed files with 27 additions and 1 deletions

View File

@ -280,6 +280,14 @@ tty_touch_screen (void)
/* --------------------------------------------------------------------------------------------- */
void
tty_touch_lines (int start, int num)
{
touchline (stdscr, start, num);
}
/* --------------------------------------------------------------------------------------------- */
void
tty_gotoyx (int y, int x)
{

View File

@ -453,6 +453,14 @@ tty_touch_screen (void)
/* --------------------------------------------------------------------------------------------- */
void
tty_touch_lines (int start, int num)
{
SLsmg_touch_lines (start, num);
}
/* --------------------------------------------------------------------------------------------- */
void
tty_gotoyx (int y, int x)
{

View File

@ -110,6 +110,7 @@ extern int tty_lowlevel_getch (void);
extern int tty_reset_screen (void);
extern void tty_touch_screen (void);
extern void tty_touch_lines (int start, int num);
extern void tty_gotoyx (int y, int x);
extern void tty_getyx (int *py, int *px);

View File

@ -871,7 +871,12 @@ do_refresh (void)
if (fast_refresh)
{
if ((d != NULL) && (d->data != NULL))
dlg_redraw ((Dlg_head *) d->data);
{
Dlg_head *dlg = (Dlg_head *) d->data;
tty_touch_lines (dlg->y, dlg->lines);
dlg_redraw (dlg);
}
}
else
{
@ -879,6 +884,10 @@ do_refresh (void)
for (; d != NULL; d = g_list_next (d))
if ((d->data != NULL) && ((Dlg_head *) d->data)->fullscreen)
break;
/* Clear entire screen to avoid artefacts after printing of non-printable symbols. */
clr_scr ();
/* back to top dialog */
for (; d != NULL; d = g_list_previous (d))
if (d->data != NULL)