changeset 14003:56eed0602d08 draft

(svn r18545) -Fix [FS#3292]: Assign '_screen.dst_ptr' as soon as it is allocated.
author frosch <frosch@openttd.org>
date Sat, 19 Dec 2009 18:46:40 +0000
parents 944ce8347ad5
children 96fa151f99f9
files src/video/allegro_v.cpp src/video/cocoa/cocoa_v.mm src/video/cocoa/event.mm src/video/dedicated_v.cpp src/video/null_v.cpp src/video/sdl_v.cpp
diffstat 6 files changed, 6 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/src/video/allegro_v.cpp
+++ b/src/video/allegro_v.cpp
@@ -211,9 +211,10 @@
 	_screen.width = _allegro_screen->w;
 	_screen.height = _allegro_screen->h;
 	_screen.pitch = ((byte*)screen->line[1] - (byte*)screen->line[0]) / (bpp / 8);
+	_screen.dst_ptr = _allegro_screen->line[0];
 
 	/* Initialise the screen so we don't blit garbage to the screen */
-	memset(_allegro_screen->line[0], 0, _screen.height * _screen.pitch);
+	memset(_screen.dst_ptr, 0, _screen.height * _screen.pitch);
 
 	/* Set the mouse at the place where we expect it */
 	poll_mouse();
@@ -520,7 +521,6 @@
 
 			GameLoop();
 
-			_screen.dst_ptr = _allegro_screen->line[0];
 			UpdateWindows();
 			if (++pal_tick > 4) {
 				CheckPaletteAnim();
@@ -529,7 +529,6 @@
 			DrawSurfaceToScreen();
 		} else {
 			CSleep(1);
-			_screen.dst_ptr = _allegro_screen->line[0];
 			NetworkDrawChatMessage();
 			DrawMouseCursor();
 			DrawSurfaceToScreen();
--- a/src/video/cocoa/cocoa_v.mm
+++ b/src/video/cocoa/cocoa_v.mm
@@ -194,6 +194,7 @@
 	_screen.width = _cocoa_subdriver->GetWidth();
 	_screen.height = _cocoa_subdriver->GetHeight();
 	_screen.pitch = _cocoa_subdriver->GetWidth();
+	_screen.dst_ptr = _cocoa_subdriver->GetPixelBuffer();
 	_fullscreen = _cocoa_subdriver->IsFullscreen();
 
 	GameSizeChanged();
--- a/src/video/cocoa/event.mm
+++ b/src/video/cocoa/event.mm
@@ -603,7 +603,6 @@
 	uint32 st = 0;
 #endif
 
-	_screen.dst_ptr = _cocoa_subdriver->GetPixelBuffer();
 	DisplaySplashImage();
 	QZ_CheckPaletteAnim();
 	_cocoa_subdriver->Draw(true);
@@ -611,7 +610,6 @@
 
 	for (int i = 0; i < 2; i++) GameLoop();
 
-	_screen.dst_ptr = _cocoa_subdriver->GetPixelBuffer();
 	UpdateWindows();
 	QZ_CheckPaletteAnim();
 	_cocoa_subdriver->Draw();
@@ -651,7 +649,6 @@
 
 			GameLoop();
 
-			_screen.dst_ptr = _cocoa_subdriver->GetPixelBuffer();
 			UpdateWindows();
 			if (++pal_tick > 4) {
 				QZ_CheckPaletteAnim();
@@ -666,7 +663,6 @@
 #ifdef _DEBUG
 			st += GetTick() - st0;
 #endif
-			_screen.dst_ptr = _cocoa_subdriver->GetPixelBuffer();
 			NetworkDrawChatMessage();
 			DrawMouseCursor();
 			_cocoa_subdriver->Draw();
--- a/src/video/dedicated_v.cpp
+++ b/src/video/dedicated_v.cpp
@@ -145,6 +145,7 @@
 
 	_screen.width  = _screen.pitch = _cur_resolution.width;
 	_screen.height = _cur_resolution.height;
+	_screen.dst_ptr = _dedicated_video_mem;
 	ScreenSizeChanged();
 
 #if defined(WINCE)
@@ -302,7 +303,6 @@
 			next_tick = cur_ticks + 30;
 
 			GameLoop();
-			_screen.dst_ptr = _dedicated_video_mem;
 			UpdateWindows();
 		}
 		CSleep(1);
--- a/src/video/null_v.cpp
+++ b/src/video/null_v.cpp
@@ -21,6 +21,7 @@
 	this->ticks = GetDriverParamInt(parm, "ticks", 1000);
 	_screen.width  = _screen.pitch = _cur_resolution.width;
 	_screen.height = _cur_resolution.height;
+	_screen.dst_ptr = NULL;
 	ScreenSizeChanged();
 
 	/* Do not render, nor blit */
@@ -39,7 +40,6 @@
 
 	for (i = 0; i < this->ticks; i++) {
 		GameLoop();
-		_screen.dst_ptr = NULL;
 		UpdateWindows();
 	}
 }
--- a/src/video/sdl_v.cpp
+++ b/src/video/sdl_v.cpp
@@ -249,6 +249,7 @@
 	_screen.width = newscreen->w;
 	_screen.height = newscreen->h;
 	_screen.pitch = newscreen->pitch / (bpp / 8);
+	_screen.dst_ptr = newscreen->pixels;
 	_sdl_screen = newscreen;
 	InitPalette();
 
@@ -587,7 +588,6 @@
 
 			if (_draw_threaded) _draw_mutex->BeginCritical();
 
-			_screen.dst_ptr = _sdl_screen->pixels;
 			UpdateWindows();
 			if (++pal_tick > 4) {
 				CheckPaletteAnim();
@@ -599,7 +599,6 @@
 			CSleep(1);
 			if (_draw_threaded) _draw_mutex->BeginCritical();
 
-			_screen.dst_ptr = _sdl_screen->pixels;
 			NetworkDrawChatMessage();
 			DrawMouseCursor();
 		}