Repository navigation
steam_friends connect/Joinable auto-derive + CI build-loop fix - #3
Merged
Merged
Conversation
Release builds previously compiled out ALL logging: PRINT_DEBUG expanded to nothing (EMU_RELEASE_BUILD), the global dbg_logger and every dbg_log method body were stripped. That makes a shipped emulator impossible to observe (e.g. LAN lobby matchmaking) without a separate debug build. Compile logging into release too, gated at runtime by the GSE_FORCE_LOG env var (dbg_log::is_active): debug builds always log; release logs only when the var is set. PRINT_DEBUG now wraps its body in 'if (dbg_logger.is_active())' so an inactive logger costs one cached bool check and runs NO side effects — in particular it must not call PRINT_DEBUG_CLEANUP/WSASetLastError, which would clobber the game's last socket error on every call. open() is the single runtime gate; all write paths check out_file, so inactive logging no-ops. Lets us turn on full goldberg logs (STEAM_LOG_<rand>.log next to the exe) on a release DLL by exporting GSE_FORCE_LOG=1, with zero impact when unset.
The per-arch build loop echoed 'Building %P (%A, release)'. Inside a parenthesized FOR do(...) block, the literal ')' in '(%A, release)' closes the inner do( block prematurely, so msbuild fell OUTSIDE the loop and got a literal '%A' for Platform -> 'release|%A invalid' (MSB4126). Result: every main target (api_regular/api_experimental/steamclient_*) silently failed (the failure is only echoed as a Warning), and only the hardcoded lib_steam_old ever produced output — across nightly too. Replace the parens with brackets so msbuild stays in the loop and Platform=%%A expands to x64/Win32.
…friend's joinable lobby Real Steam auto-derives the 'connect' rich-presence (launch/join param +connect_lobby <64-bit lobby id>) and 'Joinable' from a member's joinable lobby. goldberg did not, so games that drive friends 'Join Game' purely off rich presence (EOSPlus+Steam titles such as StarRupture) saw GetFriendRichPresence(host,'connect') == "" and reported 'No sessions available'. Derive both in get_friend_rich_presence_silent when the friend is in a (non-invisible) lobby and the game did not set the key itself. The friend's lobby_id is already broadcast in the Friend struct; settings->get_lobby() only tracks non-invisible lobbies, so a non-zero lobby_id is a good proxy for joinable.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Three commits over
dev:b7246395ci(win): fix build loop —)insideecho === (...,release) ===closed thedo(block early, so msbuild fell outside the FOR loop and every main target (incl.steam_api64.dll) silently failed; nightly shipped onlySteam.dll. This is why splitux's bundled Windows goldberg was empty.b7430e00steam_friends: auto-deriveconnect/Joinablefrom a friend's joinable lobby. Real Steam derives+connect_lobby <id>automatically; goldberg didn't, so EOSPlus+Steam friend-join saw empty rich-presenceconnect. Generic Steam primitive.e0bf4b6fdbg_log: opt-in release logging viaGSE_FORCE_LOG— off by default.Diagnostic-only commits (per-PID log filenames, RequestLobbyData logging) intentionally excluded.