summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--mplayer.c5
-rw-r--r--osdep/getch2.c3
-rw-r--r--osdep/getch2.h3
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();