From abd4764199c244a6a293cc5ff9da43b925927551 Mon Sep 17 00:00:00 2001 From: David Herrmann Date: Thu, 11 Oct 2012 11:31:14 +0200 Subject: [PATCH] tsm: screen: add flag to select alternate screen buffer The VTE layer can now set the TSM_SCREEN_ALTERNATE flag to switch to the alternate screen-buffer and back. Signed-off-by: David Herrmann --- src/tsm_screen.c | 12 ++++++++++++ src/tsm_screen.h | 1 + 2 files changed, 13 insertions(+) diff --git a/src/tsm_screen.c b/src/tsm_screen.c index 1acead1..9242caf 100644 --- a/src/tsm_screen.c +++ b/src/tsm_screen.c @@ -869,18 +869,30 @@ void tsm_screen_reset(struct tsm_screen *con) void tsm_screen_set_flags(struct tsm_screen *con, unsigned int flags) { + unsigned int old; + if (!con || !flags) return; + old = con->flags; con->flags |= flags; + + if (!(old & TSM_SCREEN_ALTERNATE) && (flags & TSM_SCREEN_ALTERNATE)) + con->lines = con->alt_lines; } void tsm_screen_reset_flags(struct tsm_screen *con, unsigned int flags) { + unsigned int old; + if (!con || !flags) return; + old = con->flags; con->flags &= ~flags; + + if ((old & TSM_SCREEN_ALTERNATE) && (flags & TSM_SCREEN_ALTERNATE)) + con->lines = con->main_lines; } unsigned int tsm_screen_get_flags(struct tsm_screen *con) diff --git a/src/tsm_screen.h b/src/tsm_screen.h index 9e3807d..e294630 100644 --- a/src/tsm_screen.h +++ b/src/tsm_screen.h @@ -71,6 +71,7 @@ typedef void (*tsm_log_t) (const char *file, #define TSM_SCREEN_INVERSE 0x08 #define TSM_SCREEN_HIDE_CURSOR 0x10 #define TSM_SCREEN_FIXED_POS 0x20 +#define TSM_SCREEN_ALTERNATE 0x40 #define TSM_SCREEN_OPT_RENDER_TIMING 0x01