From 5600328d83b133dedb5c50a4b091cd81956feb8b Mon Sep 17 00:00:00 2001 From: Christian Prochaska Date: Fri, 22 Mar 2013 21:27:05 +0100 Subject: [PATCH] terminal_mux: Clear terminal when activating menu This patch clears the terminal each time the menu appears and thereby wipes away artifacts that might occur when combining terminal_mux with kdb_uart_drv and the kernel prints messages directly. --- gems/src/server/terminal_mux/main.cc | 1 + gems/src/server/terminal_mux/ncurses.cc | 6 ++++++ gems/src/server/terminal_mux/ncurses_cxx.h | 2 ++ 3 files changed, 9 insertions(+) diff --git a/gems/src/server/terminal_mux/main.cc b/gems/src/server/terminal_mux/main.cc index 79fc26300..7a000f8a4 100644 --- a/gems/src/server/terminal_mux/main.cc +++ b/gems/src/server/terminal_mux/main.cc @@ -610,6 +610,7 @@ void Session_manager::activate_menu() _menu.reset_selection(); _registry.to_front(&_menu); _status_window.label(_menu.label()); + _ncurses.clear_ok(); _menu.flush_all(); } diff --git a/gems/src/server/terminal_mux/ncurses.cc b/gems/src/server/terminal_mux/ncurses.cc index 65f858133..47e698294 100644 --- a/gems/src/server/terminal_mux/ncurses.cc +++ b/gems/src/server/terminal_mux/ncurses.cc @@ -66,6 +66,12 @@ Ncurses::Window *Ncurses::create_window(int x, int y, int w, int h) } +void Ncurses::clear_ok() +{ + clearok(stdscr, true); +} + + void Ncurses::do_update() { doupdate(); diff --git a/gems/src/server/terminal_mux/ncurses_cxx.h b/gems/src/server/terminal_mux/ncurses_cxx.h index 366a90adb..949784488 100644 --- a/gems/src/server/terminal_mux/ncurses_cxx.h +++ b/gems/src/server/terminal_mux/ncurses_cxx.h @@ -45,6 +45,8 @@ class Ncurses Window *create_window(int x, int y, int w, int h); + void clear_ok(); + void do_update(); Ncurses();