https://bugs.kde.org/show_bug.cgi?id=484046

Joshua Goins <j...@redstrate.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|REPORTED                    |RESOLVED
      Latest Commit|                            |https://invent.kde.org/plas
                   |                            |ma/plasma-desktop/-/commit/
                   |                            |9c0c319d635f2758d1d310a2a41
                   |                            |3b7af335c4005
         Resolution|---                         |FIXED

--- Comment #12 from Joshua Goins <j...@redstrate.com> ---
Git commit 9c0c319d635f2758d1d310a2a413b7af335c4005 by Joshua Goins, on behalf
of Arthur Kasimov.
Committed on 14/12/2024 at 15:43.
Pushed by redstrate into branch 'master'.

kcms/gamecontroller: Replace SDL Game Controller API with Joystick API

Currently the KCM uses a mix of higher-level SDL "Game Controller" API
and lower-level "Joystick" API. Unfortunately, this results in numerous
bugs. The state of some buttons/axes, such as D-pad or right trigger,
is not displayed properly. This happens due to the mismatch between Game
Controller API and Joystick API that report different number and order
of buttons/axes. Another issue is that some non-standard devices like
racing wheels or handbrakes and not detected at all. The Game Controller
API seems to be limited to standard gamepads only.

This commit introduces new Device class that encapsulates SDL_Joystick
object. Both ButtonModel and AxesModel now use Device object to report
raw values from buttons and axes. DeviceModel now manages Device objects
and shows them in the combo box. This ensures SDL Joystick API is used
consistently across all code and avoids API mismatch issues. This should
also properly detect joysticks, wheels and handbrakes. Unfortunately I
don't have any of these devices and can't really test them.

The Gamepad class encapsulates SDL_GameController object and provides
higher-level access to gamepads. For now it is only used to display the
coordinate of left stick in PositionWidget. In future it can be used to
revamp the UI and show the symbolic view of standard gamepads.
Related: bug 487694, bug 494705, bug 494913

M  +1    -0    kcms/gamecontroller/CMakeLists.txt
M  +33   -14   kcms/gamecontroller/axesmodel.cpp
M  +10   -7    kcms/gamecontroller/axesmodel.h
M  +27   -28   kcms/gamecontroller/buttonmodel.cpp
M  +10   -12   kcms/gamecontroller/buttonmodel.h
A  +90   -0    kcms/gamecontroller/device.cpp     [License: GPL(v2.0+)]
A  +49   -0    kcms/gamecontroller/device.h     [License: GPL(v2.0+)]
M  +71   -30   kcms/gamecontroller/devicemodel.cpp
M  +16   -5    kcms/gamecontroller/devicemodel.h
M  +23   -32   kcms/gamecontroller/gamepad.cpp
M  +7    -20   kcms/gamecontroller/gamepad.h
M  +8    -3    kcms/gamecontroller/ui/main.qml

https://invent.kde.org/plasma/plasma-desktop/-/commit/9c0c319d635f2758d1d310a2a413b7af335c4005

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to