Ticket #2453: aggressive screen repaint
... to avoid artefacts after printing of non-printable symbols. (tty_touch_lines): new function to mark modified lines of screen. (do_refresh): mark lines as modified before redraw of non-fullscreen dialog and clear entire screen before redraw of fullscreen dialog. Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
Этот коммит содержится в:
родитель
f5ff35a5f3
Коммит
f809e6cf7a
@ -280,6 +280,14 @@ tty_touch_screen (void)
|
|||||||
|
|
||||||
/* --------------------------------------------------------------------------------------------- */
|
/* --------------------------------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
void
|
||||||
|
tty_touch_lines (int start, int num)
|
||||||
|
{
|
||||||
|
touchline (stdscr, start, num);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* --------------------------------------------------------------------------------------------- */
|
||||||
|
|
||||||
void
|
void
|
||||||
tty_gotoyx (int y, int x)
|
tty_gotoyx (int y, int x)
|
||||||
{
|
{
|
||||||
|
@ -453,6 +453,14 @@ tty_touch_screen (void)
|
|||||||
|
|
||||||
/* --------------------------------------------------------------------------------------------- */
|
/* --------------------------------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
void
|
||||||
|
tty_touch_lines (int start, int num)
|
||||||
|
{
|
||||||
|
SLsmg_touch_lines (start, num);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* --------------------------------------------------------------------------------------------- */
|
||||||
|
|
||||||
void
|
void
|
||||||
tty_gotoyx (int y, int x)
|
tty_gotoyx (int y, int x)
|
||||||
{
|
{
|
||||||
|
@ -110,6 +110,7 @@ extern int tty_lowlevel_getch (void);
|
|||||||
|
|
||||||
extern int tty_reset_screen (void);
|
extern int tty_reset_screen (void);
|
||||||
extern void tty_touch_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_gotoyx (int y, int x);
|
||||||
extern void tty_getyx (int *py, int *px);
|
extern void tty_getyx (int *py, int *px);
|
||||||
|
@ -871,7 +871,12 @@ do_refresh (void)
|
|||||||
if (fast_refresh)
|
if (fast_refresh)
|
||||||
{
|
{
|
||||||
if ((d != NULL) && (d->data != NULL))
|
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
|
else
|
||||||
{
|
{
|
||||||
@ -879,6 +884,10 @@ do_refresh (void)
|
|||||||
for (; d != NULL; d = g_list_next (d))
|
for (; d != NULL; d = g_list_next (d))
|
||||||
if ((d->data != NULL) && ((Dlg_head *) d->data)->fullscreen)
|
if ((d->data != NULL) && ((Dlg_head *) d->data)->fullscreen)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
/* Clear entire screen to avoid artefacts after printing of non-printable symbols. */
|
||||||
|
clr_scr ();
|
||||||
|
|
||||||
/* back to top dialog */
|
/* back to top dialog */
|
||||||
for (; d != NULL; d = g_list_previous (d))
|
for (; d != NULL; d = g_list_previous (d))
|
||||||
if (d->data != NULL)
|
if (d->data != NULL)
|
||||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user