diff --git a/osdep/terminal.h b/osdep/terminal.h index 9d60afa00a..fdbe02eadf 100644 --- a/osdep/terminal.h +++ b/osdep/terminal.h @@ -28,6 +28,8 @@ #define TERM_ESC_GOTO_YX "\033[%d;%df" #define TERM_ESC_HIDE_CURSOR "\033[?25l" #define TERM_ESC_RESTORE_CURSOR "\033[?25h" +#define TERM_ESC_SYNC_UPDATE_BEGIN "\033[?2026h" +#define TERM_ESC_SYNC_UPDATE_END "\033[?2026l" #define TERM_ESC_CLEAR_SCREEN "\033[2J" #define TERM_ESC_ALT_SCREEN "\033[?1049h" diff --git a/video/out/vo_tct.c b/video/out/vo_tct.c index e71e5112b8..a1caeed8bc 100644 --- a/video/out/vo_tct.c +++ b/video/out/vo_tct.c @@ -275,6 +275,8 @@ static void flip_page(struct vo *vo) if (vo->dwidth != width || vo->dheight != height) reconfig(vo, vo->params); + printf(TERM_ESC_SYNC_UPDATE_BEGIN); + p->frame_buf.len = 0; if (p->opts.algo == ALGO_PLAIN) { write_plain(&p->frame_buf, @@ -291,6 +293,8 @@ static void flip_page(struct vo *vo) bstr_xappend(NULL, &p->frame_buf, bstr0_s("\n")); if (p->opts.buffering <= VO_TCT_BUFFER_FRAME) print_buffer(&p->frame_buf); + + printf(TERM_ESC_SYNC_UPDATE_END); fflush(stdout); }