Commit Graph

614 Commits

Author SHA1 Message Date
Lioncash 7c05493952 gc_poller: Mark GCButtonFactory::GetNextInput() as const
This doesn't modify class instance state.
2020-07-12 15:43:07 -04:00
Lioncash 340875a12f gc_poller: Get rid of undefined behavior in Create()
Ensures that the function always has returns in all control paths.
2020-07-12 15:41:35 -04:00
Lioncash ff47456e8b gc_poller: Silence sign conversion warnings 2020-07-12 15:40:22 -04:00
Lioncash 1fe8261049 gc_adapter: Remove deprecated usage of = in lambda captures
It's deprecated in C++20 to use = to capture the this pointer.

Instead, we can simply pass this as an argument to the thread
constructor.
2020-07-12 15:38:19 -04:00
Lioncash 6b6d076f51 gc_adapter: Silence sign conversion warnings 2020-07-12 15:36:27 -04:00
Ameer a885855ff4 Break out of scan loop if can't find adapter on first run 2020-07-10 11:07:43 -04:00
Jan Beich 64cab91fac cmake: pass libusb include directory as well
In file included from src/input_common/gcadapter/gc_adapter.cpp:8:
src/./input_common/gcadapter/gc_adapter.h:11:10: fatal error: 'libusb.h' file not found
 #include <libusb.h>
          ^~~~~~~~~~
2020-07-09 15:26:54 +00:00
Ameer d875341016 Rebase to master, fix merge conflicts 2020-07-08 21:15:49 -04:00
bunnei b84af2cd28 Merge pull request #4266 from jbeich/freebsd
gcadapter: unbreak build on FreeBSD
2020-07-08 16:30:26 -04:00
Ameer 6e2876d7da Address comments for better clarity/signed dev count 2020-07-08 14:18:54 -04:00
Ameer 0e21c24052 Add more libusb error checks 2020-07-08 13:19:33 -04:00
Ameer f1790c7b34 Address PR feedback, fix axis button thresholding 2020-07-07 12:20:59 -04:00
Jan Beich 9ea600e888 input_common/gcadapter: add missing C++11 header required by libc++
In file included from src/input_common/gcadapter/gc_adapter.cpp:8:
src/./input_common/gcadapter/gc_adapter.h:77:10: error: no template named 'unordered_map' in namespace 'std'
    std::unordered_map<int, bool> buttons;
    ~~~~~^
src/./input_common/gcadapter/gc_adapter.h:78:10: error: no template named 'unordered_map' in namespace 'std'
    std::unordered_map<int, u16> axes;
    ~~~~~^
2020-07-07 10:02:03 +00:00
Ameer 3eeb56e064 Brace the code! Fix compile error due to class member construction order 2020-07-06 23:01:57 -04:00
Ameer 9a989c4ff9 Recalibrate reconnected controllers 2020-07-06 22:09:07 -04:00
Ameer 68a4bc8179 Save origin state of GC controller analog features, compare against origin for input detection 2020-07-06 21:58:31 -04:00
Ameer e081fb0718 Fix for always firing triggers on some controllers, trigger threshold more universal 2020-07-04 00:40:48 -04:00
Ameer 670614dbf4 Address lioncash feedback: Log formatting, extern const PadButtonArray, little touch ups 2020-07-03 11:52:07 -04:00
Ameer 33c08afba9 Fix unnecessary diffs 2020-07-02 16:51:16 -04:00
Ameer 12e679c39c Add LR triggers as axes, half press to initiate a press, add GC axis id in config, clarify some code blocks for better readability 2020-07-02 15:54:44 -04:00
Ameer 34e6084c8d Reset adapter state on init, fixes errors relating driver hang from unexpected unplug 2020-07-01 12:52:50 -04:00
Ameer 0c6128cc3a Address feedback regarding increments, const vars, and general cleanup 2020-06-30 17:28:02 -04:00
Ameer ed72085227 fix implicit conversion of size_t type to int 2020-06-30 11:44:55 -04:00
Ameer J 21ae845d69 left const auto&, comment punctuation.
Co-authored-by: Morph <39850852+Morph1984@users.noreply.github.com>
2020-06-26 23:46:49 -04:00
Ameer J eb06e3e8bf const& to button in button array
Co-authored-by: VolcaEM <63682805+VolcaEM@users.noreply.github.com>
2020-06-25 19:46:50 -04:00
Ameer 677a07c253 Stop reading loop if error is encountered 2020-06-25 19:31:51 -04:00
Ameer 7c10c568da padbutton enum class and struct initiailization 2020-06-24 11:39:30 -04:00
Ameer 39ca7c675c cleanup check access, read, and factory GetNextInput funcs. Use size rather than magic number 2020-06-23 17:37:15 -04:00
Ameer ef0b52563d Fix deallocation of GC Adapter 2020-06-23 12:47:58 -04:00
Ameer f071a70fec std::array and const reference passing of non-trivial objects 2020-06-22 18:11:59 -04:00
ameerj 14bb562028 Update src/input_common/main.cpp
Co-authored-by: LC <mathew1800@gmail.com>

update libusb submodule (hopefully windows build error fixed)
2020-06-22 17:05:50 -04:00
Ameer 5479427335 Tidy up the pointers, use pair over tuple where appropriate 2020-06-21 23:56:56 -04:00
Ameer a0f8f1dc5e fix for sleep using stl 2020-06-21 22:58:53 -04:00
Ameer 92a812d815 shared_ptr for the GC adapter class, constexpr constants 2020-06-21 21:50:58 -04:00
Ameer 4a54dc6bbf std::arrays where appropriate, clear q in adapter class, other touch ups 2020-06-21 21:17:46 -04:00
Ameer 5ebed7b1bb fix include thread 2020-06-21 21:17:46 -04:00
Ameer eddf2d0f4e Singleton GC Adapter class, remove globals, fix naming convention
Fix clang formatting

Manual fix for configure_input_player formatting

Add missing lib usb cmake command
2020-06-21 21:17:07 -04:00
Ameer 77ae7fe5dd Clang Formatting 2020-06-21 15:31:57 -04:00
Ameer 243dbee81e Cleanup after linter 2020-06-21 13:02:43 -04:00
Ameer dbe1ad4fe4 GC Adapter Implementation 2020-06-21 12:36:28 -04:00
MerryMage b26ff8fa86 input_common/motion_emu: Remove redundant move
Named return value optimization automatically applies here.
2020-06-19 14:29:59 +01:00
MerryMage 38f25284c8 input_common/keyboard: Remove redundant move
Named return value optimization automatically applies here.
2020-06-19 14:29:36 +01:00
FearlessTobi 358d645018 input_common: fix build when SDL2 is disabled 2020-05-02 21:47:17 +02:00
bunnei 7a4ed2581d Merge pull request #3673 from lioncash/extra
CMakeLists: Specify -Wextra on linux builds
2020-04-16 21:12:33 -04:00
Markus Wick ea1146eba0 input_common: Use the CMake target instead of the variable. 2020-04-16 16:42:59 +02:00
Lioncash 02e095313a CMakeLists: Specify -Wextra on linux builds
Allows reporting more cases where logic errors may exist, such as
implicit fallthrough cases, etc.

We currently ignore unused parameters, since we currently have many
cases where this is intentional (virtual interfaces).

While we're at it, we can also tidy up any existing code that causes
warnings. This also uncovered a few bugs as well.
2020-04-15 21:33:46 -04:00
bunnei 1429f883b2 Merge pull request #3525 from FearlessTobi/linux-compile-error
input_common/udp: Fix Linux build by using a backwards compatible way of error checking
2020-03-21 16:04:45 -04:00
ReinUsesLisp d8191c0d7f input_common/udp: Fix clang build issues 2020-03-18 04:30:26 -03:00
FearlessTobi a38b732a6c input_common/udp: Fix Linux build by using a backwards compatible way of error checking
Should fix https://github.com/yuzu-emu/yuzu/issues/3487.

error_code::failed is a function which has been introduced in Boost 1.69.
This version of boost hasn't landed in most major distros yet.
2020-03-17 12:29:25 +01:00
James Rowe 37cf312477 input/udp - Add minor error handling to prevent bad input from crashing 2020-03-03 23:46:05 -07:00
James Rowe f40becae29 input/udp - Dont log on invalid packet received 2020-03-03 19:52:16 -07:00
CJBok 7ec4bd7793 analog_from_button get direction implementation 2020-02-18 06:45:37 +01:00
Lioncash ba28438e61 input_common/udp: Ensure that UDP is shut down within Shutdown()
Previously the UDP backend would never actually get shut down.
2020-02-03 09:29:15 -05:00
Lioncash f693c966a0 input_common/udp: Add missing override specifiers
Prevents trivial warnings and ensures interfaces are properly
maintained between the base class.
2020-02-03 09:26:53 -05:00
Lioncash 02fbec1123 input_common/udp: std::move SocketCallback instances where applicable
std::function is allowed to heap allocate if the size of the captures
associated with each lambda exceed a certain threshold. This prevents
potentially unnecessary reallocations from occurring.
2020-02-03 09:24:05 -05:00
Lioncash cf11ee1b0d input_common/udp: std::move shared_ptr within Client constructor
Gets rid of a trivially avoidable atomic reference count increment and
decrement.
2020-02-03 09:21:46 -05:00
Lioncash 8e230f3e37 udp/client: Replace deprecated from_string() call with make_address_v4()
Future-proofs code if boost is ever updated.
2020-02-03 09:20:40 -05:00
Lioncash e397a2145c input_common/udp: Silence -Wreorder warning for Socket
Amends the constructor initializer list to specify the order of its
elements in the same order that initialization would occur.
2020-02-03 09:15:32 -05:00
Lioncash 2ba97142ab input_common/udp: Remove unnecessary inclusions 2020-02-03 09:13:40 -05:00
Lioncash 5da05e3128 input_common/udp: Add missing header guard 2020-02-03 09:09:06 -05:00
bunnei 0058ae07f7 Merge pull request #3284 from CJBok/hid-fix
hid: Fix analog sticks directional states
2020-02-01 14:02:41 -05:00
FearlessTobi e89cbc93dd Address second part of review comments 2020-01-23 20:55:26 +01:00
FearlessTobi af272d88d9 Address review comments 2020-01-23 20:55:26 +01:00
fearlessTobi b2f53cceb6 Input: UDP Client to provide motion and touch controls
An implementation of the cemuhook motion/touch protocol, this adds the
ability for users to connect several different devices to citra to send
direct motion and touch data to citra.

Co-Authored-By: jroweboy <jroweboy@gmail.com>
2020-01-23 20:55:26 +01:00
CJBok be576083dd Moved analog direction logic to sdl_impl 2020-01-15 11:25:15 +01:00
Lioncash c10e37ddbf input_common/sdl/sdl_impl: Correct logging string in SDLState constructor
If this path was ever taken, a runtime exception would occur due to the
lack of a formatting specifier to insert the error code into the format
string.
2019-06-03 16:56:47 -04:00
Lioncash f7b6090635 input_common/sdl/sdl_impl: Move documentation comments to header where applicable
Places the documentation comments with the rest of SDLState's member
function documentation.
2019-06-03 16:56:47 -04:00
Lioncash ac88c3d84d input_common/sdl/sdl_impl: Amend names for axes for SDLAnalogPoller
Adds another underscore to clearly indicate the axis names.
2019-06-03 16:56:47 -04:00
Lioncash 4124d77186 input_common/sdl/sdl_impl: Mark variables const where applicable
Make it explicit that these aren't modified elsewhere (either through
functions by reference, or by other operations).
2019-06-03 16:56:47 -04:00
Lioncash 5b89bf78b8 input_common/sdl/sdl_impl: Mark SDLEventToButtonParamPackage() as static
Its prototype declared at the top of the translation unit contains the
static qualifier, so the function itself should also contain it to make
it a proper internally linked function.
2019-06-03 16:56:47 -04:00
Lioncash f0a45d70a8 input_common/sdl/sdl_impl: Convert reinterpret_cast into a static_cast
It's valid to static_cast a void pointer back into its proper type.
2019-06-03 16:56:46 -04:00
Lioncash ed90a754c5 input_common/sdl/sdl_impl: Use insert_or_assign() where applicable
Same behavior, but without a potential need to unnecessarily default
construct a value.
2019-06-03 16:56:46 -04:00
Lioncash f51bbb791d input_common/sdl/sdl_impl: Simplify SDL_Joystick deleter handling
The deleter can just be set in the constructor and maintained throughout
the lifetime of the object.

If a contained pointer is null, then the deleter won't execute, so this
is safe to do. We don't need to swap it out with a version of a deleter
that does nothing.
2019-06-03 16:56:46 -04:00
Lioncash 14fb03b99b input_common/sdl/sdl_impl: Resolve two sign conversion warnings
Silences the final two warnings in SDL code.
2019-06-03 16:56:46 -04:00
Lioncash 24f0967a65 input_common/sdl: Remove unused header includes and forward declarations
Gets rid of a few unnecessary inclusion dependencies. It also uncovered
a few indirect inclusion dependencies being relied upon.
2019-06-03 16:56:42 -04:00
Lioncash 5438937cee input_common/sdl/sdl_impl: Use nested namespace specifiers where applicable 2019-06-03 15:49:04 -04:00
Lioncash cbbf86ba97 input_common/sdl/sdl_impl: Silence sign conversion warnings
Makes the conversions explicit, as opposed to implicit.
2019-05-31 04:47:02 -03:00
Lioncash eb88e9d088 general: Use deducation guides for std::lock_guard and std::unique_lock
Since C++17, the introduction of deduction guides for locking facilities
means that we no longer need to hardcode the mutex type into the locks
themselves, making it easier to switch mutex types, should it ever be
necessary in the future.
2019-04-01 12:53:47 -04:00
Lioncash 54150dcb73 input_common/sdl: Correct return values within implementations of GetPollers()
In both cases, we weren't actually returning anything, which is
undefined behavior.
2019-03-18 11:40:38 -04:00
Lioncash ae7b537792 input_common/sdl: Use a type alias to shorten declaration of GetPollers
Just makes the definitions a little bit more tidy.
2019-03-18 11:40:35 -04:00
Lioncash 3a67c46490 input_common/sdl_impl: Make lambda capture more specific in SDLState constructor
We don't need to universally capture by reference. We specifically just
need to capture the this pointer.
2019-03-17 04:02:52 -04:00
Lioncash ddbcc91a56 input_common/sdl_impl: Remove unnecessary std::chrono::duration construction
Specifying the time unit itself is sufficient here.
2019-03-17 04:02:52 -04:00
Lioncash 4eeedd0436 input_common/sdl_impl: Remove unused variable in SDLState constructor 2019-03-17 04:02:48 -04:00
B3n30 70bc80da4d fixup! Joystick: Allow for background events; Add deadzone to SDLAnalog 2019-03-02 19:12:46 +01:00
Weiyi Wang 618e092e42 input/sdl: lock map mutex after SDL call
Any SDL invocation can call the even callback on the same thread, which can call GetSDLJoystickBySDLID and eventually cause double lock on joystick_map_mutex. To avoid this, lock guard should be placed as closer as possible to the object accessing code, so that any SDL invocation is with the mutex unlocked
2019-03-02 19:09:58 +01:00
James Rowe a15f8a9936 Input: Remove global variables from SDL Input
Changes the interface as well to remove any unique methods that
frontends needed to call such as StartJoystickEventHandler by
conditionally starting the polling thread only if the frontend hasn't
started it already. Additionally, moves all global state into a single
SDLState class in order to guarantee that the destructors are called in
the proper order
2019-03-02 19:09:34 +01:00
James Rowe 408b20b3d2 Input: Copy current SDL.h/cpp files to impl
This should make reviewing much easier as you can then see what changed
happened between the old file and the new one
2019-03-02 18:38:11 +01:00
Lioncash e59ae7210a common/math_util: Move contents into the Common namespace
These types are within the common library, so they should be within the
Common namespace.
2019-02-27 03:38:39 -05:00
Lioncash 39eccc0286 common/vector_math: Move Vec[x] types into the Common namespace
These types are within the common library, so they should be using the
Common namespace.
2019-02-26 22:38:36 -05:00
Lioncash 63a8d9172f common/quaternion: Move Quaternion into the Common namespace
Quaternion is within the common library, so it should be using the
Common namespace.
2019-02-26 22:31:17 -05:00
Tobias ab39d25ff0 Port #4141 from citra: Joystick hotplug support (#1275)
* Joystick hotplug support (#4141)

* use SDL_PollEvent instead of SDL_JoystickUpdate

Register hot plugged controller by GUID if they were configured in a previous session

* Move SDL_PollEvent into its own thread

* Don't store SDLJoystick pointer in Input Device; Get pointer on each GetStatus call

* Fix that joystick_list gets cleared after SDL_Quit

* Add VirtualJoystick for InputDevices thats never nullptr

* fixup! Add VirtualJoystick for InputDevices thats never nullptr

* fixup! fixup! Add VirtualJoystick for InputDevices thats never nullptr

* Remove SDL_GameController, make SDL_Joystick* unique_ptr

* fixup! Remove SDL_GameController, make SDL_Joystick* unique_ptr

* Adressed feedback; fixed handling of same guid reconnects

* fixup! Adressed feedback; fixed handling of same guid reconnects

* merge the two joystick_lists into one

* make SDLJoystick a member of VirtualJoystick

* fixup! make SDLJoystick a member of VirtualJoystick

* fixup! make SDLJoystick a member of VirtualJoystick

* fixup! fixup! make SDLJoystick a member of VirtualJoystick

* SDLJoystick: Addressed review comments

* Address one missed review comment
2018-09-10 21:29:59 -04:00
Lioncash fc2d6869bf input_common: Use std::move where applicable
Avoids unnecessary atomic reference count increments and decrements
2018-08-02 21:51:11 -04:00
Lioncash d682d53bb2 input_common: Add missing override specifiers 2018-08-02 21:44:25 -04:00
James Rowe e159c550d8 Rename logging macro back to LOG_* 2018-07-02 21:45:47 -04:00
Lioncash db4f7293fd input_common: Move old logging macros over to fmt-capable ones 2018-04-26 19:09:25 -04:00
Lioncash 043546e4db math_util: Remove the Clamp() function
C++17 adds clamp() to the standard library, so we can remove ours in
favor of it.
2018-04-20 10:14:13 -04:00
James Rowe ea88c44eb8 Format: Run the new clang format on everything 2018-01-20 16:45:11 -07:00
bunnei 4ddfb2e881 Merge pull request #84 from lioncash/cmake
CMakeLists: Derive the source directory grouping from targets themselves
2018-01-18 01:37:17 -05:00
Lioncash 447c25646e CMakeLists: Derive the source directory grouping from targets themselves
Removes the need to store to separate SRC and HEADER variables, and then
construct the target in most cases.
2018-01-17 21:51:43 -05:00
Lioncash 651b5153dc input_common/sdl: Silence a -Wpessimizing-move warning 2018-01-17 18:44:16 -05:00
muemart a884f3d03e Adding meumart's Citra SDL Joystick support. Citra PR #3116 2018-01-15 20:02:30 -05:00
wwylele 56684ad10b motion_emu: fix initialization order 2017-08-22 11:43:44 +03:00
James Rowe df206639cf Merge pull request #2861 from wwylele/motion-refactor
Refactor MotionEmu into a InputDevice
2017-08-19 23:43:01 -06:00
wwylele 6e56beafbf motion_emu: no need to include thread in header 2017-08-19 07:21:02 +03:00
Dave Leaver 4c281049aa Fix Spelling/English mistakes 2017-08-14 09:15:39 +12:00
wwylele d500f79b8e move MotionEmu from core/frontend to input_common as a InputDevice 2017-08-11 11:05:08 +03:00
danzel 6610e914a3 Fix some spelling mistakes 2017-08-11 19:51:16 +12:00
Yuri Kunde Schlesner d84915c4a1 CMake: Define an interface target for SDL2 definitions 2017-05-27 21:38:49 -07:00
Yuri Kunde Schlesner b78ce2bce5 CMake: Correct inter-module dependencies and library visibility
Modules didn't correctly define their dependencies before, which relied
on the frontends implicitly including every module for linking to
succeed.

Also changed every target_link_libraries call to specify visibility of
dependencies to avoid leaking definitions to dependents when not
necessary.
2017-05-27 18:41:24 -07:00
wwylele 96a97f2f6d input_common/sdl: add support for binding button to axis 2017-04-17 14:14:35 +03:00
wwylele edc6c110bf citra-qt: release all buttons when render window focus is lost
credit to @Hawkheart for the original idea
2017-03-17 21:41:25 +02:00
wwylele 9cd5268ac3 InputCommon: add SDL joystick support 2017-03-01 23:30:57 +02:00
wwylele ffb582ff3b InputCommon: add AnalogFromButton 2017-03-01 23:30:57 +02:00
wwylele 189063ac2d InputCommon: add Keyboard 2017-03-01 23:30:57 +02:00