Commit Graph

39343 Commits

Author SHA1 Message Date
JosJuice 8e33458f48 ControllerInterface/Android: Implement rumble 2023-03-03 22:28:23 +01:00
JosJuice 065481d989 ControllerInterface/Android: Automatically suspend sensors
This is a battery-saving measure. Whether a sensor should be suspended
is determined in the same way as whether key events and motion events
should be handled by the OS rather than consumed by Dolphin.
2023-03-03 22:28:23 +01:00
JosJuice 36acb17700 ControllerInterface/Android: Implement sensor input for InputDevices
This functionality was added in Android 12 to let apps get motion data
for gamepads.
2023-03-03 22:28:23 +01:00
JosJuice 5e51b56d72 ControllerInterface/Android: Implement sensor input 2023-03-03 22:28:23 +01:00
JosJuice 104ea09892 ControllerInterface/Android: Implement hotplug 2023-03-03 22:28:23 +01:00
JosJuice d6af294a23 ControllerInterface/Android: Return whether input was handled
When Android presents an input event to an app, it wants the app to
return true or false depending on whether the app handled the event or
not. If the event wasn't handled by the app, it will be passed on to
the system, which may decide to take an action depending on what kind
of input event it is. For instance, if a B button press is passed on to
the system, it will be turned into a Back press. But if an R1 press is
passed on to the system, nothing in particular happens.

It's important that we get this return value right in Dolphin. For
instance, the user generally wouldn't want a B button press to open
the EmulationActivity menu, so B button presses usually shouldn't be
passed on to the system - but volume button presses usually should be
passed on to the system, since it would be hard to adjust the volume
otherwise. What ButtonManager did was to pass on input events that are
for a button which the user has not mapped, which I think makes sense.
But exactly how to implement that is more complicated in the new input
backend than in ButtonManager, because now we have a separation between
the input backend and the code that keeps track of the user's mappings.

What I'm going with in this commit is to treat an input as mapped if
it has been polled recently. In part I chose this because it seemed
like a simple way of implementing it that wouldn't cause too many
layering violations, but it also has two useful side effects:

1. If a controller is not being polled (e.g. GameCube controllers in
   Wii games that don't use them), its mappings will not be considered.
2. Once sensor input is implemented in the Android input backend,
   we will be able to use this "polled recently" tracking to power down
   the sensors at times when the game is using a Wii Remote reporting
   mode that doesn't include motion data. (Assuming that the sensor
   inputs only are mapped to Wii Remote motion controls, that is.)
2023-03-03 22:28:23 +01:00
JosJuice ca508e4503 ControllerInterface/Android: Handle input events
Android doesn't let us poll inputs whenever we want. Instead, we
listen to input events (activities will have to forward them to the
input backend), and store the received values in atomic variables
in the Input classes. This is similar in concept to how ButtonManager
worked, but without its homegrown second input mapping system.
2023-03-03 22:28:23 +01:00
JosJuice 792cb62195 ControllerInterface/Android: Implement device population 2023-03-03 22:28:23 +01:00
JosJuice 68ebb5c33e Android: Remove old rumble implementation 2023-03-03 22:28:23 +01:00
JosJuice 9e7a2ee0fb Android: Remove old motion input implementation 2023-03-03 22:28:23 +01:00
JosJuice 0150f521f7 ControllerInterface/Android: Rip out ButtonManager
ButtonManager is very different from how a normal input backend works,
and is making it hard for us to improve controller support on Android.
The following commits will add a new input backend in its place.
2023-03-03 22:28:23 +01:00
JosJuice 95ce41ac56
Merge pull request #11399 from JosJuice/jit-one-stack
Jit: Don't use a second stack
2023-03-03 22:27:16 +01:00
Pokechu22 a93b5a4a35
Merge pull request #10908 from Minty-Meeo/unlikely-assert
[[unlikely]] ASSERT and minor ASSERT usage changes
2023-03-02 21:26:55 -08:00
Minty-Meeo bf079d6d3a [[unlikely]] ASSERT
and other ASSERT usage changes
2023-03-02 19:54:15 -06:00
Mai 6361586a04
Merge pull request #11582 from Pokechu22/software-crash-on-startup
Software: Fix regressions from "Kill Renderer"
2023-03-02 15:13:00 -05:00
Mai ab2f8d3475
Merge pull request #11607 from AdmiralCurtiss/sd-progress
Qt/WiiPane: Add progress window for SD card conversion.
2023-03-02 15:08:18 -05:00
Mai 6fcec80eb0
Merge pull request #11605 from JosJuice/android-mappings-button
Android: Add a button for accessing controller mappings
2023-03-02 15:06:47 -05:00
Mai cbbc518bc4
Merge pull request #11612 from iwubcode/custom_texture_data
VideoCommon: move hirestexture data to reusable class called CustomTextureData
2023-03-02 15:05:46 -05:00
Mai 78e8669bac
Merge pull request #11614 from t895/kotlin-cheats
Android: Convert Cheats Activity to Kotlin
2023-03-02 15:04:19 -05:00
Mai 1b7969bc62
Merge pull request #11615 from t895/kotlin-riivolution
Android: Convert Riivolution Boot Activity to Kotlin
2023-03-02 15:03:43 -05:00
Mai b9fd7e7bd4
Merge pull request #11616 from t895/kotlin-skylanders
Android: Convert Skylanders code to Kotlin
2023-03-02 15:03:18 -05:00
Mai 5d00bc088a
Merge pull request #11619 from t895/kotlin-convert
Android: Convert Convert Activity to Kotlin
2023-03-02 15:02:45 -05:00
Pokechu22 9cdc0aca9b Software: Fix "Auto-Adjust Window Size"
This also needs to be handled on the software renderer path.
2023-03-02 11:08:49 -08:00
Pokechu22 78428dd8db Software: Fix crash on startup when using "Compile Shaders Before Starting"
When that setting is enabled, m_xfb_entry is initially not present (during the phase where a shader compilation progress bar would be shown). The main path checks for m_xfb_entry, but the software renderer fallback path didn't.

Fixes another aspect of https://bugs.dolphin-emu.org/issues/13172.
2023-03-02 11:08:49 -08:00
Pokechu22 4a2d3c83c7 Software: Implement GetSurfaceInfo()
Before, it used a fallback where it returned a default object, where the width and height were set to 0. Presenter::Initialize() used GetSurfaceInfo to set the backbuffer size, then used that size when initializing the on-screen UI (even for the software renderer, where the on-screen UI isn't currently present), which meant that ImGui got a window size of 0 and thus resulted in a failed assertion.

Although BindBackbuffer checks for size changes, it doesn't help because ImGui has already been initialized, and the size hasn't actually changed since initialization occured.

Fixes one aspect of https://bugs.dolphin-emu.org/issues/13172.
2023-03-02 11:08:49 -08:00
JosJuice 96deb2d897 Android: Hide controller mappings button when controller type is None
Also removed the make_sure_continuous_scan_enabled message.
It doesn't make sense with the new UX.
2023-03-02 18:25:10 +01:00
Charles Lombardo 2067c8eed1 Android: Convert ConvertActivity to Kotlin 2023-03-02 01:54:46 -05:00
Charles Lombardo fb432dd58a Android: Convert ConvertFragment to Kotlin 2023-03-02 01:54:46 -05:00
SMarioMan 078730c873
Avoid altering TCP sockets
Co-authored-by: sepalani <sepalani@hotmail.fr>
2023-03-01 20:52:43 -05:00
Charles Lombardo 7efb672be6 Android: Convert SkylanderSlotAdapter to Kotlin 2023-03-01 17:32:19 -05:00
Charles Lombardo 36f1315513 Android: Convert SkylanderSlot to Kotlin 2023-03-01 17:32:07 -05:00
Charles Lombardo bbc1951afb Android: Convert SkylanderConfig to Kotlin 2023-03-01 17:32:07 -05:00
Charles Lombardo 71e82d76b5 Android: Convert SkylanderPair to Kotlin 2023-03-01 17:13:42 -05:00
Charles Lombardo 85b30f198b Android: Convert Skylander to Kotlin 2023-03-01 17:13:01 -05:00
Charles Lombardo 4045e213ba Android: Convert RiivolutionAdapter to Kotlin 2023-03-01 14:39:18 -05:00
Charles Lombardo df21663d4c Android: Convert RiivolutionBootActivity to Kotlin 2023-03-01 14:38:59 -05:00
Charles Lombardo 79d0ff55d2 Android: Convert RiivolutionItem to Kotlin 2023-03-01 14:38:37 -05:00
Charles Lombardo e37503675a Android: Convert RiivolutionViewHolder to Kotlin 2023-03-01 14:38:19 -05:00
Charles Lombardo ec7b811de3 Android: Convert RiivolutionPatches to Kotlin 2023-03-01 14:38:02 -05:00
Charles Lombardo 3935449ca0 Android: Convert TwoPaneOnBackPressedCallback to Kotlin 2023-03-01 13:47:28 -05:00
Charles Lombardo 6bc4ae7438 Android: Convert SettingDisabledWarningFragment to Kotlin 2023-03-01 13:41:55 -05:00
Charles Lombardo 53d404c5a0 Android: Convert HeaderViewHolder to Kotlin 2023-03-01 13:41:02 -05:00
Charles Lombardo 58b7b80902 Android: Convert GraphicsModsDisabledWarningFragment to Kotlin 2023-03-01 13:40:48 -05:00
Charles Lombardo a8da5902bb Android: Convert CheatViewHolder to Kotlin 2023-03-01 13:40:28 -05:00
Charles Lombardo 25fb3218d9 Android: Convert CheatsDisabledWarningFragment to Kotlin 2023-03-01 13:40:08 -05:00
Charles Lombardo fcfde12c52 Android: Convert CheatsAdapter to Kotlin 2023-03-01 13:39:49 -05:00
Charles Lombardo 23d9def613 Android: Convert CheatsActivity to Kotlin 2023-03-01 13:39:23 -05:00
Charles Lombardo 3bcc4a0a59 Android: Convert CheatListFragment to Kotlin 2023-03-01 13:39:07 -05:00
Charles Lombardo d8c1381155 Android: Convert CheatItemViewHolder to Kotlin 2023-03-01 13:38:27 -05:00
Charles Lombardo cacbac9152 Android: Convert CheatItem to Kotlin 2023-03-01 13:37:57 -05:00