summaryrefslogtreecommitdiff
path: root/Source/Core/InputCommon/ControllerInterface/ControllerInterface.cpp
AgeCommit message (Collapse)Author
2020-01-24InputCommon: Make "Cursor" inputs aware of the rendered aspect ratio.Jordan Woyak
2019-10-27Rename all instances of "CemuhookUDPServer"/"UDPServer" to ↵rlnilsen
"DualShockUDPClient"/"DSUClient".
2019-10-26Add support for motion controllers via the CemuHook controller input protocol.rlnilsen
This is done by: 1) Implementing said protocol in a new controller input class CemuHookUDPServer. 2) Adding functionality in the WiimoteEmu class for pushing that motion input to the emulated Wiimote and MotionPlus. 3) Suitably modifying the UI for configuring an Emulated Wii Remote.
2019-03-29ControllerInterface/Win32: Prevent devcies from losing their "id" on a ↵Jordan Woyak
hotplug event.
2019-03-29Add hotplug support to DInput and XInput controller backendsMichael M
2019-03-29Add ControllerInterface::Win32 to wrap XInput and DInputMichael M
2019-01-10ControllerInterface: Allow hotplug callbacks to be unregistered and don't ↵Jordan Woyak
reload the entire config from the ini file on hotplug, just update the control references. This should fix a crash on shutdown on Android.
2019-01-02ControllerInterface: Shutdown order and race condition fix.Jordan Woyak
2018-10-29Core: Switch controller interface to render widget on bootingStenzek
Previously, the Qt frontend would initialize the controller interface on starting, resulting in the cursor position being relative to the main window, instead of the render window.
2018-10-29ControllerInterface: Don't crash on non-X11 QPAStenzek
2018-06-04Add hotplug support to SDL2 controller backendMichael M
2017-11-10ControllerInterface: don't call InvokeDevicesChangedCallbacks more than once ↵Michael M
when refreshing
2017-11-10ControllerInterface: add mutex around callbacks vectorMichael M
2017-11-10ControllerInterface: HotplugCallbacks -> DevicesChangedCallbacksMichael M
2017-11-10ControllerInterface: invoke callbacks in AddDevice/RemoveDeviceMichael M
Some backends already cause this to happen, so make it consistent across systems.
2017-02-07InputCommon: Extract ControlReference from ControllerInterfaceMichael Maltese
Better separation of concerns. Relegates `ControllerInterface` to enumerating input controls, and the new `ControlReference` deals with combining inputs and configuration expression parsing.
2016-11-30ControllerInterface: replace Reinitialize with RefreshDevicesMichael Maltese
The SDL backend crashes when you close a joystick after SDL_Quit has been called. Some backends don't need to be shutdown and re-initialized everytime, we can just ask to enumerate devices again.
2016-11-30ControllerInterface: clear devices before shutting down backendsMichael Maltese
The SDL backend faults if it tries to close a joystick after SDL_Quit has been called.
2016-10-03Merge pull request #4102 from ligfx/quartz_inputshuffle2
Add Quartz/CoreGraphics controller interface for default k&m events
2016-09-04InputCommon: Remove the Xlib backendJasper St. Pierre
The XInput2 backend is more performant, so let's default to it and remove the old, core-only backend.
2016-08-08Add Quartz/CoreGraphics controller interface for default k&m eventsMichael Maltese
2016-07-29evdev: Add hotplugging supportLéo Lam
This adds hotplugging support to the evdev input backend. We use libudev to monitor changes to input devices in a separate thread. Removed devices are removed from the devices list, and new devices are added to the list. The effect is that controllers are usable immediately after plugging them without having to manually refresh devices (if they were configured to be used, of course).
2016-07-29ControllerInterface: Don't block on UpdateInput()Léo Lam
Changes UpdateInput() to skip if we can't lock the mutex, instead of potentially blocking the CPU thread and causing a short but noticeable frame drop.
2016-07-29ControllerInterface: Add RemoveDevice()Léo Lam
This adds RemoveDevice() to ControllerInterface, fixes ExpressionParser and some other code to support device removals without crashing, and adds an IsValid() method to Device, to prepare for hotplugging.
2016-07-29ControllerInterface: Add a way to register callbacksLéo Lam
This adds RegisterHotplugCallback() to register a callback which will be invoked by the input backends' hotplug threads when there is a new device, so that Core (GCKeyboard, GCPad, Wiimote, Hotkey) can reload the configuration without adding a dependency to Core from InputCommon.
2016-07-14ControllerInterface: Make the ID assigning code commonLéo Lam
This makes the device ID assigning code common to all backends, by moving it to AddDevice() instead of copy-pasting or replicating the logic in the backends. Also, to prepare for hotplugging, instead of relying on a name usage count, the new ID assigning system always starts from ID 0 and tries to assign the first ID that is not used.
2016-06-25ControllerInterface: Switch to std::shared_ptrLéo Lam
Small cleanup by using std::shared_ptr and getting rid of ciface.Devices() which just returned the m_devices (which defeats the point of making m_devices protected). Incidentally, this should make the code safer when we have different threads accessing devices in the future (for hotplug?). A lot of code use Device references directly so there is no easy way to remove FindDevice() and make those unique_ptrs.
2016-06-25ControllerInterface: Add synchronisationLéo Lam
Since we may have to add/access devices from different threads, this adds synchronisation to anything that touches m_devices.
2016-06-25ControllerInterface: Don't pass m_devices to the backendsLéo Lam
Previously, the devices vector would be passed to all backends. They would then manually push_back to it to add new devices. This was fine but caused issues when trying to add synchronisation. Instead, backends now call AddDevice() to fill m_devices so that it is not accessible from the outside.
2016-06-24Reformat all the things. Have fun with merge conflicts.Pierre Bourdon
2016-01-10Comment change to reflect what code doesbooto
2015-10-24GC controller input using named pipesspxtr
Currently only works on unix, but can be extended to other systems. Can also be extended to do wiimotes. Searches the Pipes folder for readable named pipes and creates a dolphin input device out of them. Send controller inputs to the game by writing to the file. Commands are described in Pipes.h.
2015-07-01Linux: Add an evdev based controller backend, to replace SDL.Scott Mansell
2015-06-08Revert "SDL: handle SDL_QUIT event"Matthew Parlane
2015-06-05SDL: handle SDL_QUIT eventTillmann Karras
Using SDL_INIT_JOYSTICK implies SDL_INIT_EVENTS which installs a signal handler for SIGINT and SIGTERM. There will be a way to prevent this in 2.0.4 but for now we'll need to handle SDL_QUIT.
2015-05-25Set copyright year to when a file was createdTillmann Karras
2015-05-25Update license headers to GPLv2+Tillmann Karras
2015-03-12Removed the controller update lock as it is no longer needed.skidau
2015-03-08Fixed the crash that would occur when the Refresh button was pressed in the ↵skidau
controllers config. - Simplified the locking mechanism when controllers were updated - Reloaded the config of the controls instead of re-initialising the control plugins - Fixed controls being unresponsive after the Refresh button was pressed - Disables the hotkeys while the controller config is open
2014-11-28HW: Remove UpdateOutputJasper St. Pierre
All of the rumble interfaces are now immediate mode.
2014-11-28ControllerInterface: Make UpdateInput / UpdateOutput return voidJasper St. Pierre
The return values here have never been checked, so it doesn't make sense to return a value to begin with.
2014-11-28ControllerInterface: Remove unused ClearInputStateJasper St. Pierre
2014-11-28ControllerInterface: Remove unused "force" parameterJasper St. Pierre
I'm not sure when this nonsense of forcing locking the mutex when it's already taken should have ever taken effect, but let's be thankful it isn't now. That was a badly worded sentence.
2014-11-11Fix some double->float conversions.Rachel Bryk
2014-10-15ControllerInterface: Get rid of SetHwnd(), introduce Reinitialize()Lioncash
Initialize now just takes the handle directly. Reinitialize is added because it is much more straightforward in comparison to doing the Shutdown-Initialize manually.
2014-09-04Controller Interface: Remove "using namespace" in header file.Rohit Nirmal
2014-08-19GLInterface: Destroy GLWinJasper St. Pierre
Everything is now safely tucked inside each individual GLInterface.
2014-08-19Remove support for WaylandJasper St. Pierre
Yes, this is a fancy new feature, but our Wayland support was particularly bitrotten, and ideally this would be handled by a platform layer like SDL. If not, we can always add this back in when GLInterface has caught up. We might be able to even support wxWidgets and GL together with subsurfaces!
2014-08-04Restore Wayland compatibility.Tony Wasserka
It was broken by e15ec56bf0237 because it wasn't deemed important. However chances are people will eventually start using Dolphin on that configuration, so we shouldn't frivolously drop compatibility without good reason.
2014-08-02Move GLInterface around to remove VideoBackends dependency on DolphinWXPierre Bourdon