Commit graph

339 commits

Author SHA1 Message Date
OpenSauce04
4574b91561 Move VSync setting key from use_vsync_new to use_vsync
This resets the VSync setting for all existing user configurations. Note in changelog.
2025-11-29 14:38:32 +00:00
David Griswold
04b6c69083 Default VSync to false on Android
Co-authored-by: OpenSauce04 <opensauce04@gmail.com>
2025-11-29 14:37:30 +00:00
David Griswold
f309d4881a android: Add Display Listener methods for smoother secondary display updates 2025-10-03 17:04:57 +00:00
huesos_96
3716f6b9b6
Android: Dual screen fixes for Handhelds that have 2 screens like Ayaneo Pocket DS (#1341)
* Prevent SecondaryDisplay from stealing focus

The SecondaryDisplay Activity was stealing focus from the main
Activity when it was launched.

Set the `FLAG_NOT_FOCUSABLE` and `FLAG_NOT_TOUCH_MODAL` window flags
to prevent the SecondaryDisplay from gaining focus.

* Implement touch controls for secondary display

This commit introduces touch input handling for the secondary display.

The following changes were made:
- Added `onSecondaryTouchEvent` and `onSecondaryTouchMoved` to `NativeLibrary.kt` and `native.cpp` to process touch events on the secondary display.
- Implemented `onTouchListener` in `SecondaryDisplay.kt` to capture touch events and forward them to the native layer.
- Handles `ACTION_DOWN`, `ACTION_POINTER_DOWN`, `ACTION_MOVE`, `ACTION_UP`, `ACTION_POINTER_UP`, and `ACTION_CANCEL` motion events.
- Tracks the active pointer to ensure correct touch event handling.

* Refactor display logic for multi-display support

This commit introduces a `DisplayHelper` class to centralize display-related logic, particularly for handling scenarios where the application might be launched on an external display.

Key changes:
- Added `DisplayHelper.kt` to manage internal and external display identification based on launch conditions.
- `MainActivity` and `EmulationActivity` now use `DisplayHelper.checkLaunchDisplay()` to determine the initial display.
- `SecondaryDisplay` now uses `DisplayHelper.getExternalDisplay()` to correctly identify the target display for the secondary presentation.
- `InputOverlay` now queries `DisplayHelper.isBottomOnPrimary()` to determine if touch input should be processed for the primary display based on the current screen layout.
- `SecondaryDisplay` now queries `DisplayHelper.isBottomOnSecondary()` to conditionally pass touch events to the native layer based on which screen (primary or secondary) is currently displaying the 3DS bottom screen.

These changes ensure that the application behaves correctly when launched on either the internal or an external display, and that touch input is routed appropriately based on the user's chosen screen layout for the dual screens.

* Removed primary-screen checks so the input overlay always forwards touch events, ensuring all touches reach the native handler even when multiple displays are active

* Remove DisplayHelper class and adjust external display logic

* Formatting adjustments

---------

Co-authored-by: DavidRGriswold <novachild@gmail.com>
Co-authored-by: OpenSauce04 <opensauce04@gmail.com>
2025-10-03 14:45:49 +01:00
OpenSauce04
34d46528eb Bump minimum Android version to Android 10 2025-09-11 01:08:32 +01:00
OpenSauce04
72c924a456 android: Rename performance overlay setting keys, strings and enums for clarity 2025-09-10 22:49:46 +01:00
OpenSauce04
f27490aeab android: Mark performance overlay toggle in settings as non-runtime-editable 2025-09-10 22:49:46 +01:00
OpenSauce04
ed451a72d9 android: Reimplemented performance overlay setting as a regular BooleanSetting 2025-09-10 22:49:46 +01:00
OpenSauce04
5c89977605 android: Removed hardcoded setting keys and default values for perf overlay 2025-09-10 22:49:46 +01:00
Briar
64f5277789 renderer_vulkan: Add second screen opacity support
& Update bottom screen opacity label in UI
2025-09-10 18:43:44 +01:00
marsia
5c5b1cdf45 android: Implement Hide All 3DS Images from Android setting
Co-Authored-By: Reg Tiangha <rtiangha@users.noreply.github.com>
Co-authored-by: OpenSauce04 <opensauce04@gmail.com>
2025-09-10 18:28:37 +01:00
marsia
750286ae97 android: Add second screen opacity option
Co-authored-by: Reg Tiangha <rtiangha@users.noreply.github.com>
Co-authored-by: OpenSauce04 <opensauce04@gmail.com>
2025-09-10 18:22:55 +01:00
Reg Tiangha
f35091eeb4 android: Implement Background Color settings UI
Co-authored-by: OpenSauce04 <opensauce04@gmail.com>
2025-09-10 18:22:38 +01:00
David Griswold
a2e6891f01 android: Re-fixed game termination bug (#1357)
* EmulationActivity and EmulationFragment clear only their own hooks

* EmulationLifecycleUtil: Rename `remove()` to `removeHook()`

* EmulationLifecycleUtil: Removed unused function `clear()`

* Corrected somewhat incorrect usage of the word "hook"

* Define `onShutdown` and `onPause` hook functions in constructors

* Formatting nitpicks

* Updated license header

* Re-added log messages for attempting to add duplicate hooks

---------

Co-authored-by: OpenSauce04 <opensauce04@gmail.com>
2025-09-05 21:36:01 +01:00
OpenSauce04
e0078b2407 Revert "Fix android termination bug (#1354)"
This reverts commit 70f9379eef.
2025-09-05 21:33:32 +01:00
OpenSauce04
1830290e55 SecondaryDisplay.kt: Remove redundant SurfaceTexture, preventing log spam 2025-09-05 16:44:48 +00:00
David Griswold
70f9379eef
Fix android termination bug (#1354)
* move hook additions to onCreateView

* Updated license header

* Formatting nitpick

* Added prefix to log messages

---------

Co-authored-by: OpenSauce04 <opensauce04@gmail.com>
2025-09-04 22:35:10 +01:00
OpenSauce04
944cb7ab51 android: Bump Vulkan Validation Layers to SDK 1.4.313.0 2025-09-03 22:31:01 +01:00
DavidRGriswold
e5c3a0eef7 android: Prevent crash when editing a slider option with an out of bounds value
Co-authored-by: OpenSauce04 <opensauce04@gmail.com>
2025-09-03 13:16:55 +01:00
RedBlackAka
6483b33ee1
Improve consistency of capitalization and colon usage in UI (#1306)
* frontend: Improve consistency of capitalization and : usage in UI

* Additional adjustments

* Further adjustments

---------

Co-authored-by: OpenSauce04 <opensauce04@gmail.com>
2025-09-01 01:43:54 +01:00
OpenSauce04
20d577f9e3 Updated translations via Transifex 2025-08-20 13:58:33 +01:00
OpenSauce04
219b8dca2e Updated language translations via Transifex 2025-08-15 20:38:25 +01:00
OpenSauce04
d79078c2d8 Updated language translations via Transifex 2025-08-11 12:04:03 +01:00
OpenSauce04
2f6e8b5756 android: Reimplement multitouch code correctly 2025-08-11 11:50:30 +01:00
OpenSauce04
a964e63722 Revert "android: Gross disgusting awful workaround for #1267"
This reverts commit 106e994dbf.
2025-08-11 11:50:30 +01:00
OpenSauce04
68aab3e0e5 android: Fixed UI perf regression w/ OpenGL introduced by #617 2025-08-10 20:15:04 +01:00
OpenSauce04
c86830313e Updated language translations via Transifex 2025-08-08 23:19:15 +01:00
PabloMK7
4bf9161bcd android: Fix 3dsx listing 2025-08-08 22:46:17 +01:00
David Griswold
aca8b45664
android: Implement secondary display support (#617)
* Enable the SecondScreenPresentation class

* Update everything to enable second screen on android under GL and Vulkan. Still some issues!

* Some attempts to enable surface changes

* OpenGL is working on surface change, vulkan still no

* release surfaces (also fixed vulkan?)

* added and enabled layout setting

* resolve merge conflict

* rearrange switch cases to satisfy linux compiler

* openGL is working!

* several vk changes to try to fix crashes

* maybe vulkan is working?

* removing unnecessary code attempts

* Simplified secondscreen for better performance

* vk_platform.cpp: Fixed build failure caused by bad rebase

* vk_present_window.h: Removed stray newline

* Applied clang-format

* bug fix for odin 2

* Applied clang-format

* Updated license headers

* Moved SecondScreen class to org.citra.citra_emu.display

* Various formatting and readability improvements

* Added brackets where previously absent for readability

* Additional readability improvement

* RendererVulkan::NotifySurfaceChanged: Simplified condition checking

* change all references to "secondary screen" to "secondary display" to limit confusion with top screen / bottom screen

* rename main_window to main_present_window and second_window to secondary_present_window

* Reverted accidentally downgraded compatibility list submodule

* Removed unnecessary log message

* Applied clang-format

* Added a description to the Secondary Display Screen Layout setting

* Added `_ptr` suffix to `secondary_present_window`

This distinguishes it as a pointer, as `main_present_window` isn't a pointer, so there could be confusion on whether to use `.` or `->`

---------

Co-authored-by: OpenSauce04 <opensauce04@gmail.com>
2025-08-08 21:41:52 +01:00
OpenSauce04
2697526f34 android: Fixed new compressed format extensions not being handled correctly 2025-08-08 19:16:14 +01:00
OpenSauce04
106e994dbf android: Gross disgusting awful workaround for #1267
Revert when no longer needed
2025-08-02 18:15:00 +00:00
OpenSauce04
2ce31e5507 Updated language translations via Transifex 2025-08-01 21:23:54 +01:00
RedBlackAka
3b0542f188 Capitalize first letter of builtin shaders 2025-07-31 16:12:49 +01:00
OpenSauce04
ce2bf584c2 android: Upgrade to AGP 8.11.1, Gradle 8.13 2025-07-30 01:13:20 +00:00
RedBlackAka
a5aecf91bb
Replace/remove leftover links for citra website and API #1236 (#1250)
* Replace/remove leftover links for citra website and web services #1236

* Fix license headers

* Restore web service settings
2025-07-28 19:33:53 +02:00
PabloMK7
25d7db7bbe
Z3DS: Mark compressed files in UI and other minor fixes (#1249) 2025-07-28 10:38:23 +02:00
toksn
c95b942ec2
android: Added button sliding to button overlay (#884)
* Added simple button sliding mode

* Added "keep first" button sliding mode

* directly pressed buttons stay active even when sliding off
* further buttons can be triggered via the simple sliding method

* Added button sliding configuration to overlay settings menu

* Updated licences

* Added button sliding activation to dpads and joysticks

* separated handling of buttons, dpads and joysticks needed since they can be activated by moving now

* Adjusted strings

* Changed ButtonSlidingMode values to mirror prior string name changes

* Reverted incorrectly applied language translation

* Nitpicky formatting adjustments

* Shortened string IDs

* hasActiveJoy --> hasActiveJoystick

* showButtonSlidingModeMenu --> showButtonSlidingMenu

* Updated outdated comment relating to `isMotionFirstButton`

Co-authored-by: toksn <toksn@yahoo.de>

---------

Co-authored-by: OpenSauce04 <opensauce04@gmail.com>
2025-07-28 02:15:26 +01:00
PabloMK7
db8aaacb35 Z3DS: Fix minor issues and add Android cia compress setting 2025-07-27 17:13:32 +02:00
OpenSauce
7c278f9701
android: Implement play time tracking (#813)
* android: Implement play time tacking

Co-Authored-By: Reg Tiangha <rtiangha@users.noreply.github.com>

* Moved playtime manager from `citra_qt` to `common`

* Reimplemented Android play time to use existing logic from desktop

* Updated license headers

* When getting current game ID fails, silently error rather than crashing

* playTimeManagerStart: Check that `play_time_manager` is initialized before using it

---------

Co-authored-by: Kleidis <167202775+kleidis@users.noreply.github.com>
Co-authored-by: Reg Tiangha <rtiangha@users.noreply.github.com>
2025-07-12 13:01:46 +01:00
PabloMK7
0deb0f50b8
Add "SWP" frame time information (#1173) 2025-06-20 19:26:12 +02:00
kleidis
2b51691d57
android: Fix hotkey presses opening nav drawer even after being bound (#1122)
* android: Fix hotkey presses opening nav drawer even after being bound

* Removed unnecessary return

---------

Co-authored-by: Kleidis <167202775+kleidis@users.noreply.github.com>
Co-authored-by: OpenSauce04 <opensauce04@gmail.com>
2025-06-19 23:48:18 +01:00
marsia
11687fe32b android: Add landscape layout for setup pages 2025-06-19 21:14:26 +00:00
PabloMK7
f26b9b174a
cmake: Bump min version to 3.25 globally and to 3.30.3 for android (#1151)
* cmake: Bump min version to 3.25 and update android to 3.30.3

* app/build.gradle.kts: Set minimum CMake version rather than exact version

---------

Co-authored-by: OpenSauce <opensauce04@gmail.com>
2025-06-18 21:44:42 +02:00
OpenSauce04
eec1466b7b Updated language translations via Transifex 2025-06-16 16:08:56 +01:00
OpenSauce04
5910edb9fa android: Fixed accurate multiplication setting using async shader value 2025-06-13 11:16:42 +01:00
OpenSauce04
7eff38ed10 Updated language translations via Transifex 2025-06-08 18:16:44 +01:00
OpenSauce04
868e946dee app/build.gradle.kts: Fixed incorrect usage of layout.buildDirectory 2025-06-06 12:37:54 +01:00
PabloMK7
fe7fe3ed24
android: Fix crash when user directory permissions are lost (#1110)
* android: Fix crash when user directory permissions are lost

---------

Co-authored-by: OpenSauce04 <opensauce04@gmail.com>
2025-06-03 23:06:46 +02:00
OpenSauce04
2acbcd333c app/build.gradle.kts: Removed now-obsolete isMinifyEnabled value from relWithDebInfo build variant 2025-06-03 21:48:33 +01:00
OpenSauce04
7853bacddd app/build.gradle.kts: Replaced deprecated buildDir value with layout.buildDirectory 2025-06-03 21:48:33 +01:00