Move Emulator::{open,close} to Display
Signed-off-by: Anders Kaseorg <andersk@mit.edu>
This commit is contained in:
committed by
Keith Winstein
parent
ba8d013609
commit
03217ddb5a
@@ -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() );
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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" );
|
||||||
|
|||||||
@@ -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 );
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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 );
|
||||||
|
|||||||
@@ -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 );
|
||||||
|
|||||||
Reference in New Issue
Block a user