changeset 6700:fe78ef5d92f4 draft

(svn r9932) -Fix: can't assume a zoom-level with MarkAllViewportsDirty, causing segfaults when trying to load savegames in dedicated server via -g (reported by peter1138)
author truelight <truelight@openttd.org>
date Sat, 26 May 2007 12:19:54 +0000
parents 323f494a7076
children 8cd8e1fa4b16
files src/signs.cpp src/station.cpp
diffstat 2 files changed, 10 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/src/signs.cpp
+++ b/src/signs.cpp
@@ -64,11 +64,14 @@
  */
 static void MarkSignDirty(Sign *si)
 {
+	/* We use ZOOM_LVL_MAX here, as every viewport can have an other zoom,
+		*  and there is no way for us to know which is the biggest. So make the
+		*  biggest area dirty, and we are safe for sure. */
 	MarkAllViewportsDirty(
 		si->sign.left - 6,
 		si->sign.top  - 3,
-		si->sign.left + ScaleByZoom(si->sign.width_1 + 12, _cur_dpi->zoom),
-		si->sign.top  + ScaleByZoom(12, _cur_dpi->zoom));
+		si->sign.left + ScaleByZoom(si->sign.width_1 + 12, ZOOM_LVL_MAX),
+		si->sign.top  + ScaleByZoom(12, ZOOM_LVL_MAX));
 }
 
 /**
--- a/src/station.cpp
+++ b/src/station.cpp
@@ -122,11 +122,14 @@
 	if (sign.width_1 != 0) {
 		InvalidateWindowWidget(WC_STATION_VIEW, index, 1);
 
+		/* We use ZOOM_LVL_MAX here, as every viewport can have an other zoom,
+		 *  and there is no way for us to know which is the biggest. So make the
+		 *  biggest area dirty, and we are safe for sure. */
 		MarkAllViewportsDirty(
 			sign.left - 6,
 			sign.top,
-			sign.left + ScaleByZoom(sign.width_1 + 12, _cur_dpi->zoom),
-			sign.top + ScaleByZoom(12, _cur_dpi->zoom));
+			sign.left + ScaleByZoom(sign.width_1 + 12, ZOOM_LVL_MAX),
+			sign.top + ScaleByZoom(12, ZOOM_LVL_MAX));
 	}
 }