From: Rémi Bernon rbernon@codeweavers.com
--- dlls/windows.gaming.input/controller.c | 48 ++++++++------------------ include/wine/comimpl.h | 3 ++ 2 files changed, 18 insertions(+), 33 deletions(-)
diff --git a/dlls/windows.gaming.input/controller.c b/dlls/windows.gaming.input/controller.c index b05381a3967..0c6efe2714b 100644 --- a/dlls/windows.gaming.input/controller.c +++ b/dlls/windows.gaming.input/controller.c @@ -62,7 +62,7 @@ struct controller IGameControllerInputSink IGameControllerInputSink_iface; IRawGameController IRawGameController_iface; IRawGameController2 IRawGameController2_iface; - IGameController *IGameController_outer; + IInspectable *outer; const WCHAR *class_name; LONG refcount;
@@ -70,8 +70,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 ); @@ -79,9 +77,8 @@ static void controller_destroy( struct controller *impl ) free( impl ); }
-IUNKNOWN_IMPL( controller, IGameControllerImpl, IGameControllerInputSink, - IRawGameController, IRawGameController2, END ); -IINSPECTABLE_IMPL( controller, IGameControllerImpl ); +INTERFACE_IMPL_OUTER_IGameControllerImpl( controller, IGameControllerInputSink, + IRawGameController, IRawGameController2, END );
static HRESULT WINAPI controller_Initialize( IGameControllerImpl *iface, IGameController *outer, IGameControllerProvider *provider ) @@ -91,7 +88,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,8 +105,6 @@ static HRESULT WINAPI controller_Initialize( IGameControllerImpl *iface, IGameCo
INTERFACE_VTBL_IGameControllerImpl( controller );
-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 ); @@ -124,17 +119,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 ); }
@@ -148,7 +141,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; @@ -171,19 +164,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 ); }
@@ -199,7 +192,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;
@@ -225,8 +218,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 ) @@ -275,10 +266,8 @@ struct controller_statics const WCHAR *class_name; };
-INTERFACE_IMPL_FROM( controller_statics, IActivationFactory ); -IUNKNOWN_IMPL_STATIC( controller_statics, IActivationFactory, IRawGameControllerStatics, - ICustomGameControllerFactory, IAgileObject, END ); -IINSPECTABLE_IMPL( controller_statics, IActivationFactory ); +INTERFACE_IMPL_STATIC_IActivationFactory( controller_statics, IRawGameControllerStatics, + ICustomGameControllerFactory, IAgileObject, END );
static HRESULT WINAPI controller_statics_ActivateInstance( IActivationFactory *iface, IInspectable **instance ) { @@ -287,9 +276,7 @@ static HRESULT WINAPI controller_statics_ActivateInstance( IActivationFactory *i }
INTERFACE_VTBL_IActivationFactory( controller_statics ); - -DEFINE_IINSPECTABLE( controller_statics_IRawGameControllerStatics, IRawGameControllerStatics, - controller_statics, IActivationFactory_iface ) +INTERFACE_VTBL_IAgileObject( controller_statics_IAgileObject );
static HRESULT WINAPI controller_statics_IRawGameControllerStatics_add_RawGameControllerAdded( IRawGameControllerStatics *iface, @@ -345,7 +332,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;
@@ -364,9 +351,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 ) @@ -442,8 +426,6 @@ controller_statics_ICustomGameControllerFactory_OnGameControllerRemoved( ICustom
INTERFACE_VTBL_ICustomGameControllerFactory( controller_statics_ICustomGameControllerFactory );
-DEFINE_IAGILEOBJECT( controller_statics, IActivationFactory, &object->IActivationFactory_iface ); - static struct controller_statics controller_statics = { {&controller_statics_vtbl}, 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 ) \