dinput: Stop and unload effect when freeing it.

This commit is contained in:
Vitaliy Margolen 2008-07-05 22:24:43 -06:00 committed by Alexandre Julliard
parent 85e2aa1d8a
commit 91036a04a2

View File

@ -724,17 +724,6 @@ static HRESULT WINAPI LinuxInputEffectImpl_SetParameters(
return DI_OK;
}
static ULONG WINAPI LinuxInputEffectImpl_Release(
LPDIRECTINPUTEFFECT iface)
{
LinuxInputEffectImpl *This = (LinuxInputEffectImpl *)iface;
ULONG ref = InterlockedDecrement(&(This->ref));
if (ref == 0)
HeapFree(GetProcessHeap(), 0, This);
return ref;
}
static HRESULT WINAPI LinuxInputEffectImpl_Stop(
LPDIRECTINPUTEFFECT iface)
{
@ -768,6 +757,20 @@ static HRESULT WINAPI LinuxInputEffectImpl_Unload(
return DI_OK;
}
static ULONG WINAPI LinuxInputEffectImpl_Release(LPDIRECTINPUTEFFECT iface)
{
LinuxInputEffectImpl *This = (LinuxInputEffectImpl *)iface;
ULONG ref = InterlockedDecrement(&(This->ref));
if (ref == 0)
{
LinuxInputEffectImpl_Stop(iface);
LinuxInputEffectImpl_Unload(iface);
HeapFree(GetProcessHeap(), 0, This);
}
return ref;
}
/******************************************************************************
* LinuxInputEffect
*/