From c607e6cb374cd2534b980b771f48e94be9577eea Mon Sep 17 00:00:00 2001 From: rubidium Date: Sun, 15 Nov 2009 15:31:17 +0000 Subject: [PATCH] (svn r18098) [0.7] -Backport from trunk: - Fix: Some possible unwanted side effects if using some sorts of boolean expressions in DEBUG (r18070) - Fix: Crash when an articulated RV is turning on a drive through road station that gets forcefully (bankrupt) removed [FS#3310] (r18049) [0.7] -Prepare for 0.7.4-RC1 --- changelog.txt | 32 ++++++++++++-- known-bugs.txt | 80 ++++++++++++++++++++++------------ os/debian/changelog | 6 +++ os/rpm/openttd.spec | 2 +- os/win32/installer/install.nsi | 6 +-- readme.txt | 4 +- src/debug.h | 4 +- src/station_cmd.cpp | 10 ++++- 8 files changed, 103 insertions(+), 41 deletions(-) diff --git a/changelog.txt b/changelog.txt index 4e0e99b722..217bd54183 100644 --- a/changelog.txt +++ b/changelog.txt @@ -1,3 +1,29 @@ +0.7.4-RC1 (2009-11-15) +------------------------------------------------------------------------ +- Change: Prefer extmidi over allegro midi and allegro over null driver [FS#3272] (r17875) +- Change: [NewGRF] Apply default refitmasks only when the NewGRF did not set any of the three refittability properties (xor mask, positive classes, negative classes) (r17663) +- Fix: Crash when an articulated RV is turning on a drive through road station that gets forcefully (bankrupt) removed [FS#3310] (r18049) +- Fix: GCC 4.5 compiling (r18045) +- Fix: AIs failed to load their data from savegames by crashing them when they tried [FS#3290] (r18038) +- Fix: Screen jumped a bit for at least SDL and Allegro when right-click-dragging (r18030) +- Fix: [NewGRF] Improve parsing of RIFF data. Skip unknown chunks and check chunk sizes (r17999) +- Fix: When you start giving money (input window for amount), then get moved to spectators and you click 'Ok' a crash would occur (r17953) +- Fix: Use 24bpp BMP format instead of 32bpp for screenshots. Saves space and is supported by more image viewers (r17943) +- Fix: Close BMP file when making screenshot fails (r17941) +- Fix: Deadlock when trying to create screenshot with too long name (including path) (r17936) +- Fix: Crash when closing NewGRF parameter window with no NewGRF selected [FS#3291] (r17922) +- Fix: 32bpp BMP screenshots were in wrong colours on big endian machines and broken when screen width was not a multiple of 4 (r17910, r17909) +- Fix: Uninitialised values in some paths of loading TTO savegames [FS#3288] (r17908) +- Fix: Make the plane speed setting unchangeable in network games because it can be read by NewGRFs on game load and thus if it changes cause desyncs (r17902) +- Fix: [NewGRF] 'subtract-in' is also signed for production callback version 0 (r17857) +- Fix: [NewGRF] _date_fract runs from 0 to 73 since r2041. Variable 0x09 should not (r17824) +- Fix: Do not fail hard when no soundcard could be detected; just fall back on the null-driver [FS#3268] (r17788) +- Fix: CJK languages do not have spaces, so for adding newlines (multi line strings) we need to (properly) handle the case when there are no spaces instead of truncating the string [FS#3264] (r17772) +- Fix: Powernaut Helicopter got wrong 'load amount' (r17758) +- Fix: [NewGRF] 'last_value' and 'reseed' are shared between procedure and main chain, 'scope' and 'count' are not (r17672) +- Fix: Count only active clients (not those waiting for map download) when checking min_active_clients limit (r16506) + + 0.7.3 (2009-10-01) ------------------------------------------------------------------------ - Fix: [NewGRF] Crash when trying to build an industry that has no industry layout defined [FS#3233] (r17638, r17633) @@ -14,12 +40,12 @@ - Fix: Assertion triggered when the second vehicle in a 101+ (or 11+ if mammoth trains is disabled) vehicle free wagon chain is an engine and the first vehicle is moved to another chain [FS#3208] (r17576) - Fix: [NewGRF] Memory leak when viewing the NewGRF settings of a server (r17563) - Fix: [NewGRF] The NewGRF settings of (remote) network games did not get properly updated when the NewGRFs were rescanned causing reading of freed data [FS#2972] (r17562) -- Fix: [NewGRF] Close the "Add NewGRF" window when you close the "NewGRF Settings" window. The add window has a pointer to the settings which means that not deleting it would cause dereferencing an already freed pointer [FS#3206] (r17559) +- Fix: [NewGRF] Close the 'Add NewGRF' window when you close the 'NewGRF Settings' window. The add window has a pointer to the settings which means that not deleting it would cause dereferencing an already freed pointer [FS#3206] (r17559) - Fix: Vehicles waiting for their time table did not load anymore after their initial load was completed [FS#3201] (r17551) - Fix: Aircraft were given an unfair advantage in station rating calculations (r17550) - Fix: [NewGRF] Sign extending of profit calculation did not work (r17546) -- Fix: [NoAI] AIs had "infinite" time when running code from the global scope [FS#3202] (r17545) -- Fix: [NoAI] Crash when doing commands in the "global" scope [FS#3202] (r17544) +- Fix: [NoAI] AIs had 'infinite' time when running code from the global scope [FS#3202] (r17545) +- Fix: [NoAI] Crash when doing commands in the 'global' scope [FS#3202] (r17544) 0.7.3-RC1 (2009-09-13) diff --git a/known-bugs.txt b/known-bugs.txt index 5df7ec914a..3126cc4714 100644 --- a/known-bugs.txt +++ b/known-bugs.txt @@ -1,6 +1,6 @@ OpenTTD's known bugs -Last updated: 2009-10-01 -Release version: 0.7.3 +Last updated: 2009-11-15 +Release version: 0.7.4-RC1 ------------------------------------------------------------------------ @@ -62,7 +62,7 @@ reasons why we think that fixing them is infeasible. We might make some minor improvements that reduce the scope of these bugs, but we will not be able to completely fix them. -Clipping problems +Clipping problems [FS#119] In some cases sprites are not drawn as one would expect. Examples of this are aircraft that might be hidden below the runway or trees that in some cases are rendered over vehicles. @@ -80,7 +80,34 @@ Clipping problems leave the Transport Tycoon graphics, which in effect means OpenTTD will not be a Transport Tycoon clone anymore. -Duplicate (station) names after renaming +Lost trains ignore (block) exit signals [FS#1473] + If trains are lost they ignore block exit signals, blocking junctions + with presignals. This is caused because the path finders cannot tell + where the train needs to go. As such a random direction is chosen at + each junction. This causes the trains to occasionally to make choices + that are unwanted from a player's point of view. + This will not be fixed because lost trains are in almost all cases a + network problem, e.g. a train can never reach a specific place. This + makes the impact of fixing the bug enormously small against the + amount of work needed to write a system that prevents the lost trains + from taking the wrong direction. + +Forbid 90 degree turns does not work for crossing PBS paths [FS#2737] + When you run a train through itself on a X junction with PBS turned on + the train will not obey the 'forbid 90 degree turns' setting. This is + due to the fact that we can not be sure that the setting was turned + off when the track was reserved, which means that we assume it was + turned on and that the setting does not hold at the time. We made it + this way to allow one to change the setting in-game, but it breaks + slightly when you are running your train through itself. Running a + train through means that your network is broken and is thus a user + error which OpenTTD tries to graciously handle. + Fixing this bug means that we need to record whether this particular + setting was turned on or off at the time the reservation was made. This + means adding quite a bit of data to the savegame for solving an issue + that is basically an user error. We think it is not worth the effort. + +Duplicate (station) names after renaming [FS#3204] After renaming stations one can create duplicate station names. This is done giving a station the same custom name as another station with an automatically generated name. @@ -96,29 +123,24 @@ Duplicate (station) names after renaming compared to the other custom names in the same class and not compared to the automatically generated names. -Forbid 90 degree turns does not work for crossing PBS paths - When you run a train through itself on a X junction with PBS turned on - the train will not obey the 'forbid 90 degree turns' setting. This is - due to the fact that we can not be sure that the setting was turned - off when the track was reserved, which means that we assume it was - turned on and that the setting does not hold at the time. We made it - this way to allow one to change the setting in-game, but it breaks - slightly when you are running your train through itself. Running a - train through means that your network is broken and is thus a user - error which OpenTTD tries to graciously handle. - Fixing this bug means that we need to record whether this particular - setting was turned on or off at the time the reservation was made. This - means adding quite a bit of data to the savegame for solving an issue - that is basically an user error. We think it is not worth the effort. +Extreme CPU usage/hangs when using SDL and PulseAudio [FS#3294] + OpenTTD can be extremely slow/use a lot of CPU when the sound is + played via SDL and then through PulseAudio's ALSA wrapper. Under the + same configuration OpenTTD, or rather SDL, might hang when exiting + the game. This setup seems to be the default configuration for + Ubuntu 9.04 and later. For Ubuntu this issue can be solved by + installing the 'libsdl1.2debian-pulseaudio' package from Ubuntu's + Universe repository. For other distributions a similar package needs + to be installed. -Lost trains ignore (block) exit signals - If trains are lost they ignore block exit signals, blocking junctions - with presignals. This is caused because the path finders cannot tell - where the train needs to go. As such a random direction is chosen at - each junction. This causes the trains to occasionally to make choices - that are unwanted from a player's point of view. - This will not be fixed because lost trains are in almost all cases a - network problem, e.g. a train can never reach a specific place. This - makes the impact of fixing the bug enormously small against the - amount of work needed to write a system that prevents the lost trains - from taking the wrong direction. +OpenTTD not properly resizing with SDL on X [FS#3305] + Under some X window managers OpenTTD's window does not properly + resize. You will either end up with a black bar at the right/bottom + side of the window or you cannot see the right/bottom of the window, + e.g you cannot see the status bar. The problem is that OpenTTD does + not always receive a resize event from SDL making it impossible for + OpenTTD to know that the window was resized; sometimes moving the + window will solve the problem. + Window managers that are known to exhibit this behaviour are KDE's + and GNOME's. With the XFCE's and LXDE's window managers the resize + event is sent when the user releases the mouse. diff --git a/os/debian/changelog b/os/debian/changelog index 1867fd491b..4f6dc379da 100644 --- a/os/debian/changelog +++ b/os/debian/changelog @@ -1,3 +1,9 @@ +openttd (0.7.4~RC1) unstable; urgency=low + + * New upstream release. + + -- Matthijs Kooijman Sun, 15 Nov 2009 16:30:07 +0100 + openttd (0.7.3) unstable; urgency=low * New upstream release. diff --git a/os/rpm/openttd.spec b/os/rpm/openttd.spec index 9f17c46efb..6628e8ae51 100644 --- a/os/rpm/openttd.spec +++ b/os/rpm/openttd.spec @@ -13,7 +13,7 @@ #------------------------------------------------------------------------------- Name: openttd -Version: 0.7.3 +Version: 0.7.4 Release: 1%{?dist} Group: Amusements/Games diff --git a/os/win32/installer/install.nsi b/os/win32/installer/install.nsi index bb08b893e0..9ca28e6388 100644 --- a/os/win32/installer/install.nsi +++ b/os/win32/installer/install.nsi @@ -1,7 +1,7 @@ !define APPNAME "OpenTTD" ; Define application name -!define APPVERSION "0.7.3" ; Define application version -!define APPVERSIONINTERNAL "0.7.3.0" ; Define application version in X.X.X.X -!define INSTALLERVERSION 68 ; NEED TO UPDATE THIS FOR EVERY RELEASE!!! +!define APPVERSION "0.7.4-RC1" ; Define application version +!define APPVERSIONINTERNAL "0.7.4.0" ; Define application version in X.X.X.X +!define INSTALLERVERSION 69 ; NEED TO UPDATE THIS FOR EVERY RELEASE!!! !include ${VERSION_INCLUDE} !define APPURLLINK "http://www.openttd.org" diff --git a/readme.txt b/readme.txt index 14ef1b9883..c662abee34 100644 --- a/readme.txt +++ b/readme.txt @@ -1,6 +1,6 @@ OpenTTD README -Last updated: 2009-10-01 -Release version: 0.7.3 +Last updated: 2009-11-15 +Release version: 0.7.4-RC1 ------------------------------------------------------------------------ diff --git a/src/debug.h b/src/debug.h index f9aa0ecc4d..165b479225 100644 --- a/src/debug.h +++ b/src/debug.h @@ -27,9 +27,9 @@ #endif #else /* NO_DEBUG_MESSAGES */ #if defined(__GNUC__) && (__GNUC__ < 3) - #define DEBUG(name, level, args...) if ((level == 0) || ( _debug_ ## name ## _level >= level)) debug(#name, args) + #define DEBUG(name, level, args...) if (((level) == 0) || ( _debug_ ## name ## _level >= (level))) debug(#name, args) #else - #define DEBUG(name, level, ...) if (level == 0 || _debug_ ## name ## _level >= level) debug(#name, __VA_ARGS__) + #define DEBUG(name, level, ...) if ((level) == 0 || _debug_ ## name ## _level >= (level)) debug(#name, __VA_ARGS__) #endif extern int _debug_ai_level; diff --git a/src/station_cmd.cpp b/src/station_cmd.cpp index 87832301c8..7bb02e2228 100644 --- a/src/station_cmd.cpp +++ b/src/station_cmd.cpp @@ -1495,7 +1495,15 @@ CommandCost CmdBuildRoadStop(TileIndex tile, DoCommandFlag flags, uint32 p1, uin static Vehicle *ClearRoadStopStatusEnum(Vehicle *v, void *) { - if (v->type == VEH_ROAD) v->u.road.state &= RVSB_ROAD_STOP_TRACKDIR_MASK; + if (v->type == VEH_ROAD) { + /* Okay... we are a road vehicle on a drive through road stop. + * But that road stop has just been removed, so we need to make + * sure we are in a valid state... however, vehicles can also + * turn on road stop tiles, so only clear the 'road stop' state + * bits and only when the state was 'in road stop', otherwise + * we'll end up clearing the turn around bits. */ + if (HasBit(v->u.road.state, RVS_IN_DT_ROAD_STOP)) v->u.road.state &= RVSB_ROAD_STOP_TRACKDIR_MASK; + } return NULL; }