From 6177aa76161703bdd710240d0d4ca955a688e4ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kacper=20Michaj=C5=82ow?= Date: Mon, 18 Mar 2024 02:10:29 +0100 Subject: [PATCH] vo_tct: add synchronized output support See-Also: https://gist.github.com/christianparpart/d8a62cc1ab659194337d73e399004036 --- osdep/terminal.h | 2 ++ video/out/vo_tct.c | 4 ++++ 2 files changed, 6 insertions(+) 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); }