Charles Lombardo
22284fc504
android: Prevent crash when trying to change pages in setup fragment
Sometimes when we want to change the current setup page, the current view isn't available and we try to alter the current view. This adds a guard to prevent that issue.
3 years ago
Charles Lombardo
d70f18b87b
android: Prevent setup fragment crash in background
Sometimes during onSaveInstanceState, the SetupFragment would crash the app in the background if we tried to store the state of a view.
3 years ago
Charles Lombardo
ec388622ff
android: Don't update views if binding is null in onConfigurationChanged
3 years ago
Charles Lombardo
6a425e95cb
android: Don't wait for post to update input overlay visibility
3 years ago
Charles Lombardo
1fdfedc43e
android: Close activity with toast if emulation has no game
3 years ago
Charles Lombardo
481f91cc34
android: Correctly reload settings file during reset
Previously the config file wasn't being recreated when resetting all settings. Now just call into native code to recreate the settings file and reload all defaults.
3 years ago
Charles Lombardo
a29e26200f
android: Remove ability to install xci files
3 years ago
Charles Lombardo
cf44be1de6
android: Adjust failure dialogs for user data and firmware installers
3 years ago
Charles Lombardo
95a31b8887
android: Fix cancel behavior on indeterminate progress dialog fragment
The dialog would previously dismiss immediately when it should stay alive until the task is cancelled completely.
3 years ago
Charles Lombardo
c8673a16bb
android: Refactor zip code into FileUtil
3 years ago
Charles Lombardo
3491ba4a06
android: Use a different string for the content install dialog
3 years ago
Charles Lombardo
5326ea63e5
android: Fix case bug for installing game content
The C++ side never made the filename lowercase when checking the extension. This just passes the pre-prepared extension to have it checked.
3 years ago
Charles Lombardo
e9e6296893
android: Consolidate installers to one fragment
This also allows save imports to happen without starting a game at first.
3 years ago
Charles Lombardo
3d03e8b806
android: Prevent click ripple from appearing on loading card
3 years ago
Charles Lombardo
ff9d8dd0b3
android: Remove bottom attribute from navigation view
Using the "bottom" attribute would break the navigation view and prevent things like rounded corners and lock modes from being applied properly.
3 years ago
Charles Lombardo
38b939b2e9
android: Prevent nav bar shade from laying out across screen
3 years ago
Charles Lombardo
0d7d3d938c
android: Use measured size of view for input overlay bounds
Even after updating the androidx window library, this did not fix the issue for all devices. This ensures that the measured size of the overlay will be used instead of a potentially larger one seen by androidx.
3 years ago
Charles Lombardo
5269a46399
android: Use smaller read buffer size for exporting user data
The File.readBytes() extension attempts to load an entire file into a byte array. This would cause crashes when loading huge files into memory.
3 years ago
Charles Lombardo
f3bc7354b1
android: Adjust valid user data check
3 years ago
Charles Lombardo
703bf7cfce
android: Update androidx window library to 1.2.0-beta03
Fixes an issue with the input overlay on certain devices where the controls would appear offscreen.
3 years ago
Charles Lombardo
c644c1a90a
Revert "android: Allow save imports always"
3 years ago
Charles Lombardo
a85325f56a
android: Remove unused strings related to the save manager
3 years ago
Charles Lombardo
bdb4fd208f
android: Allow importing saves even if no saves are found
Exporting still won't be allowed on an empty save directory.
3 years ago
Charles Lombardo
1e740df9b8
android: Add import/export buttons for user data
3 years ago
Charles Lombardo
7dd3d1b8ad
android: Ignore validation layers library in git
3 years ago
Charles Lombardo
fd09784231
android: Don't pause emulation when entering PiP
3 years ago
Charles Lombardo
3b612cff28
android: Fix showing input overlay in PiP
3 years ago
Charles Lombardo
32d65fc8de
android: Properly update emulation surface
Previously the emulation surface wasn't being updated during configuration changes and only during specific view events. This would break input and the screen dimensions after each orientation/aspect ratio change. Now a new surface is provided every time and the display dimensions are updated as needed.
3 years ago
Charles Lombardo
e3c546a1ed
android: Export PiP receiver on API 33 and later
Could cause crashes on API 33+ devices
3 years ago
Charles Lombardo
67eeb05692
android: Set up signing config for release builds
3 years ago
Charles Lombardo
c484a61515
android: Collect task state once view is created
Before the viewLifecycleOwner wasn't ready and would cause a crash
3 years ago
Charles Lombardo
832a2fcc69
android: Remove settings interface specifically for audio mute
3 years ago
Charles Lombardo
7e2bd395bc
android: Return the correct status code on emulation stop
3 years ago
Charles Lombardo
6481f4e937
android: Use resource as shortcut intermediary
Fixes issue where the shortcut icon would appear cropped on certain devices
3 years ago
Charles Lombardo
e8aaab2fc1
android: Don't reinitialize settings on emulation start
Config is already initialized on application start
3 years ago
Charles Lombardo
21b133de40
android: Fix emulation to settings navigation args
3 years ago
Charles Lombardo
b394389170
android: Delay collecting UI state in games fragment
3 years ago
Charles Lombardo
8baed5d95d
android: Refactor menu tags to enum
3 years ago
Charles Lombardo
4a3cbf0021
android: Use StateFlow instead of LiveData
3 years ago
lat9nq
85e1754728
android/config: Remove uncaught usage of stoul
3 years ago
FearlessTobi
87c0ba129c
am: Implement UserChannel parameters
Used by the Super Mairo 3D All-Stars collection.
3 years ago
Charles Lombardo
50d4e0f4f7
android: Fix game content installer
Before this would run on the main thread and freeze the device. Additionally this fixes the result dialog not appearing if a config change happens during the installation by getting the activity's fragment manager when needed.
3 years ago
Charles Lombardo
d833fc383d
android: Combine LongMessageDialogFragment with MessageDialogFragment
3 years ago
Charles Lombardo
b48dbb18f2
android: Support dynamic app shortcuts
3 years ago
Charles Lombardo
5445e974e0
android: Separate emulation states from emulation mutex
Emulation states are repeatedly checked by input and performance stats. During startup and shutdown, this could lead to a long halt on the UI thread because the call to IsRunning will be waiting on the emulation mutex to be unlocked. Using atomics should replace the existing functionality without causing problems.
3 years ago
Charles Lombardo
b0a96d5216
android: Game loading/shutting down indicators
3 years ago
Charles Lombardo
270f430f70
android: Create custom game icon loader
3 years ago
Charles Lombardo
4701eea646
android: Don't reload settings when stopping settings activity
3 years ago
Charles Lombardo
21ad5f5cc5
android: Add optional androidDefault property to settings
Certain settings have specific defaults for Android only. This lets us reflect them in the Kotlin side with very little code.
3 years ago
Charles Lombardo
45280a0342
android: Proper state restoration on settings dialogs
All dialog code (except for the Date/Time ones) has been extracted out into a generic settings dialog fragment that handles everything through a viewmodel. State for each dialog will now be retained and dialogs will stay shown through configuration changes.
I won't be changing the current state of the date and time dialog fragments until Google decides to make their classes non-final or if/when we migrate to Jetpack Compose.
3 years ago