From: Rémi Bernon rbernon@codeweavers.com
--- dlls/windows.gaming.input/controller.c | 51 +++++++------------------- include/wine/comimpl.h | 3 ++ 2 files changed, 17 insertions(+), 37 deletions(-)
diff --git a/dlls/windows.gaming.input/controller.c b/dlls/windows.gaming.input/controller.c index 90f03f3b7fa..97666199d34 100644 --- a/dlls/windows.gaming.input/controller.c +++ b/dlls/windows.gaming.input/controller.c @@ -63,7 +63,7 @@ struct controller IGameControllerInputSink IGameControllerInputSink_iface; IRawGameController IRawGameController_iface; IRawGameController2 IRawGameController2_iface; - IGameController *IGameController_outer; + IInspectable *outer; const WCHAR *class_name; LONG refcount;
@@ -71,8 +71,6 @@ struct controller IWineGameControllerProvider *wine_provider; };
-INTERFACE_IMPL_FROM( controller, IGameControllerImpl ); - static void controller_destroy( struct controller *impl ) { if (impl->wine_provider) IWineGameControllerProvider_Release( impl->wine_provider ); @@ -80,9 +78,8 @@ static void controller_destroy( struct controller *impl ) free( impl ); }
-IUNKNOWN_IMPL( controller, IGameControllerImpl, IAgileObject, IGameControllerInputSink, - IRawGameController, IRawGameController2, END ); -IINSPECTABLE_IMPL( controller, IGameControllerImpl ); +INTERFACE_IMPL_OUTER_IGameControllerImpl( controller, IAgileObject, IGameControllerInputSink, + IRawGameController, IRawGameController2, END );
static HRESULT WINAPI controller_Initialize( IGameControllerImpl *iface, IGameController *outer, IGameControllerProvider *provider ) @@ -92,7 +89,7 @@ static HRESULT WINAPI controller_Initialize( IGameControllerImpl *iface, IGameCo
TRACE( "iface %p, outer %p, provider %p.\n", iface, outer, provider );
- impl->IGameController_outer = outer; + impl->outer = (IInspectable *)outer; IGameControllerProvider_AddRef( (impl->provider = provider) );
hr = IGameControllerProvider_QueryInterface( provider, &IID_IWineGameControllerProvider, @@ -108,13 +105,8 @@ static HRESULT WINAPI controller_Initialize( IGameControllerImpl *iface, IGameCo }
INTERFACE_VTBL_IGameControllerImpl( controller ); - -INTERFACE_IMPL_FROM( controller, IAgileObject ); -IUNKNOWN_FWD( controller, IAgileObject, IGameController, object->IGameController_outer ); INTERFACE_VTBL_IAgileObject( controller_IAgileObject );
-DEFINE_IINSPECTABLE_OUTER( controller_IGameControllerInputSink, IGameControllerInputSink, controller, IGameController_outer ) - static HRESULT WINAPI controller_IGameControllerInputSink_OnInputResumed( IGameControllerInputSink *iface, UINT64 timestamp ) { FIXME( "iface %p, timestamp %I64u stub!\n", iface, timestamp ); @@ -129,17 +121,15 @@ static HRESULT WINAPI controller_IGameControllerInputSink_OnInputSuspended( IGam
INTERFACE_VTBL_IGameControllerInputSink( controller_IGameControllerInputSink );
-DEFINE_IINSPECTABLE_OUTER( controller_IRawGameController, IRawGameController, controller, IGameController_outer ) - static HRESULT WINAPI controller_IRawGameController_get_AxisCount( IRawGameController *iface, INT32 *value ) { - struct controller *impl = impl_from_IRawGameController( iface ); + struct controller *impl = controller_from_IRawGameController( iface ); return IWineGameControllerProvider_get_AxisCount( impl->wine_provider, value ); }
static HRESULT WINAPI controller_IRawGameController_get_ButtonCount( IRawGameController *iface, INT32 *value ) { - struct controller *impl = impl_from_IRawGameController( iface ); + struct controller *impl = controller_from_IRawGameController( iface ); return IWineGameControllerProvider_get_ButtonCount( impl->wine_provider, value ); }
@@ -153,7 +143,7 @@ static HRESULT WINAPI controller_IRawGameController_get_ForceFeedbackMotors( IRa .iterable = &IID_IIterable_ForceFeedbackMotor, .iterator = &IID_IIterator_ForceFeedbackMotor, }; - struct controller *impl = impl_from_IRawGameController( iface ); + struct controller *impl = controller_from_IRawGameController( iface ); IVector_ForceFeedbackMotor *vector; IForceFeedbackMotor *motor; HRESULT hr; @@ -176,19 +166,19 @@ static HRESULT WINAPI controller_IRawGameController_get_ForceFeedbackMotors( IRa
static HRESULT WINAPI controller_IRawGameController_get_HardwareProductId( IRawGameController *iface, UINT16 *value ) { - struct controller *impl = impl_from_IRawGameController( iface ); + struct controller *impl = controller_from_IRawGameController( iface ); return IGameControllerProvider_get_HardwareProductId( impl->provider, value ); }
static HRESULT WINAPI controller_IRawGameController_get_HardwareVendorId( IRawGameController *iface, UINT16 *value ) { - struct controller *impl = impl_from_IRawGameController( iface ); + struct controller *impl = controller_from_IRawGameController( iface ); return IGameControllerProvider_get_HardwareVendorId( impl->provider, value ); }
static HRESULT WINAPI controller_IRawGameController_get_SwitchCount( IRawGameController *iface, INT32 *value ) { - struct controller *impl = impl_from_IRawGameController( iface ); + struct controller *impl = controller_from_IRawGameController( iface ); return IWineGameControllerProvider_get_SwitchCount( impl->wine_provider, value ); }
@@ -204,7 +194,7 @@ controller_IRawGameController_GetCurrentReading( IRawGameController *iface, UINT UINT32 switches_size, enum GameControllerSwitchPosition *switches, UINT32 axes_size, DOUBLE *axes, UINT64 *timestamp ) { - struct controller *impl = impl_from_IRawGameController( iface ); + struct controller *impl = controller_from_IRawGameController( iface ); WineGameControllerState state; HRESULT hr;
@@ -230,8 +220,6 @@ static HRESULT WINAPI controller_IRawGameController_GetSwitchKind( IRawGameContr
INTERFACE_VTBL_IRawGameController( controller_IRawGameController );
-DEFINE_IINSPECTABLE_OUTER( controller_IRawGameController2, IRawGameController2, controller, IGameController_outer ) - static HRESULT WINAPI controller_IRawGameController2_get_SimpleHapticsControllers( IRawGameController2 *iface, IVectorView_SimpleHapticsController **value ) @@ -280,10 +268,8 @@ struct controller_statics const WCHAR *class_name; };
-INTERFACE_IMPL_FROM( controller_statics, IActivationFactory ); -IUNKNOWN_IMPL_STATIC( controller_statics, IActivationFactory, IAgileObject, - IRawGameControllerStatics, ICustomGameControllerFactory, END ); -IINSPECTABLE_IMPL( controller_statics, IActivationFactory ); +INTERFACE_IMPL_STATIC_IActivationFactory( controller_statics, IAgileObject, IRawGameControllerStatics, + ICustomGameControllerFactory, END );
static HRESULT WINAPI controller_statics_ActivateInstance( IActivationFactory *iface, IInspectable **instance ) { @@ -292,14 +278,8 @@ static HRESULT WINAPI controller_statics_ActivateInstance( IActivationFactory *i }
INTERFACE_VTBL_IActivationFactory( controller_statics ); - -INTERFACE_IMPL_FROM_( controller_statics, IAgileObject, controller_statics_from_IAgileObject, IAgileObject_iface ); -IUNKNOWN_FWD( controller_statics, IAgileObject, IActivationFactory, &object->IActivationFactory_iface ); INTERFACE_VTBL_IAgileObject( controller_statics_IAgileObject );
-DEFINE_IINSPECTABLE( controller_statics_IRawGameControllerStatics, IRawGameControllerStatics, - controller_statics, IActivationFactory_iface ) - static HRESULT WINAPI controller_statics_IRawGameControllerStatics_add_RawGameControllerAdded( IRawGameControllerStatics *iface, IEventHandler_RawGameController *handler, @@ -354,7 +334,7 @@ static HRESULT WINAPI controller_statics_IRawGameControllerStatics_FromGameController( IRawGameControllerStatics *iface, IGameController *game_controller, IRawGameController **value ) { - struct controller_statics *impl = impl_from_IRawGameControllerStatics( iface ); + struct controller_statics *impl = controller_statics_from_IRawGameControllerStatics( iface ); IGameController *controller; HRESULT hr;
@@ -373,9 +353,6 @@ controller_statics_IRawGameControllerStatics_FromGameController( IRawGameControl
INTERFACE_VTBL_IRawGameControllerStatics( controller_statics_IRawGameControllerStatics );
-DEFINE_IINSPECTABLE( controller_statics_ICustomGameControllerFactory, ICustomGameControllerFactory, - controller_statics, IActivationFactory_iface ) - static HRESULT WINAPI controller_statics_ICustomGameControllerFactory_CreateGameController( ICustomGameControllerFactory *iface, IGameControllerProvider *provider, IInspectable **value ) diff --git a/include/wine/comimpl.h b/include/wine/comimpl.h index 44c5d7f204a..6b21fa4c16e 100644 --- a/include/wine/comimpl.h +++ b/include/wine/comimpl.h @@ -34,6 +34,9 @@ #define QUERY_INTERFACES_END( object, iid, out, ... ) #define QUERY_INTERFACES( object, iid, out, X, ... ) QUERY_INTERFACES_ ## X( object, iid, out, __VA_ARGS__ )
+#define INTERFACES_FWD_END( type, base, expr, ... ) +#define INTERFACES_FWD( type, base, expr, X, ... ) INTERFACES_FWD_ ## X( type, base, expr, __VA_ARGS__ ) + #define INTERFACE_IMPL_FROM( type, name ) INTERFACE_IMPL_FROM_( type, name, type ## _from_ ## name, name ## _iface ) #define INTERFACE_IMPL_FROM_( type, name, impl_from, iface_mem ) \ static struct type *impl_from( name *iface ) \