summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortruelight <truelight@openttd.org>2007-05-26 12:19:54 +0000
committertruelight <truelight@openttd.org>2007-05-26 12:19:54 +0000
commit98cf7f5c7b6d107a488635178f8cad7e9bc96ffe (patch)
treed0159c6e3f538683ed5e469db71b7aeb536b6a7a
parent01709037c032cdb3732496cfc1d13569a45f5d76 (diff)
downloadopenttd-98cf7f5c7b6d107a488635178f8cad7e9bc96ffe.tar.xz
(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)
-rw-r--r--src/signs.cpp7
-rw-r--r--src/station.cpp7
2 files changed, 10 insertions, 4 deletions
diff --git a/src/signs.cpp b/src/signs.cpp
index 428fdcf40..8f3f0f365 100644
--- a/src/signs.cpp
+++ b/src/signs.cpp
@@ -64,11 +64,14 @@ void UpdateAllSignVirtCoords()
*/
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));
}
/**
diff --git a/src/station.cpp b/src/station.cpp
index 2c17406f0..2234e8417 100644
--- a/src/station.cpp
+++ b/src/station.cpp
@@ -122,11 +122,14 @@ void Station::MarkDirty() const
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));
}
}