Fix win32 console partial print being overwritten

This commit is contained in:
Zack Middleton 2013-01-10 16:29:54 -06:00
parent 20cd170993
commit 2d6b68edd8

View file

@ -42,6 +42,7 @@ static int qconsole_history_oldest = 0;
// current edit buffer // current edit buffer
static char qconsole_line[ MAX_EDIT_LINE ]; static char qconsole_line[ MAX_EDIT_LINE ];
static int qconsole_linelen = 0; static int qconsole_linelen = 0;
static qboolean qconsole_drawinput = qtrue;
static HANDLE qconsole_hout; static HANDLE qconsole_hout;
static HANDLE qconsole_hin; static HANDLE qconsole_hin;
@ -181,6 +182,10 @@ static void CON_Show( void )
GetConsoleScreenBufferInfo( qconsole_hout, &binfo ); GetConsoleScreenBufferInfo( qconsole_hout, &binfo );
// if we're in the middle of printf, don't bother writing the buffer
if( !qconsole_drawinput )
return;
writeArea.Left = 0; writeArea.Left = 0;
writeArea.Top = binfo.dwCursorPosition.Y; writeArea.Top = binfo.dwCursorPosition.Y;
writeArea.Bottom = binfo.dwCursorPosition.Y; writeArea.Bottom = binfo.dwCursorPosition.Y;
@ -424,6 +429,8 @@ void CON_WindowsColorPrint( const char *msg )
while( *msg ) while( *msg )
{ {
qconsole_drawinput = ( *msg == '\n' );
if( Q_IsColorString( msg ) || *msg == '\n' ) if( Q_IsColorString( msg ) || *msg == '\n' )
{ {
// First empty the buffer // First empty the buffer