From 675d90c7082afc30d8ada3f59aaa7862f282b5a7 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Tue, 30 Aug 2022 12:09:07 -0700 Subject: [PATCH] Revert "wgi: refcount the delegate objects" This reverts commit ff233fe3060e51706937a7b366438403bce774a4. This doesn't compile cleanly with Visual Studio and I don't want to introduce any subtle issues because we're passing the wrong types of pointers to WGI functions. --- .../windows/SDL_windows_gaming_input.c | 29 +++++-------------- 1 file changed, 7 insertions(+), 22 deletions(-) diff --git a/src/joystick/windows/SDL_windows_gaming_input.c b/src/joystick/windows/SDL_windows_gaming_input.c index acb7ae747..a25261493 100644 --- a/src/joystick/windows/SDL_windows_gaming_input.c +++ b/src/joystick/windows/SDL_windows_gaming_input.c @@ -22,8 +22,6 @@ #ifdef SDL_JOYSTICK_WGI -#include "SDL_assert.h" -#include "SDL_atomic.h" #include "SDL_endian.h" #include "SDL_events.h" #include "../SDL_sysjoystick.h" @@ -209,11 +207,6 @@ SDL_IsXInputDevice(Uint16 vendor, Uint16 product) return SDL_FALSE; } -typedef struct RawGameControllerDelegate { - __FIEventHandler_1_Windows__CGaming__CInput__CRawGameController *vtbl; - SDL_atomic_t refcount; -} RawGameControllerDelegate; - static HRESULT STDMETHODCALLTYPE IEventHandler_CRawGameControllerVtbl_QueryInterface(__FIEventHandler_1_Windows__CGaming__CInput__CRawGameController * This, REFIID riid, void **ppvObject) { if (!ppvObject) { @@ -223,10 +216,9 @@ static HRESULT STDMETHODCALLTYPE IEventHandler_CRawGameControllerVtbl_QueryInter *ppvObject = NULL; if (WIN_IsEqualIID(riid, &IID_IUnknown) || WIN_IsEqualIID(riid, &IID_IAgileObject) || WIN_IsEqualIID(riid, &IID_IEventHandler_RawGameController)) { *ppvObject = This; - __x_ABI_CWindows_CGaming_CInput_CIRawGameControllerStatics_AddRef(This); return S_OK; } else if (WIN_IsEqualIID(riid, &IID_IMarshal)) { - /* This seems complicated. Let's hope it doesn't happen. */ + // This seems complicated. Let's hope it doesn't happen. return E_OUTOFMEMORY; } else { return E_NOINTERFACE; @@ -235,17 +227,12 @@ static HRESULT STDMETHODCALLTYPE IEventHandler_CRawGameControllerVtbl_QueryInter static ULONG STDMETHODCALLTYPE IEventHandler_CRawGameControllerVtbl_AddRef(__FIEventHandler_1_Windows__CGaming__CInput__CRawGameController * This) { - RawGameControllerDelegate *self = (RawGameControllerDelegate *)This; - return SDL_AtomicAdd(&self->refcount, 1) + 1; + return 1; } static ULONG STDMETHODCALLTYPE IEventHandler_CRawGameControllerVtbl_Release(__FIEventHandler_1_Windows__CGaming__CInput__CRawGameController * This) { - RawGameControllerDelegate *self = (RawGameControllerDelegate *)This; - int rc = SDL_AtomicAdd(&self->refcount, -1) - 1; - /* Should never free the static delegate objects */ - SDL_assert(rc > 0); - return rc; + return 1; } static HRESULT STDMETHODCALLTYPE IEventHandler_CRawGameControllerVtbl_InvokeAdded(__FIEventHandler_1_Windows__CGaming__CInput__CRawGameController * This, IInspectable *sender, __x_ABI_CWindows_CGaming_CInput_CIRawGameController *e) @@ -435,9 +422,8 @@ static __FIEventHandler_1_Windows__CGaming__CInput__CRawGameControllerVtbl contr IEventHandler_CRawGameControllerVtbl_Release, IEventHandler_CRawGameControllerVtbl_InvokeAdded }; -static RawGameControllerDelegate controller_added = { - { &controller_added_vtbl }, - { 1 } +static __FIEventHandler_1_Windows__CGaming__CInput__CRawGameController controller_added = { + &controller_added_vtbl }; static __FIEventHandler_1_Windows__CGaming__CInput__CRawGameControllerVtbl controller_removed_vtbl = { @@ -446,9 +432,8 @@ static __FIEventHandler_1_Windows__CGaming__CInput__CRawGameControllerVtbl contr IEventHandler_CRawGameControllerVtbl_Release, IEventHandler_CRawGameControllerVtbl_InvokeRemoved }; -static RawGameControllerDelegate controller_removed = { - { &controller_removed_vtbl }, - { 1 } +static __FIEventHandler_1_Windows__CGaming__CInput__CRawGameController controller_removed = { + &controller_removed_vtbl }; static int