Move Emulator::{open,close} to Display

Signed-off-by: Anders Kaseorg <andersk@mit.edu>
This commit is contained in:
Anders Kaseorg
2013-01-27 20:37:09 -05:00
committed by Keith Winstein
parent ba8d013609
commit 03217ddb5a
6 changed files with 19 additions and 20 deletions
+2 -2
View File
@@ -232,7 +232,7 @@ void emulate_terminal( int fd )
sel.add_fd( fd ); sel.add_fd( fd );
sel.add_signal( SIGWINCH ); sel.add_signal( SIGWINCH );
swrite( STDOUT_FILENO, Terminal::Emulator::open().c_str() ); swrite( STDOUT_FILENO, display.open().c_str() );
int timeout = -1; int timeout = -1;
@@ -315,5 +315,5 @@ void emulate_terminal( int fd )
std::string update = display.new_frame( true, state, complete.get_fb() ); std::string update = display.new_frame( true, state, complete.get_fb() );
swrite( STDOUT_FILENO, update.c_str() ); swrite( STDOUT_FILENO, update.c_str() );
swrite( STDOUT_FILENO, Terminal::Emulator::close().c_str() ); swrite( STDOUT_FILENO, display.close().c_str() );
} }
+4 -4
View File
@@ -71,7 +71,7 @@ void STMClient::resume( void )
} }
/* Put terminal in application-cursor-key mode */ /* 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 */ /* Flag that outer terminal state is unknown */
repaint_requested = true; repaint_requested = true;
@@ -114,7 +114,7 @@ void STMClient::init( void )
} }
/* Put terminal in application-cursor-key mode */ /* 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 */ /* Add our name to window title */
if ( !getenv( "MOSH_TITLE_NOPREFIX" ) ) { if ( !getenv( "MOSH_TITLE_NOPREFIX" ) ) {
@@ -135,7 +135,7 @@ void STMClient::shutdown( void )
output_new_frame(); output_new_frame();
/* Restore terminal and terminal-driver state */ /* 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 ) { if ( tcsetattr( STDIN_FILENO, TCSANOW, &saved_termios ) < 0 ) {
perror( "tcsetattr" ); perror( "tcsetattr" );
@@ -268,7 +268,7 @@ bool STMClient::process_user_input( int fd )
} }
} else if ( the_byte == 0x1a ) { /* Suspend sequence is Ctrl-^ Ctrl-Z */ } else if ( the_byte == 0x1a ) { /* Suspend sequence is Ctrl-^ Ctrl-Z */
/* Restore terminal and terminal-driver state */ /* 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 ) { if ( tcsetattr( STDIN_FILENO, TCSANOW, &saved_termios ) < 0 ) {
perror( "tcsetattr" ); perror( "tcsetattr" );
-11
View File
@@ -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 ) void Emulator::resize( size_t s_width, size_t s_height )
{ {
fb.resize( s_width, s_height ); fb.resize( s_width, s_height );
-3
View File
@@ -78,9 +78,6 @@ namespace Terminal {
std::string read_octets_to_host( void ); 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; } const Framebuffer & get_fb( void ) const { return fb; }
bool operator==( Emulator const &x ) const; bool operator==( Emulator const &x ) const;
+10
View File
@@ -44,6 +44,16 @@ static const Renditions & initial_rendition( void )
return blank; 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 std::string Display::new_frame( bool initialized, const Framebuffer &last, const Framebuffer &f ) const
{ {
FrameState frame( last ); FrameState frame( last );
+3
View File
@@ -79,6 +79,9 @@ namespace Terminal {
public: public:
void downgrade( Framebuffer &f ) const { if ( posterize_colors ) { f.posterize(); } } 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; std::string new_frame( bool initialized, const Framebuffer &last, const Framebuffer &f ) const;
Display( bool use_environment ); Display( bool use_environment );