From 95db0aeb236eebd0f6c517078bc8df299599a02a Mon Sep 17 00:00:00 2001 From: ods15 Date: Sun, 25 Dec 2005 18:26:35 +0000 Subject: [PATCH] Use termcap "erase to end of line" character code instead of using spaces to end of screen. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@17241 b3059339-0415-0410-9bf9-f77b7e298cf2 --- mplayer.c | 5 ++--- osdep/getch2.c | 3 +++ osdep/getch2.h | 3 +++ 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/mplayer.c b/mplayer.c index b8d1bbf9d4..fcf3c085d6 100644 --- a/mplayer.c +++ b/mplayer.c @@ -962,9 +962,8 @@ static void print_status(float a_pos, float a_v, float corr) saddf(line, &pos, width, "%4.2fx ", playback_speed); // end - memset(&line[pos], ' ', width - pos); - line[width] = 0; - mp_msg(MSGT_AVSYNC, MSGL_STATUS, "%s\r", line); + line[pos] = 0; + mp_msg(MSGT_AVSYNC, MSGL_STATUS, "%s%s\r", line, erase_to_end_of_line); free(line); } diff --git a/osdep/getch2.c b/osdep/getch2.c index e4a5c9cb1c..ac9c5e8395 100644 --- a/osdep/getch2.c +++ b/osdep/getch2.c @@ -40,6 +40,7 @@ static char getch2_buf[BUF_LEN]; int screen_width=80; int screen_height=24; +char * erase_to_end_of_line = "\033[J"; typedef struct { int len; @@ -78,6 +79,7 @@ char *p=tgetstr(id,&term_p); static int success=0; int load_termcap(char *termtype){ + char * p; if(!termtype) termtype=getenv("TERM"); if(!termtype) termtype="unknown"; success=tgetent(term_buffer, termtype); @@ -88,6 +90,7 @@ int load_termcap(char *termtype){ screen_height=tgetnum("li"); if(screen_width<1 || screen_width>255) screen_width=80; if(screen_height<1 || screen_height>255) screen_height=24; + if ((p = tgetstr("cd",&term_p))) erase_to_end_of_line=p; termcap_add("kP",KEY_PGUP); termcap_add("kN",KEY_PGDWN); diff --git a/osdep/getch2.h b/osdep/getch2.h index 016de5ae9e..49743f2ecf 100644 --- a/osdep/getch2.h +++ b/osdep/getch2.h @@ -5,6 +5,9 @@ extern int screen_width; extern int screen_height; +/* Termcap code to erase to end of line */ +extern char * erase_to_end_of_line; + /* Get screen-size using IOCTL call. */ extern void get_screen_size();