Commit Graph

45681 Commits

Author SHA1 Message Date
Tom Pratt
08cd85cf8b
Merge fb03278049 into d19952cc11 2026-05-08 15:15:48 +02:00
Dentomologist
d19952cc11
Merge pull request #14634 from JosJuice/jitarm64-msr-dr-bit
JitArm64: Fix DR check in MSRUpdated
2026-05-07 17:21:50 -07:00
Dentomologist
30a20d75d2
Merge pull request #14629 from Simonx22/android/convert-tvutil-to-kotlin
Android: Convert TvUtil to Kotlin
2026-05-07 13:23:48 -07:00
Tom Pratt
fb03278049 Update compose dependencies
Was using 2025 instead of 2026! Fixed some buggy bottom sheet behaviour.

Minor tidying of the chat UI in the bottom sheet
2026-05-07 16:35:18 +02:00
Tom Pratt
37e34af96a Implement DoAllPlayersHaveGame() check 2026-05-07 11:22:24 +02:00
Tom Pratt
c0e44478a0 Add network mode picker for host 2026-05-07 11:22:24 +02:00
Tom Pratt
5d54c161b7 Add host buffer settings for fair input delay mode
Also rename max buffer to client buffer for better consistency with settings and c++
2026-05-07 11:22:24 +02:00
Tom Pratt
f38f61a6a0 Handle traversal state changes and errors
Traversal connections show in the joining info UI.
Non fatal errors show the retry button.
Fatal errors end the netplay session.
2026-05-07 11:22:24 +02:00
Tom Pratt
4a52be0960 Show joining info for local and external IP addresses
Doesn't support traversal yet
2026-05-07 11:22:24 +02:00
Tom Pratt
3e34012148 Separate out GetExternalIPAddress helper function
De-duplicates the two inline implementations and prepares it for use from Android.
2026-05-07 11:22:24 +02:00
Tom Pratt
39d17b2faf Add ability to choose game when hosting
Also fix bottom sheets so they survive rotation
2026-05-07 11:22:24 +02:00
Tom Pratt
309090520e Send own messages to chat
A player's own messages don't come back via the server.
2026-05-07 11:22:24 +02:00
Tom Pratt
fa5facfdfb Create NetPlayServer and start game 2026-05-07 11:22:24 +02:00
Tom Pratt
ccce2b2e9a Hosting UI 2026-05-07 11:22:24 +02:00
Tom Pratt
7ea7e638bd Implement OnMsgPowerButton 2026-05-07 11:22:24 +02:00
Tom Pratt
2c82e5188e Game digest progress dialog
We just about get away with using a StateFlow in NetplaySession since the host sends AbortGameDigest when closing their own dialog. Without that it would be harder for the UI to distinguish between subsequent dialogs. If that wasn't the case then NetplaySession might need to expose the individual progress and result updates and have the view model assemble it into the overall GameDigestProgress.
2026-05-07 11:22:24 +02:00
Tom Pratt
8792a4b924 Handle desync messages
Show them in the chat window and also in a toast during game play.
2026-05-07 11:22:24 +02:00
Tom Pratt
1285cb2282 Make NetplaySession not a singleton
Create a new NetplaySession each time we try to join a netplay game. Hold onto it in NetplayManager so its available to the different activities that need to access it. Close the session when backing out of the netplay UI. Some guardrails in case things go out of sync: creating a session closes the old one if it is still around for some reason, finalizer in NetplaySession to release native resources if not closed explicitly for some reason. Profiling done to ensure all kotlin and native objects are successfully cleared / garbage collected.
2026-05-07 11:22:23 +02:00
JosJuice
f09a736f14
Merge pull request #14645 from Dentomologist/msghandler_use_more_suitable_log_levels
MsgHandler: Use LogLevel matching MsgType for alerts
2026-05-07 11:07:41 +02:00
Tom Pratt
371fa1a250 Use existing settings API instead of custom jni calls 2026-05-07 10:39:50 +02:00
Tom Pratt
3572afcbbf Show save transfer progress
When transferring saves from the host. Equivalent of ChunkedProgressDialog in QT.
2026-05-07 10:39:50 +02:00
Tom Pratt
ab6c2d0d56 Dont try to load temporary save states when launching netplay
An orientation change can trigger this code path immediately when a game starts. e.g. dolphin is portrait when launching the game but settings force gameplay to landscape. We want to avoid this and continue to the netplay launch code below.

If the user backgrounds dolphin during netplay and then resumes after the process has died it will actually resume from the save state in single player mode, not sure if thats good or bad but fine for now.

Netplay doesnt handle rotation very well, seems to go more and more out of sync the more rotations.
2026-05-07 10:39:50 +02:00
Tom Pratt
05cfd16665 Release boot session data during Netplay cleanup
Boot session data is already handled when the game is booted so this is just fallback in case the game launch fails in some weird way.

Add missing @Keep annotations to functions called from C++
2026-05-07 10:39:50 +02:00
Tom Pratt
ee1271e5b2 Implement OnConnectionLost, show a dialog on the main netplay screen forcing the user to exit 2026-05-07 10:39:49 +02:00
Tom Pratt
b21cbc63f7 Implement StopGame callback and use it to finish the emulation activity 2026-05-07 10:39:49 +02:00
Tom Pratt
fd21ca13ff Settings refactor
Remove the big saveSetup function and set individual settings immediately after being changed in the UI. Group them all under Netplay.Settings
2026-05-07 10:39:49 +02:00
Tom Pratt
a87d315283 Max buffer 2026-05-07 10:39:49 +02:00
Tom Pratt
64fd5de16b Put players table in an OutlinedBox, makes the UI look more consistent. 2026-05-07 10:39:49 +02:00
Tom Pratt
a5bd27d731 Implement more NetPlayUICallbacks
Includes chat, game changes, pad buffer changes and host input authority. Merges them all into the chat window.
2026-05-07 10:39:48 +02:00
Tom Pratt
d82a9242a1 Netplay chat UI 2026-05-07 10:39:48 +02:00
Tom Pratt
97279f24dd Implement player list 2026-05-07 10:39:48 +02:00
Tom Pratt
bfa68bf935 Reorder netplay class
Put all the boring settings at the bottom to reduce scrolling!
2026-05-07 10:39:48 +02:00
Tom Pratt
099243f2c6 Add mostly empty Netplay screen, equivalent of NetPlayDialog in QT.
All it can do at this point is quit the current netplay session when backing out of this screen.
2026-05-07 10:39:48 +02:00
Tom Pratt
43d592c912 Move NetplaySetupScreen to its own file 2026-05-07 10:39:48 +02:00
Tom Pratt
b2e900ce40 Show client connection errors and handle connection result
If result is a success sent event to launch the next netplay screen. if it fails, clear up the netplay client
2026-05-07 10:39:47 +02:00
Tom Pratt
12343ebf86 Store netplay BootSessionData and use it to run the netplay game 2026-05-07 10:39:47 +02:00
Tom Pratt
01c8c4aee2 Pass game list to NetPlayUICallbacks and implement OnMsgChangeGame, OnMsgStartGame, FindGameFile 2026-05-07 10:39:47 +02:00
Tom Pratt
2839a5d11b Add NetPlayClient join and stub NetPlayUICallbacks 2026-05-07 10:39:47 +02:00
Tom Pratt
00941050c7 Add Netplay settings JNI layer and wire up NetplaySetupViewModel 2026-05-07 10:39:47 +02:00
Tom Pratt
23f5f02c11 Netplay setup UI
Only for connecting, no hosting yet.
2026-05-07 10:39:46 +02:00
Tom Pratt
ec8253ebff Add compose dependencies for Android and empty NetplaySetupActivity
Derive compose colour theming from the existing XML styles already set at the activity level.
2026-05-07 10:39:46 +02:00
Dentomologist
8afc696a1e
Merge pull request #14644 from tom-pratt/fix_do_all_players_have_game
DoAllPlayersHaveSameGame returns correct result instead of always true
2026-05-06 15:07:33 -07:00
Dentomologist
cf20cdabd4
Merge pull request #14632 from vladfi1/upstream-pipe-inputs-fix
Unconditionally lock in ControllerInterface::UpdateInput
2026-05-06 13:40:16 -07:00
Vlad Firoiu
20718de37e Unconditionally lock in ControllerInterface::UpdateInput. 2026-05-06 15:57:03 -04:00
Dentomologist
dfda04c4e4 MsgHandler: Use log level matching MsgType for alerts
When calling `ShowMessageAlert` with a given `MsgType`, log the alert
with a `LogLevel` matching the `MsgType` instead of always using
`LogLevel::LERROR`.
2026-05-06 12:44:43 -07:00
Tom Pratt
bedb283d93 DoAllPlayersHaveSameGame returns correct result instead of always true
SendGameStatus() was writing SyncIdentifierComparison as a u32 but the server reads it as a u8 enum, so the server always gets 0 (SameGame). This bug was introduced in commit 66276ac.
2026-05-06 14:06:01 +02:00
Dentomologist
6d5399246e
Merge pull request #14532 from Dentomologist/autoupdatechecker_fix_edge_cases
AutoUpdateChecker: Fix Edge Cases
2026-05-05 16:23:16 -07:00
Jordan Woyak
b0eb643c61
Merge pull request #14642 from SuperSamus/cpp-move-fixup-nocubeb
Fixup #14565 (compilation with `-DENABLE_CUBEB=OFF`)
2026-05-05 11:45:55 -05:00
Martino Fontana
3c06541718 Fixup #14565 (compilation with -DENABLE_CUBEB=OFF) 2026-05-05 13:50:05 +02:00
Jordan Woyak
e22551eae1
Merge pull request #14641 from Dentomologist/replace_maybe_unused_annotations_with_commented_names
Replace some [[maybe_unused]] annotations with commented names
2026-05-03 20:20:07 -05:00