* 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>
* 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>
* renderer_vulkan: remove out of context SDL_Quit call (fixes#1220)
SDL_Quit must not be called unless the application must exit or SDL is no longer needed
* comment: simplify, forgot init had ref-count
* 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>
* renderer_vulkan: Disable FIFO when refresh rate is lower than ~60hz
Also disables FIFO when Apple low power mode is enabled, as it can limit the application framerate to 30fps
* renderer_vulkan.cpp: Put `IsLowRefreshRate` into anon namespace + make static
* Fix aac_decoder memory leak
Only call NeAACDecInit on the first AAC frame and create new NeAACDecoder on DecoderCommand::Init request
* update license headers
* fix oversight
* reorganized code
-put open new FAAD2 AAC decoder code into a separate function
-removed LOG_INFO for open/close FAAD2 AAC decoder
-added LOG_ERROR when no decoder is created to handle decode request, either decoder creation failed or DecoderCommand::Init command not received
* Update aac_decoder.cpp
fix clang coding style check
* fix load savestate
Loading a savestate creates a situation where decode requests aren't preceded by an init request, so we open a new decoder by default in the constructor. A new AACDecoder instance is always constructed on load savestate.