Commit graph

2225 commits

Author SHA1 Message Date
lynxnb
63d17dd9fb Update to Gradle 8.2 + AGP 8.2.1
- Migrated to buildConfig gradle attribute
- Migrated to non-transitive R classes
2024-01-05 02:19:03 +01:00
lynxnb
fbb139a179 Disable Gradle configuration cache
Configuration cache causes issues with our version generation code in the gradle build script. We compute the version name and version code based on git information, and configuration cache saves those values by default, needing a manual reload of the gradle project to refresh them.
There's currently no way to avoid caching the version name and version code in the configuration cache, so we need to turn it off altogether.
2024-01-05 02:19:03 +01:00
lynxnb
350f36d52f Remove the LLVM submodule 2024-01-04 17:52:52 +01:00
lynxnb
45aa3945a3 Update NDK to 26.1.10909125
Starting from version 26+, the NDK is based on LLVM 17 and comes with Clang 17 featuring full language and library C++20 support.
This means we can get rid of the massive LLVM submodule in the repo, which will be done in a following commit.
2024-01-04 17:52:52 +01:00
lynxnb
c3f14ba2a7 Remove hasFragileUserData from the app manifest
It was effectively unused, and only caused issues for users, even after proper implementation that enabled it on signed builds only.
2024-01-04 16:40:57 +01:00
lynxnb
da33f10a2a Show the current version in main activity 2024-01-04 16:40:57 +01:00
lynxnb
3fa832c5c9 Introduce proper versioning based on git tags
Version code uses the number of commits until the last tag.
Version name uses the tag name if HEAD is a tag, otherwise it uses the last tag name followed by the branch name and the short commit hash.
2024-01-04 16:40:57 +01:00
lynxnb
cf1f01fa17 Remove outdated Skyline credits 2024-01-04 16:40:57 +01:00
lynxnb
421c2f4653 Change package name to org.stratoemu.strato 2024-01-04 16:40:57 +01:00
lynxnb
396bc64fb7 Delete outdated translations 2024-01-04 16:40:57 +01:00
lynxnb
7f92a435f7 Update IDE scopes 2024-01-04 16:40:57 +01:00
lynxnb
cbc9c8ba04 ide: Update run configurations + exclude new files 2024-01-04 16:40:57 +01:00
lynxnb
74173a3967 Rework signal handling to remove per-thread handlers
Since the latest Android updates, which most users received in the form of August 2023 security patches, the Android runtime seems to rely on handling SIGSEGV via sigchain while performing JNI calls. We were hooking libc directly to inject our own signal handlers, so that they could run and restore the host TLS since the signal might have been generated in guest code. However, due to how we dispatched signals, the ART handlers were never called and the app crashed whenever a JNI call was made after installing our handlers.

This commit reworks signal handling to remove per-thread handlers. We now make a distinction between guest signals and host signals, and two new functions to set signal handlers have been introduced: `SetGuestSignalHandler` and `SetHostSignalHandler`. This greatly simplifies our signal handling code and allows us to get rid of some thread-local state.

Because of the above distinction, we install a "guest-safe" signal handler only when a guest signal is set. The guest-safe signal handler calls guest handlers only for guest signals, or falls back to the host handler if that's not the case.
Once a guest handler exists for a particular signal, we query libc sigaction as well as the sigchain-hooked sigaction and compare the results, and in case they differ we call sigchain's sigaction so that the host handler is correctly chained, ensuring no host handler can accidentally override the sigchain handler.
2023-11-30 22:45:50 +01:00
lynxnb
644c8f3cd4 Construct queue consumer threads after queues
CommandScheduler and PresentationEngine both constructed the consumer threads before their CircularQueues, this resulted in a data race that would lead to a segfault if the threads were scheduled for execution quickly enough, as they would read uninitialized memory.
2023-11-30 22:45:50 +01:00
PabloG02
b0207ab645 Address feedback 2023-09-21 11:07:48 +02:00
PabloG02
35b90c96a5 Stub ActivateConsoleSixAxisSensor and InitializeSevenSixAxisSensor 2023-09-21 11:07:48 +02:00
PabloG02
4f6d5b2884 Stub SetShimLibraryVersion 2023-09-21 11:07:48 +02:00
PabloG02
395e08d002 Stub GetIndirectLayerConsumerHandle 2023-09-21 11:07:48 +02:00
PabloG02
c3eef5077f Stub SetAutoSleepDisabled and IsAutoSleepDisabled 2023-09-21 11:07:48 +02:00
PabloG02
937eacef4a Stub SetLcdBacklighOffEnabled 2023-09-21 11:07:48 +02:00
PabloG02
a523af2129 Stub some services related to StereoVision
Based mostly in Ryujinx
2023-09-21 11:07:48 +02:00
PabloG02
13f88f7584 Stub ResetSevenSixAxisSensorTimestamp 2023-09-21 11:07:48 +02:00
PabloG02
d32aa86193 Stub some services in ILblController 2023-09-21 11:07:48 +02:00
PabloG02
ffb93d21e1 Stub SetVrModeEnabled, BeginVrModeEx and EndVrModeEx 2023-09-21 11:07:48 +02:00
PabloG02
c43912c1f8 Stub GetAlbumFileList0AafeAruidDeprecated 2023-09-21 11:07:48 +02:00
PabloG02
e05de1acb4 Stub IsVibrationDeviceMounted 2023-09-21 11:07:48 +02:00
PabloG02
80911207dd Stub IsIlluminanceAvailable and GetCurrentIlluminanceEx 2023-09-21 11:07:48 +02:00
PabloG02
f0430e4635 Stub GetAlbumFileList3AaeAruid 2023-09-21 11:07:48 +02:00
PabloG02
d241e84688 Stub CheckFirmwareVersion 2023-09-21 11:07:48 +02:00
PabloG02
1bfdcaa3a6 Stub ReportUserIsActive 2023-09-21 11:07:48 +02:00
PabloG02
3ca24b9f5d Stub GetTemperatureMilliC 2023-09-21 11:07:48 +02:00
PabloG02
9465bfeb52 Stub StopImageProcessorAsync 2023-09-21 11:07:48 +02:00
PabloG02
eb2d04ea8c Stub GetSaveDataSizeMax 2023-09-21 11:07:48 +02:00
PabloG02
ce0aad3fd8 Fix firmware version not being shown after importing 2023-09-07 16:54:10 +02:00
PabloG02
0789ba1ac8 Address feedback 2023-09-06 17:31:49 +02:00
PabloG02
2eaf5d2ea2 Change to CircularProgressIndicator 2023-09-06 17:31:49 +02:00
PabloG02
471e61eb4f Change task to not return anything 2023-09-06 17:31:49 +02:00
PabloG02
54d4586e9f Extract fonts from firmware 2023-09-06 17:31:49 +02:00
PabloG02
32c1519bf1 Fix file creation in OsFileSystem 2023-09-06 17:31:49 +02:00
PabloG02
6ee94da80a Check if firmware directory has been modified manually 2023-09-06 17:31:49 +02:00
PabloG02
e64ef756bc Disable firmware import if keys have not been imported 2023-09-06 17:31:49 +02:00
PabloG02
b0cee4a212 Show installed firmware version 2023-09-06 17:31:49 +02:00
PabloG02
7dfc145248 Add UI to import firmware 2023-09-06 17:31:49 +02:00
PabloG02
289979e0a2 Add ability to export all save files
* Move save data management logic to its own class
* Remove `specificWorkUI` from companion object
* Do callback properly
* Use string resources
* Remove `lastZipCreated`
* Remove `ActivityResultLauncher`s from SaveManagementUtils
2023-09-06 17:06:15 +02:00
lynxnb
555a9d0774 utils: Remove Format proxy utility for implicit pointer formatting
The formatting API used across the code base now is 100% compliant with that of libfmt.
2023-09-06 16:51:01 +02:00
lynxnb
288f016f84 logger: Migrate remaining calls to the new logger and remove old logger 2023-09-06 16:51:01 +02:00
lynxnb
772970d158 logger: Enable the new async logger 2023-09-06 16:51:01 +02:00
lynxnb
e0d4dde4db settings: Add logLevel as a proper setting
The log level is now a proper setting, which also allows it to be set per-game.
2023-09-06 16:51:01 +02:00
lynxnb
c18e13facf logger: Refactor all Verbose log calls to the new macros 2023-09-06 16:51:01 +02:00
lynxnb
d151daffa9 logger: Refactor all Debug log calls to the new macros 2023-09-06 16:51:01 +02:00