From c973bd87cedd5479eef611b71e9d10df913d194c Mon Sep 17 00:00:00 2001 From: rubidium Date: Thu, 24 Apr 2008 12:32:37 +0000 Subject: [PATCH] (svn r12868) [0.6] -Backport from trunk r12795, r12776, r12683, r12681, r12678: - Fix: Vehicles could break down during loading and keep loading. The intention of the break down code is not to break down when having zero speed, therefor break downs now do not happen when loading [FS#1938] (r12795) - Fix: [OSX] In some rare cases when using an uncalibrated monitor the system colour space could not be retrieved. Show an error when this happens instead of just trying an assertion (r12776) - Fix: In some cases a news messages would not be shown [FS#1906] (r12683) - Fix: When a road vehicle has a tram only stop multiple times in a row in it's orders, only the first one would be skipped [FS#1918] (r12678) --- src/aircraft_cmd.cpp | 2 +- src/news_gui.cpp | 1 + src/roadveh_cmd.cpp | 5 +++-- src/ship_cmd.cpp | 2 +- src/train_cmd.cpp | 2 +- src/video/cocoa/wnd_quartz.mm | 3 ++- 6 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/aircraft_cmd.cpp b/src/aircraft_cmd.cpp index 9cfa3ba143..cb053b923d 100644 --- a/src/aircraft_cmd.cpp +++ b/src/aircraft_cmd.cpp @@ -2150,7 +2150,7 @@ static void AircraftEventHandler(Vehicle *v, int loop) if (v->breakdown_ctr <= 2) { HandleBrokenAircraft(v); } else { - v->breakdown_ctr--; + if (!v->current_order.type == OT_LOADING) v->breakdown_ctr--; } } diff --git a/src/news_gui.cpp b/src/news_gui.cpp index 1528ee38f1..e7f0f483bc 100644 --- a/src/news_gui.cpp +++ b/src/news_gui.cpp @@ -1022,6 +1022,7 @@ void DeleteVehicleNews(VehicleID vid, StringID news) if (_total_news == 0) { assert(_latest_news == _oldest_news); _latest_news = INVALID_NEWS; + _current_news = INVALID_NEWS; } /* Since we only imitate a FIFO removing an arbitrary element does need diff --git a/src/roadveh_cmd.cpp b/src/roadveh_cmd.cpp index d4cb02163f..a24bd25db0 100644 --- a/src/roadveh_cmd.cpp +++ b/src/roadveh_cmd.cpp @@ -790,7 +790,8 @@ static void ProcessRoadVehOrder(Vehicle *v) if (order->type == v->current_order.type && order->flags == v->current_order.flags && - order->dest == v->current_order.dest) { + order->dest == v->current_order.dest && + v->dest_tile != 0) { return; } @@ -1940,7 +1941,7 @@ static void RoadVehController(Vehicle *v) HandleBrokenRoadVeh(v); return; } - v->breakdown_ctr--; + if (!v->current_order.type == OT_LOADING) v->breakdown_ctr--; } if (v->vehstatus & VS_STOPPED) return; diff --git a/src/ship_cmd.cpp b/src/ship_cmd.cpp index ce83f898d5..5b567a9c38 100644 --- a/src/ship_cmd.cpp +++ b/src/ship_cmd.cpp @@ -646,7 +646,7 @@ static void ShipController(Vehicle *v) HandleBrokenShip(v); return; } - v->breakdown_ctr--; + if (!v->current_order.type == OT_LOADING) v->breakdown_ctr--; } if (v->vehstatus & VS_STOPPED) return; diff --git a/src/train_cmd.cpp b/src/train_cmd.cpp index aa87b50ff2..54ce8456b8 100644 --- a/src/train_cmd.cpp +++ b/src/train_cmd.cpp @@ -3570,7 +3570,7 @@ static void TrainLocoHandler(Vehicle *v, bool mode) HandleBrokenTrain(v); return; } - v->breakdown_ctr--; + if (!v->current_order.type == OT_LOADING) v->breakdown_ctr--; } if (HasBit(v->u.rail.flags, VRF_REVERSING) && v->cur_speed == 0) { diff --git a/src/video/cocoa/wnd_quartz.mm b/src/video/cocoa/wnd_quartz.mm index 6109c46dd8..dfb59c31f9 100644 --- a/src/video/cocoa/wnd_quartz.mm +++ b/src/video/cocoa/wnd_quartz.mm @@ -175,7 +175,8 @@ static CGColorSpaceRef QZ_GetCorrectColorSpace() CMCloseProfile(sysProfile); } - assert(colorSpace != NULL); + if (colorSpace == NULL) + error("Could not get system colour space. You might need to recalibrate your monitor."); } return colorSpace;