From 03217ddb5a2133698de0d38a10f8cfd879b9be0b Mon Sep 17 00:00:00 2001 From: Anders Kaseorg Date: Sun, 27 Jan 2013 20:37:09 -0500 Subject: [PATCH] Move Emulator::{open,close} to Display Signed-off-by: Anders Kaseorg --- src/examples/termemu.cc | 4 ++-- src/frontend/stmclient.cc | 8 ++++---- src/terminal/terminal.cc | 11 ----------- src/terminal/terminal.h | 3 --- src/terminal/terminaldisplay.cc | 10 ++++++++++ src/terminal/terminaldisplay.h | 3 +++ 6 files changed, 19 insertions(+), 20 deletions(-) diff --git a/src/examples/termemu.cc b/src/examples/termemu.cc index ff2ec78..b85a729 100644 --- a/src/examples/termemu.cc +++ b/src/examples/termemu.cc @@ -232,7 +232,7 @@ void emulate_terminal( int fd ) sel.add_fd( fd ); sel.add_signal( SIGWINCH ); - swrite( STDOUT_FILENO, Terminal::Emulator::open().c_str() ); + swrite( STDOUT_FILENO, display.open().c_str() ); int timeout = -1; @@ -315,5 +315,5 @@ void emulate_terminal( int fd ) std::string update = display.new_frame( true, state, complete.get_fb() ); swrite( STDOUT_FILENO, update.c_str() ); - swrite( STDOUT_FILENO, Terminal::Emulator::close().c_str() ); + swrite( STDOUT_FILENO, display.close().c_str() ); } diff --git a/src/frontend/stmclient.cc b/src/frontend/stmclient.cc index bb19311..141bbcd 100644 --- a/src/frontend/stmclient.cc +++ b/src/frontend/stmclient.cc @@ -71,7 +71,7 @@ void STMClient::resume( void ) } /* Put terminal in application-cursor-key mode */ - swrite( STDOUT_FILENO, Terminal::Emulator::open().c_str() ); + swrite( STDOUT_FILENO, display.open().c_str() ); /* Flag that outer terminal state is unknown */ repaint_requested = true; @@ -114,7 +114,7 @@ void STMClient::init( void ) } /* Put terminal in application-cursor-key mode */ - swrite( STDOUT_FILENO, Terminal::Emulator::open().c_str() ); + swrite( STDOUT_FILENO, display.open().c_str() ); /* Add our name to window title */ if ( !getenv( "MOSH_TITLE_NOPREFIX" ) ) { @@ -135,7 +135,7 @@ void STMClient::shutdown( void ) output_new_frame(); /* Restore terminal and terminal-driver state */ - swrite( STDOUT_FILENO, Terminal::Emulator::close().c_str() ); + swrite( STDOUT_FILENO, display.close().c_str() ); if ( tcsetattr( STDIN_FILENO, TCSANOW, &saved_termios ) < 0 ) { perror( "tcsetattr" ); @@ -268,7 +268,7 @@ bool STMClient::process_user_input( int fd ) } } else if ( the_byte == 0x1a ) { /* Suspend sequence is Ctrl-^ Ctrl-Z */ /* Restore terminal and terminal-driver state */ - swrite( STDOUT_FILENO, Terminal::Emulator::close().c_str() ); + swrite( STDOUT_FILENO, display.close().c_str() ); if ( tcsetattr( STDIN_FILENO, TCSANOW, &saved_termios ) < 0 ) { perror( "tcsetattr" ); diff --git a/src/terminal/terminal.cc b/src/terminal/terminal.cc index 1dfc3df..2dfa144 100644 --- a/src/terminal/terminal.cc +++ b/src/terminal/terminal.cc @@ -163,17 +163,6 @@ void Emulator::Esc_dispatch( const Parser::Esc_Dispatch *act ) } } -std::string Emulator::open( void ) -{ - char appmode[ 6 ] = { 0x1b, '[', '?', '1', 'h', 0 }; - return std::string( appmode ); -} - -std::string Emulator::close( void ) -{ - return std::string( "\033[?1l\033[0m\033[?25h" ); -} - void Emulator::resize( size_t s_width, size_t s_height ) { fb.resize( s_width, s_height ); diff --git a/src/terminal/terminal.h b/src/terminal/terminal.h index 5c8fc2e..b0d5e9b 100644 --- a/src/terminal/terminal.h +++ b/src/terminal/terminal.h @@ -78,9 +78,6 @@ namespace Terminal { std::string read_octets_to_host( void ); - static std::string open( void ); /* put user cursor keys in application mode */ - static std::string close( void ); /* restore user cursor keys */ - const Framebuffer & get_fb( void ) const { return fb; } bool operator==( Emulator const &x ) const; diff --git a/src/terminal/terminaldisplay.cc b/src/terminal/terminaldisplay.cc index a7c258b..e801b8c 100644 --- a/src/terminal/terminaldisplay.cc +++ b/src/terminal/terminaldisplay.cc @@ -44,6 +44,16 @@ static const Renditions & initial_rendition( void ) return blank; } +std::string Display::open() const +{ + return std::string( "\033[?1h" ); +} + +std::string Display::close() const +{ + return std::string( "\033[?1l\033[0m\033[?25h" ); +} + std::string Display::new_frame( bool initialized, const Framebuffer &last, const Framebuffer &f ) const { FrameState frame( last ); diff --git a/src/terminal/terminaldisplay.h b/src/terminal/terminaldisplay.h index d3779ab..4ac4ce4 100644 --- a/src/terminal/terminaldisplay.h +++ b/src/terminal/terminaldisplay.h @@ -79,6 +79,9 @@ namespace Terminal { public: void downgrade( Framebuffer &f ) const { if ( posterize_colors ) { f.posterize(); } } + std::string open() const; + std::string close() const; + std::string new_frame( bool initialized, const Framebuffer &last, const Framebuffer &f ) const; Display( bool use_environment );