summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2021-06-26Fix #9386: compilers failing to compile with LTO by using variants instead ↵rubidium42
of new + unique_ptr With std::variant all memory can be figured out at compile time, so the compiler needs to keep track of fewer elements. It also saves out a unique_ptr and its memory management, over a slight impact for resolving a setting.
2021-06-26Codechange: use C-style strings instread of std::string in the SettingDesc ↵rubidium42
constructor This as using std::string causes much more variables to be tracked, potentially causing problemes for certain compilers in certain situations
2021-06-26Codechange: introduce helper to convert from the iterated type to the actual ↵rubidium42
SettingDesc
2021-06-26Codechange: instead of "naked" initializer lists, declare the type in the ↵rubidium42
saveload macros This to help variant's constructor to be able to resolve the constructor of the setting
2021-06-26Codechange: remove overloading on UpdateServiceIntervalrubidium42
One UpdateServiceInterval has two parameters to update the service interval for a vehicle type, the other for all vehicle types at once. Rename the latter to help with function resolution for the introduction of variants.
2021-06-26Codechange: [Network] Remove overload on NetworkValidateClientNamerubidium42
Rename the zero-parameter NetworkValidateClientName to NetworkValidateOurClientName to make it clearer it is performed on our client name, and to make it a non-overloaded function to aid with the variant being added a few commits later
2021-06-26Change: prevent palette updates during copying to the video driverPatric Stout
ThreadSanitizer rightfully notices that the game-thread could update the palette while the draw-thread is copying it for local use. The odds of this are very small, but nevertheless, it does carry a very good point. It wouldn't hurt the application in any way, but it might cause visual glitches on the screen.
2021-06-26Codechange: use _cur_palette the same in all the driversPatric Stout
It was a bit of a mixed bag. With this change, gfx.cpp is in control who accesses _cur_palette from the video-drivers.
2021-06-26Change: [GitHub] use an issue form to let people fill in bug report / ↵Patric Stout
crashes (#9400)
2021-06-25Update: Translations from eintstranslators
swedish: 1 change by joeax910 dutch: 9 changes by Afoklala
2021-06-22Codechange: [OSX] Remove old code that has no effect on current OSX versions.Michael Lutz
2021-06-22Codechange: [OSX] We use OpenGL even if Apple doesn't like it.Michael Lutz
2021-06-22Codechange: [OSX] Use more exact enum names where introduced with the 10.12 SDK.Michael Lutz
The enum values still have the exact same numerical values, but the 10.12 SDK introduced more explicit names (e.g. like NSEventTypeApplicationDefined instead of NSApplicationDefined) for several enum constants. Use them when available.
2021-06-22Update: Translations from eintstranslators
english (us): 9 changes by 2TallTyler
2021-06-20Update: Translations from eintstranslators
swedish: 1 change by kustridaren korean: 1 change by telk5093
2021-06-19Fix #8169: nullptr dereference when autoreplacing vehicle with no orders (#9387)Jonathan G Rennison
2021-06-19Update: Translations from eintstranslators
swedish: 12 changes by joeax910
2021-06-17Fix: Wrong cargo line position in IndustryCargo window. (#9383)PeterN
Resolved by changing calculation to determine the offset based on centring the cargo lines in the available space.
2021-06-18Fix #9358: Don't skip empty files in tar (#9367)SamuXarick
2021-06-17Fix: don't propagate shift/ctrl state till next game-tick (#9381)Patric Stout
When the game-loop is very slow, it was easily possible to start the loop with _shift_pressed being false, but end with _shift_pressed being true. This doesn't hurt the game as such, but for the user this can be very weird: I pressed "Buy Vehicle", pressed shift a bit later, and I still get a cost indication.
2021-06-17Fix: on startup, NewGRF scan could case race-condition (#9382)Patric Stout
Creating a thread was not thread-safe. The irony. The video-driver has a function GameLoopPause() which first checks if the thread is the game-thread or not. For this it needs access to this->game_thread. This variable is set in StartNewThread(). However, due to timing, it is well possible GameLoopPause() is called from the thread well before this->game_thread is assigned. And so we have a race-condition! Simply solve this by preventing a thread to start till we are done with our bookkeeping.
2021-06-17Fix: thread safety issue during exiting the game (#9380)Patric Stout
_exit_game is read by the draw-thread to know when to exit, but most of the time written by the game-thread.
2021-06-17Cleanup: simplify some boolean expressionsRubidium
2021-06-17Cleanup: use true/false instead of 1/0 where applicableRubidium
2021-06-17Cleanup: use nullptr instead of 0 or NULLRubidium
2021-06-17Cleanup: [Squirrel] Use nullptr instead of 0 or NULLRubidium
2021-06-17Cleanup: [Script] Use nullptr instead of 0 or NULLRubidium
2021-06-17Cleanup: remove lines from station_base.h that are already included in ↵Rubidium
includes base_station_base.h
2021-06-15Update: Translations from eintstranslators
spanish: 3 changes by MontyMontana hindi: 28 changes by ritwikraghav14
2021-06-15Codechange: mark chunks that are not stored as CH_READONLYPatric Stout
This makes it easier to spot chunks that have a save_proc that is a nullptr, but also prevents confusion, where it looks like the CH_ type of a chunk has influence on how it is being read. It is not, it is only used for saving.
2021-06-15Change: rework GLOG chunk to be more like the restPatric Stout
Basically it is very similar to Vehicles, where there first is a type field, followed by data of that type. So this commit makes it looks like how Vehicles solved that. This removes a lot of custom "keeping track of length" stuff.
2021-06-15Change: rework several CH_RIFF chunks to use CH_ARRAY insteadPatric Stout
This adds two byte extra to those chunks, and might feel a bit silly at first. But in later changes we will prefix CH_ARRAY with a table header, and then this change shines. Without this, we could still add headers to these chunks, but any external reader wouldn't know if the CH_RIFF has them or not. This way is much more practical, as they are now more like any other chunk.
2021-06-15Codechange: add the ability to save/load a std::vectorPatric Stout
std::vector<bool> is not possible, as .. that is a nice special case in C++. This new type will be used in next commit.
2021-06-15Change: prefix SL_ARR with the length of the arrayPatric Stout
This means that during loading we can validate that what is saved is also that what is expected. Additionally, this makes all list types similar to how they are stored on disk: First a gamma to indicate length, followed by the data. The size still depends on the type.
2021-06-15Codechange: make it more obvious SlArray supports SLE_VAR_NULLPatric Stout
In the end, the code was already doing the right thing, but a few functions deep, and not really obvious. When validating what objects can handle SLE_VAR_NULL, it is nicer to just have this obvious.
2021-06-15Codechange: use SL_NULL if you want to store null-bytes or load to nothingPatric Stout
Using SL_ARR for this gives us a bit of trouble later on, where we add a length-field to SL_ARR. This of course is not the intention of SLE_CONDNULL. So better seperate it.
2021-06-15Change: switch SL_DEQUE and SL_REFLIST length field to a gammaPatric Stout
The current SaveLoad is a bit inconsistent how long a length field is. Sometimes it is a 32bit, sometimes a gamma. Make it consistent across the board by making them all gammas.
2021-06-15Change: indicate in the savegame if a SL_STRUCT contains any dataPatric Stout
This helps external tooling to understand if a SL_STRUCT should be skipped when reading. Basically, this transforms an SL_STRUCT into a SL_STRUCTLIST with either 0 or 1 length.
2021-06-15Change: store length of SL_STRUCTLIST in the savegamePatric Stout
This wasn't consistently done, and often variables were used that were read by an earlier blob. By moving it next to the struct itself, the code becomes a bit more self-contained and easier to read. Additionally, this allows for external tooling to know how many structs to expect, instead of having to know where to find the length-field or a hard-coded value that can change at any moment.
2021-06-15Fix: you could join an AI company in multiplayer via the GUI (#9369)SamuXarick
2021-06-15Cleanup: remove some unneeded c_str() callsRubidium
2021-06-15Codechange: [Network] Use std::string instead of char[] for the name of the ↵rubidium42
file that is downloading
2021-06-15Codechange: [Network] Use std::string for the client name in the network serverrubidium42
2021-06-15Codechange: [Network] Use string_view for network compatability checkrubidium42
2021-06-15Codechange: [Network] Simplify constructing the HTTP request with fmtrubidium42
2021-06-15Codechange: [Network] Let NetworkError return its std::string instead of a ↵rubidium42
C-string
2021-06-15Codechange: [Network] Make hostname/client IP return strings instead of a ↵rubidium42
C-string
2021-06-15Codechange: [Network] Let IsInNetmask use std::stringrubidium42
2021-06-15Codechange: [Network] Simplify formatting of network addresses to stringrubidium42
2021-06-14Fix: [Network] Determining GetNetworkRevisionString could overflow and ↵rubidium42
underflow its buffer Tagged releases are not affected