Commit Graph
49 Commits
Author SHA1 Message Date
libretroadmin f1208a7a5a Make threading lock-free
The core and the headless tools no longer use mutexes, condition variables,
spinlocks, std::atomic, std::thread or volatile flags. Threads hand off through
libretro-common's retro_atomic and rthreads plus a few small pieces on top of
them in Common/Thread: Thread, MpscQueue, EventCounter, ParkingLot waits and
ReaderGate. Every wait blocks until it's woken; nothing polls on a timer.

State that only one thread touches just loses its lock. The PSP filesystem,
sceIo and the savedata dialog now belong to the emulation thread: async reads
and writes run when they're queued and complete later in emulated time, and
the IO and savedata threads are gone. The friend finder only talks to the
adhoc server and hands what it gets to the emulation thread. GPU init always
runs on the thread that starts the game.

The Vulkan render and compile queues, pipeline and render pass caches, delete
list and SPIR-V cache, the GL render queue, the software renderer's jit caches,
the file loader caches, the web debugger, UPnP, input, savestates, logging and
the GE debugger all hand off through queues and atomics. The IR jit's spinning
profiler thread goes.

A CPU thread with nothing to run now sleeps until work is queued instead of
spinning. Headless with --debugger waits for a client while stopped, and ends
the run once every client that connected has left. Web server shutdown keeps
servicing the CPU queue until the server has finished.
2026-10-09 04:56:16 +02:00
Henrik RydgårdandClaude Opus 5 50616825da Don't fire single-button mappings while a combo using them is held
If you map something to L2+R2, the mappings for L2 and R2 on their own
would fire as well. Now, while a combo mapping is fully held, the
shorter mappings that share an input with it are suppressed - longest
match wins. Releasing part of the combo brings the shorter mappings
back, for the inputs that are still held.

Adds a ControlMapper unit test covering the sequence.

Fixes #20621

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JvJR8oJNSCimCM9KXVLjfq
2026-09-03 12:37:31 -06:00
Henrik Rydgård 232ea1a8a1 Add a "hold" version of the axis swap toggle. Often more convenient.
This is useful for working around some annoying control schemes.

Fixes #21354
2026-03-05 23:05:35 +01:00
Henrik Rydgård f546dc3835 Add an Enable checkbox to tilt control, add mappable control
- Fixes #20830
2026-02-05 09:44:11 +01:00
Henrik Rydgård 471b9846e0 Delete unused function 2026-01-28 09:22:35 +01:00
Henrik Rydgård 7d4cfdaf91 KeyMap: Add NotifyPadDisconnected, minor cleanup 2026-01-25 15:36:15 +01:00
Henrik Rydgård a431560831 Remove pretense of supporting the Ouya (we don't anymore) 2025-02-24 15:57:38 -06:00
Henrik Rydgård 4b77cfd53b Add confirmation popup support on Exit App key
This adds a new mechanism so we can delay "vkey" events until the next
frame, making for safer code. Will move a bunch of the virtkeys to this
later.

Fixes #20020
2025-02-24 10:23:11 -06:00
Henrik Rydgård e19705d10b Add new mappable key to pause without the pause menu. Useful for reading text for example.
This re-uses debug break/resume, so you can also add it as a hotkey for
that.
2025-01-17 15:35:37 +01:00
Henrik Rydgård caf27a5c0d Add a mappable key for toggling the imgui interface. For now it's called Toggle debugger. 2024-11-04 23:33:03 +01:00
Henrik Rydgård a33839d220 Add Reset as a mappable control 2024-09-18 14:18:04 +02:00
Henrik Rydgård 679b8330ff Add bindings for toggling mouse control and touch screen controls. Not bound by default.
I think I'll find myself using both of these for testing, feel worthwhile.

Suggested in #18464
2023-12-29 17:40:57 +01:00
Henrik Rydgård 3895cfff74 Add "Analog trigger threshold" setting, for conversion of analog trigger inputs to digital button inputs. 2023-12-28 13:36:03 +01:00
Henrik Rydgård 16a31c2554 Avoid spamming the keymap lock during input processing 2023-12-21 11:54:30 +01:00
Henrik Rydgård e47791d4c4 Remove unnecessary vector 2023-12-21 11:16:10 +01:00
Henrik Rydgård a996afb9f6 Allow unpausing with keys bound to pause. 2023-12-20 16:55:39 +01:00
Herman Semenov af41281761 [Core/Dialog/ELF/FileSystems/HLE/HW/Util] Added const reference for function params 2023-12-14 14:22:24 +03:00
Henrik Rydgård 8dbcbe4ecf Align the APIs of the various vectors slightly 2023-12-07 17:30:16 +01:00
Henrik Rydgård 1da6da446b More std::string conversion 2023-11-13 23:43:57 +01:00
Henrik Rydgård 12de5bdead Add hotkey to exit the app from within gameplay
Requested by bluemonkeyinsuit07 and trivial to implement, so..
2023-10-04 14:10:14 +02:00
Henrik Rydgård feb0ea245e Add mappable key to toggle networking
Fixes #17352

Requested in #17343
2023-08-23 22:14:51 +02:00
Henrik Rydgård 2675d6ea43 Input event and device enums (#17514)
* Switch deviceID from int to enum InputDeviceID, globally

* Switch axisId to enum InputAxis

* Change int keycodes to InputKeyCode where it makes sense.

* SDL input buildfix

* SDL keycode buildfix

* Switch on enum warning fixes

* Qt keycode buildfix

* iOS keycode buildfix

* UWP keycode buildfix

* More iOS buildfix

* More iOS buildfix

* Update DinputDevice.cpp
2023-05-26 18:40:13 +02:00
Nicolas Adenis-Lamarre f32b0dc9c3 previous slot shortcut
Signed-off-by: Nicolas Adenis-Lamarre <nicolas.adenis.lamarre@gmail.com>
2023-05-25 11:32:49 +00:00
Henrik Rydgård 7594ae8785 Resurrect and refactor the AxisSwap feature. Fixes #17292 2023-04-20 10:53:11 +02:00
Henrik Rydgård c1b5aed9b7 Cleanup, confine g_controllerMap access to KeyMap.cpp 2023-04-01 20:28:42 +02:00
Henrik Rydgård d523005c2b Cleanup 2023-04-01 19:02:20 +02:00
Henrik Rydgård 88e73801fe Fix the binding UI to support multi-bind 2023-04-01 17:51:45 +02:00
Henrik Rydgård 8c9fee064e Display multi-mappings correctly in the mapping list 2023-04-01 15:00:22 +02:00
Henrik Rydgård 49a2c93b66 Make multi-mapping save-able, add test to verify backwards and forwards compat 2023-04-01 13:51:00 +02:00
Henrik Rydgård 0e1c42ce70 Plumb multimappings all the way through. 2023-04-01 13:50:57 +02:00
Henrik Rydgård 526b4f782d Fixes, add callback for analog virtual keys
Some fixes
2023-03-31 11:05:33 +02:00
Henrik Rydgård d00809ae53 Rename KeyDef to InputMapping and give it responsibility for Axis encoding 2023-03-29 11:59:31 +02:00
Henrik Rydgård 534896d2ab ControlMapper: Allow overriding PSP button event handling through a callback. 2023-03-28 00:23:18 +02:00
Lubos cd49dc6627 OpenXR - Camera adjustment using PSP keys 2022-11-07 17:13:08 +01:00
Lubos 363f102cc5 OpenXR - Add new virtual key for camera adjust 2022-10-29 20:47:29 +02:00
Unknown W. Brackets c15c4a6967 UI: Add analog speed limit mapping.
Only shows up as a setting if mapped, to avoid cluttering settings.
2022-07-04 19:14:05 -07:00
Unknown W. Brackets 536c050943 Core: Track names of connected pad devices.
Rather than just that it's a pad.  This tries to get the identifier if
possible.
2022-07-04 19:14:04 -07:00
Henrik Rydgård 123a0ef0c2 Better default control config for the Retroid handheld Android console 2022-04-30 19:24:58 +02:00
iota97 e93cccf607 Add key bind to hotswap internal screen rotation 2022-04-23 08:52:51 +02:00
iota97 7b33325cac Double binding fix 2021-09-08 08:54:59 +02:00
iota97 f417bb93d4 Reuse translation 2021-08-30 13:13:09 +02:00
Unknown W. Brackets e7666e472f KeyMap: Simplify UI updates.
Better to avoid tightly coupled notifications of updates.
2021-08-29 08:02:52 -07:00
Henrik Rydgård b6228a1036 Add additional autoconf layout for xbox pads on Android. Revert the normal pad layout. 2021-08-28 15:38:03 +02:00
Henrik Rydgård 8cab56c948 Move keymap defaults to a separate file. Not exactly a clean separation though. 2021-08-28 15:12:10 +02:00
Henrik Rydgård 928bc88b01 Rename Unthrottle to Fast-forward globally 2021-08-18 09:28:13 +02:00
Henrik Rydgård aa3daca293 If it's a TV and VIRTKEY_PAUSE is not mapped to a pad control, pause on app switch. 2021-08-12 00:02:19 +02:00
Unknown W. Brackets eca3a405b6 UI: Flip Y analog direction based on config. 2021-04-04 08:39:49 -07:00
Unknown W. Brackets c9428975fe Windows: Normalize left and right analog stick. 2021-04-04 08:16:26 -07:00
Henrik Rydgård 9e41fafd0d Move math and some file and data conversion files out from native to Common.
Buildfixing

Move some file util files

Buildfix

Move KeyMap.cpp/h to Core where they belong better.

libretro buildfix attempt

Move ini_file

More buildfixes
2020-10-04 09:12:46 +02:00