Commit Graph

68 Commits

Author SHA1 Message Date
Rémi Bernon 7b3a669ee3 windows.gaming.input: Use IUnknown invoker instead of IInspectable and add a parameter.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-05-05 20:57:54 +02:00
Rémi Bernon c30c0abd24 windows.gaming.input: Split IAsyncInfo interface to a separate struct.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-05-05 20:57:53 +02:00
Rémi Bernon b985fe6362 windows.gaming.input: Use a PROPVARIANT as async operation result.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-05-05 20:57:51 +02:00
Rémi Bernon d99ee0273b windows.gaming.input: Introduce a new type-pruning WineAsyncOperationCompletedHandler.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-05-05 20:57:50 +02:00
Rémi Bernon cb2f3f76ee windows.gaming.input: Set get_AreEffectsPaused value to FALSE when dinput fails.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-05-05 20:57:46 +02:00
Rémi Bernon 730b35ba46 windows.gaming.input: Import IAsyncOperation from windows.media.speech.
Adapting it for the IAsyncOperation_boolean interface and use it to
implement IForceFeedbackMotor_Try(Enable|Disable|Reset)Async.

Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-26 22:21:04 +02:00
Rémi Bernon 78261e08bf windows.gaming.input: Implement IForceFeedbackMotor_(Pause|Resume|StopAll)Effects.
And IForceFeedbackMotor_get_AreEffectsPaused.

Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-25 20:34:14 +02:00
Rémi Bernon fec8aae236 windows.gaming.input: Implement IForceFeedbackMotor_(get|put)_MasterGain.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-25 20:34:11 +02:00
Rémi Bernon cd24005266 windows.gaming.input: Acquire the device exclusively when creating ForceFeedbackMotor.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-25 20:34:07 +02:00
Rémi Bernon 69745cc12d windows.gaming.input: Implement ForceFeedbackMotor stub runtimeclass.
And create it for RawGameController and RacingWheel motors.

Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-25 20:34:04 +02:00
Rémi Bernon 5c88fea5e7 windows.gaming.input: Return an empty vector from RawGameController_get_ForceFeedbackMotors.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-25 20:34:00 +02:00
Rémi Bernon b12c74e435 windows.gaming.input: Implement RacingWheel runtimeclass stub.
And instantiate the class for DI8DEVTYPE_DRIVING devices.

Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-22 13:20:09 +02:00
Rémi Bernon e2e038e231 windows.gaming.input: Implement IRacingWheelStatics2 interface for RacingWheel.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-22 13:20:06 +02:00
Rémi Bernon acc2b32a5e windows.gaming.input: Implement ICustomGameControllerFactory interface for RacingWheel.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-22 13:20:04 +02:00
Rémi Bernon d1bf6e7e37 windows.gaming.input: Implement IRacingWheelStatics interface for RacingWheel.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-22 13:20:01 +02:00
Rémi Bernon 9f5dc12a07 windows.gaming.input: Introduce Windows.Gaming.Input.RacingWheel activation factory.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-22 13:19:58 +02:00
Rémi Bernon d99101977d windows.gaming.input: Fix vector InsertAt / RemoveAt copy sizes.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-18 17:29:53 +01:00
Rémi Bernon befeea424e windows.gaming.input: Implement HID simple haptics controllers support.
Adding support for trigger rumble on supported controllers and drivers.

Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-15 12:48:11 +01:00
Rémi Bernon 0fb4c0519b windows.gaming.input: Fix IIterator_IInspectable trace messages.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-14 18:30:41 +01:00
Rémi Bernon ace5d0adb8 windows.gaming.input: Fix IIterator_IInspectable_MoveNext returne value.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-14 18:30:39 +01:00
Rémi Bernon 0fc5a07770 windows.gaming.input: Always return S_OK from TryGetFactoryControllerFromGameController.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-11 19:23:28 +01:00
Rémi Bernon 6ebdf1bab9 windows.gaming.input: Return correct error from DllGetActivationFactory.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-11 19:23:28 +01:00
Rémi Bernon c2e2e919bc windows.gaming.input: Implement GetCurrentReading for the Gamepad runtimeclass.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-10 18:27:44 +01:00
Rémi Bernon bd628ba8c7 windows.gaming.input: Implement GetCurrentReading for the RawGameController runtimeclass.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-10 18:27:44 +01:00
Rémi Bernon 5fa86231f7 windows.gaming.input: Return object counts and VID/PID for RawGameController.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-10 18:27:44 +01:00
Rémi Bernon 1e9b83a440 windows.gaming.input: Implement Controller(Added|Removed) event support.
Using a generic EventHandler<IInspectable *> implementation.

This adds several todo_wine because we currently do not implement custom
game controller factories.

Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-10 18:27:44 +01:00
Rémi Bernon e609c640a2 windows.gaming.input: Implement IGamepadStatics_get_Gamepads.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-10 18:27:44 +01:00
Rémi Bernon 1ca51d33c2 windows.gaming.input: Implement IRawGameControllerStatics_get_RawGameControllers.
It is important to add RawGameController instances to the vector in the
initialization callback, because some games check the vector, as well
as the Gamepad class vector in the OnGameControllerAdded callback.

This also removes the OnGameControllerAdded failure case, to avoid
leaking controllers that were already added to the controller vector,
and instead rely on the OnGameControllerRemoved call to do the cleanup.

Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-10 18:27:44 +01:00
Rémi Bernon e3b1d818af windows.gaming.input: Implement IIterable<T> and IIterator<T> interfaces.
For the generic vector implementation.

Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-09 20:54:16 +01:00
Rémi Bernon b98b9ce74f windows.gaming.input: Implement CreateGameController for Gamepad runtimeclass.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-09 20:54:16 +01:00
Rémi Bernon 47610b5461 windows.gaming.input: Implement CreateGameController for RawGameController runtimeclass.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-09 20:54:16 +01:00
Rémi Bernon da745fee16 windows.gaming.input: Implement IGamepadStatics2_FromGameController.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-08 22:43:36 +01:00
Rémi Bernon 5518b29cfa windows.gaming.input: Check the controller type and create Gamepad instances.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-08 22:43:36 +01:00
Rémi Bernon d45a2a14cd windows.gaming.input: Implement IRawGameControllerStatics_FromGameController.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-08 22:43:36 +01:00
Rémi Bernon 09cb88e91b windows.gaming.input: Instantiate IGameController(BatteryInfo) stub from providers.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-08 22:43:36 +01:00
Francois Gouget ea79e50f98 windows.gaming.input: Add a linefeed to a TRACE() message.
Signed-off-by: Francois Gouget <fgouget@free.fr>
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-07 16:31:36 +01:00
Rémi Bernon aca853c73e windows.gaming.input: Add IGameControllerImpl undocumented interface declaration.
This is more likely some specialized interface of a parameterized type,
used to create mixin types, but we have no way and no clue where it
comes from or how it should be declared.

Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-07 11:23:42 +01:00
Rémi Bernon 00ff428b30 windows.gaming.input: Stub ICustomGameControllerFactory for Gamepad.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-07 11:23:42 +01:00
Rémi Bernon 5adbc011d9 windows.gaming.input: Stub ICustomGameControllerFactory for RawGameController.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-07 11:23:42 +01:00
Rémi Bernon 0d3c026bdb windows.gaming.input: Make QueryInterface implementations consistent.
When COM aggregation is involved it is important to add a reference to
the returned iface and not to the inner object.

Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-07 11:23:42 +01:00
Rémi Bernon e171b58aae windows.gaming.input: Instantiate the WineGameControllerProvider runtimeclass.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-04 19:16:40 +01:00
Rémi Bernon d6be529ce8 windows.gaming.input: Start a thread to monitor HID device addition and removal.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-04 19:16:40 +01:00
Rémi Bernon afaf061ede windows.gaming.input: Add an internal WineGameControllerProvider runtimeclass.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-04 19:16:39 +01:00
Rémi Bernon 1f694c7f79 include: Add Windows.Gaming.Input.IGameControllerBatteryInfo interface definition.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-02 20:18:06 +01:00
Rémi Bernon 350c8ec3ba windows.gaming.input: Register Windows.Gaming.Input.Custom classes.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-02 20:18:00 +01:00
Rémi Bernon 435ac84c21 windows.gaming.input: Stub GameControllerFactoryManager runtimeclass.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-02 20:17:57 +01:00
Rémi Bernon 45eb5d0909 windows.gaming.input: Introduce helpers to define IInspectable interface boilerplate.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-02 20:17:55 +01:00
Rémi Bernon 46f4975b05 windows.gaming.input: Introduce a generic IVector<IInspectable *> implementation.
And use it to factor all the IVectorView<T> stubs.

Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-28 21:31:56 +01:00
Rémi Bernon c565d0035e windows.gaming.input: Split Gamepad runtimeclass to a separate source.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-28 21:31:56 +01:00
Rémi Bernon e8219b5989 windows.gaming.input: Split RawGameController runtimeclass to separate source.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-28 21:31:56 +01:00