summaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
2021-05-12Fix #9202: Invalid test for unset NewGRF override mapping. (#9226)PeterN
2021-05-11Update: Translations from eintstranslators
korean: 1 change by telk5093 slovak: 149 changes by ApplePie420
2021-05-11Fix: [Network] mark server as offline when no longer reachable (#9244)Patric Stout
2021-05-11Fix #9243: [Network] For a dedicated server use a fallback client and server ↵rubidium42
name Also warn when the client or server name has not been set and provide pointers on how to set them
2021-05-11Fix: [Network] don't rebuild the host-list during iterating the list (#9240)Patric Stout
Additionally, only rebuild it when we added a new manual server, as otherwise it is a noop anyway.
2021-05-11Fix: [Network] don't mark the last-joined server as manual (#9239)Patric Stout
2021-05-11Fix: [Network] clients leaving because of broken connections was not ↵Patric Stout
broadcasted (#9238) The code mixed up "client has quit but we already told everyone" with "client lost connection, handle this". Split up those two signals: - CLIENT_QUIT means we told everyone and the connection is now dead - CONNECTION_LIST means we should tell everyone we lost a client
2021-05-10Update: Translations from eintstranslators
german: 2 changes by Wuzzy2
2021-05-10Fix: leaking file descriptorsRubidium
2021-05-10Fix: memory leak due to assigning result of strdup to a std::stringRubidium
2021-05-10Cleanup: [Fluidsynth] Remove fluid_player_joinRubidium
The function fluid_player_join in the library is broken beyond compare for the usecases it was used for (see their #872). It does not wait until it is safe to delete the player, so it is up to the end user to ensure that. For OpenTTD we acquire a lock before fluid_synth_write_s16 and we acquire the same lock in the stop function. So, only one of the functions can be doing its thing, meaning we do not need to wait for the player to be stopped as it cannot be doing anything as we prevent that by the lock.
2021-05-10Change: reworded many of the network errors during connect/listen (#9230)Patric Stout
Also changed some levels to 0, as a failing listen() is something we should tell the user about. Hiding this information is a bit evil.
2021-05-09Update: Translations from eintstranslators
finnish: 1 change by hpiirai
2021-05-09Fix: lobby window doesn't close if no connection could be established (#9223)Patric Stout
2021-05-08Fix: Apply unscaled padding to Viewport inside WWT_INSET. (#9219)PeterN
Since pixel dimensions in SetPadding() are scaled by GUI size, padding for inset viewports was excessive. Instead, automatically apply padding for WWT_INSET at widget level. This applies to all widgets inside a WWT_INSET, which in all instances is a NWID_VIEWPORT.
2021-05-08Fix: only query a manually added server if it isn't there yetPatric Stout
But always mark it as manually, no matter if it was there or not.
2021-05-08Fix: don't do a network disconnect between two queriesPatric Stout
This meant that on opening the Multiplayer window, if you had more than one server configured, it would one by one cancel all pending queries and send a new. Result: only the last server was updated.
2021-05-08Fix: destroying a TCPConnecter that was still resolving made illegal writesPatric Stout
Basically, we should join the resolve thread before we destruct the object.
2021-05-08Codechange: move connection_string to private for TCPConnecterPatric Stout
The most common case never needs access to it anymore. Make the one exception to this explicit. This means the fact that we store it is now an implementation detail.
2021-05-08Fix fdc11a9: Missing sprite count determined on the wrong filerubidium42
2021-05-08Cleanup: remove the old FIO slot functionsRubidium
2021-05-08Codechange: let NewGRF make use of SpriteFile instead of most of the FIO ↵Rubidium
slot functions
2021-05-08Codechange: introduce SpriteFile to be used by the sprite loader instead of ↵Rubidium
the global FIO slot functionality
2021-05-08Codechange: lets music make use of RandomAccessFile instead of the FIO slot ↵Rubidium
functions
2021-05-08Codechange: let NewGRF sounds make use of RandomAccessFile instead of the ↵Rubidium
FIO slot functions
2021-05-08Codechange: use the new RandomAccessFile as backend for the FIO slot functionsRubidium
2021-05-08Add: concept of a RandomAccessFile to replace the FIO slot functionsRubidium
2021-05-08Codechange: Don't save unused NewGRF override mappings. (#9202)PeterN
2021-05-08Change: Use gender-neutral pronouns in console command messages (and ↵William Davis
comments) (#9203)
2021-05-08Fix f7e390bd: getpeername() doesn't work on closed sockets (#9213)Patric Stout
2021-05-08Fix #9209: Excessive time resizing highscore/news window when screen is too ↵PeterN
small. (#9210) If the highscore/news window panel size, which is now scaled by GUI zoom, is larger than the screen size, a loop will be entered where the window is repeatedly resized. This is resolved by removing the minimal size from the panel, as the window is always resized to cover the screen anyway. This means the screen size can never be too small.
2021-05-08Codechange: Slider widget used different range for drawing vs setting.Peter Nelson
Using the same range for setting means that no workaround for setting the extremes is necessary.
2021-05-08Codechange: Make GetCurrentRect() conform to usual Rect bounds, and reuse it.Peter Nelson
Similar code is already repeated in other locations.
2021-05-08Codechange: Don't update window contents if scrollbar position has not moved.Peter Nelson
2021-05-08Codechange: Set specific widgets dirty instead of window.Peter Nelson
2021-05-08Codechange: [Network] Change ChatMessage's message to std::string and ↵rubidium42
simplify some code
2021-05-08Fix: [Emscripten] Use non-XDG directories to simplify lolac storage (#9207)embeddedt
2021-05-07Update: Translations from eintstranslators
dutch: 2 changes by Afoklala
2021-05-06Feature: use Happy Eyeballs to make network connections (TCP-only) (#9199)Patric Stout
Hostnames like "content.openttd.org" resolve into multiple IPv4 and IPv6. It is possible that either of the IPs is not working, either due to a poorly configured OS (having IPv6 but no valid route), broken network paths, or a service that is temporary unavailable. Instead of trying the IPs one by one, waiting for a 3s timeout between each, be a bit more like browsers, and stack attempts on top of each other with slight delays. This is called Happy Eyebells. Initially, try the first IPv6 address. If within 250ms there is no connection yet, try the first IPv4 address. 250ms later, try the second IPv6 address, etc, till all addresses are tried. If any connection is created, abort all the other (pending) connections and use the one that is created. If all fail 3s after the last connect(), trigger a timeout for all.
2021-05-06Codechange: [Network] Use std::string for NetworkGameInforubidium42
2021-05-06Codechange: add DrawString(Multiline) that accepts std::string&rubidium42
2021-05-06Codechange: add SetDParamStr that accepts std::string&rubidium42
2021-05-06Update: Translations from eintstranslators
portuguese: 1 change by azulcosta
2021-05-06Codechange: [Network] Move connection string parsing away from C-stringsrubidium42
2021-05-06Codechange: [Network] Use std::string for NetworkAddress' host namerubidium42
2021-05-06Codechange: [Network] Use new/delete instead of calloc/free for NetworkGameListrubidium42
2021-05-06Add: [[nodiscard]] to std::string str_validaterubidium42
2021-05-05Codechange: use connection_string in favour of NetworkAddress (#9197)Patric Stout
We now resolve the connection_string to a NetworkAddress in a much later state. This means there are fewer places constructing a NetworkAddress. The main benefit of this is in later PRs that introduce different types of NetworkAddresses. Storing this in things like NetworkGameList is rather complex, especially as NetworkAddress has to be mutable at all times. Additionally, the NetworkAddress is a complex object to store simple information: how to connect to this server.
2021-05-05Cleanup: [Network] Remove variable from NetworkGameInfo that is only used ↵Rubidium
during deserialisation
2021-05-05Change: [Network] Update server's NetworkServerGameInfo only when neededrubidium42
Split the updating in a "static" version that only needs to be called when a new map is loaded or some settings are changed, and a "dynamic" version that updates everything that changes regularly such as the current game date or the number of spectators.