(svn r1484) -Fix: [1099197] scrolling through console sometimes crashed the whole game. Also added MarkWholeScreenDirty() to have redrawing of console resize instant (sign_de)
authordarkvater
Tue, 11 Jan 2005 23:39:21 +0000
changeset 986 239603c9dd34
parent 985 ef5ba72aca89
child 987 ea47ad079de8
(svn r1484) -Fix: [1099197] scrolling through console sometimes crashed the whole game. Also added MarkWholeScreenDirty() to have redrawing of console resize instant (sign_de)
console.c
--- a/console.c	Tue Jan 11 15:52:18 2005 +0000
+++ b/console.c	Tue Jan 11 23:39:21 2005 +0000
@@ -94,9 +94,6 @@
 
 static void IConsoleWndProc(Window* w, WindowEvent* e)
 {
-	// only do window events with the console
-	w = FindWindowById(WC_CONSOLE, 0);
-
 	switch(e->event) {
 		case WE_PAINT:
 		{
@@ -104,7 +101,7 @@
 			int max = (w->height / ICON_LINE_HEIGHT) - 1;
 			int delta = 0;
 			GfxFillRect(w->left, w->top, w->width, w->height - 1, 0);
-			while ((i > _iconsole_scroll - max) && (_iconsole_buffer[i] != NULL)) {
+			while ((i > 0) && (i > _iconsole_scroll - max) && (_iconsole_buffer[i] != NULL)) {
 				DoDrawString(_iconsole_buffer[i], 5,
 					w->height - (_iconsole_scroll + 2 - i) * ICON_LINE_HEIGHT, _iconsole_cbuffer[i]);
 				i--;
@@ -281,6 +278,9 @@
 
 void IConsoleResize(void)
 {
+
+	_iconsole_win = FindWindowById(WC_CONSOLE, 0);
+
 	switch (_iconsole_mode) {
 		case ICONSOLE_OPENED:
 			_iconsole_win->height = _screen.height / 3;
@@ -293,6 +293,8 @@
 		default:
 			break;
 	}
+
+	MarkWholeScreenDirty();
 }
 
 void IConsoleSwitch(void)
@@ -315,6 +317,8 @@
 			_iconsole_mode = ICONSOLE_CLOSED;
 			break;
 	}
+
+	MarkWholeScreenDirty();
 }
 
 void IConsoleClose(void)