- Use Interlocked* functions in AddRef and Release.
- Store the result of the Interlocked functions and use only this.
This commit is contained in:
parent
eb23257b7d
commit
7b6b24d868
|
@ -51,14 +51,19 @@ HRESULT WINAPI ID3DXBufferImpl_QueryInterface(LPD3DXBUFFER iface, REFIID riid, L
|
||||||
|
|
||||||
ULONG WINAPI ID3DXBufferImpl_AddRef(LPD3DXBUFFER iface) {
|
ULONG WINAPI ID3DXBufferImpl_AddRef(LPD3DXBUFFER iface) {
|
||||||
ID3DXBufferImpl *This = (ID3DXBufferImpl *)iface;
|
ID3DXBufferImpl *This = (ID3DXBufferImpl *)iface;
|
||||||
TRACE("(%p) : AddRef from %ld\n", This, This->ref);
|
ULONG ref = InterlockedIncrement(&This->ref);
|
||||||
return ++(This->ref);
|
|
||||||
|
TRACE("(%p) : AddRef from %ld\n", This, ref - 1);
|
||||||
|
|
||||||
|
return ref;
|
||||||
}
|
}
|
||||||
|
|
||||||
ULONG WINAPI ID3DXBufferImpl_Release(LPD3DXBUFFER iface) {
|
ULONG WINAPI ID3DXBufferImpl_Release(LPD3DXBUFFER iface) {
|
||||||
ID3DXBufferImpl *This = (ID3DXBufferImpl *)iface;
|
ID3DXBufferImpl *This = (ID3DXBufferImpl *)iface;
|
||||||
ULONG ref = --This->ref;
|
ULONG ref = InterlockedDecrement(&This->ref);
|
||||||
TRACE("(%p) : ReleaseRef to %ld\n", This, This->ref);
|
|
||||||
|
TRACE("(%p) : ReleaseRef to %ld\n", This, ref);
|
||||||
|
|
||||||
if (ref == 0) {
|
if (ref == 0) {
|
||||||
HeapFree(GetProcessHeap(), 0, This->buffer);
|
HeapFree(GetProcessHeap(), 0, This->buffer);
|
||||||
HeapFree(GetProcessHeap(), 0, This);
|
HeapFree(GetProcessHeap(), 0, This);
|
||||||
|
|
|
@ -56,14 +56,19 @@ HRESULT WINAPI IDirectMusicBandImpl_IUnknown_QueryInterface (LPUNKNOWN iface, RE
|
||||||
|
|
||||||
ULONG WINAPI IDirectMusicBandImpl_IUnknown_AddRef (LPUNKNOWN iface) {
|
ULONG WINAPI IDirectMusicBandImpl_IUnknown_AddRef (LPUNKNOWN iface) {
|
||||||
ICOM_THIS_MULTI(IDirectMusicBandImpl, UnknownVtbl, iface);
|
ICOM_THIS_MULTI(IDirectMusicBandImpl, UnknownVtbl, iface);
|
||||||
TRACE("(%p) : AddRef from %ld\n", This, This->ref);
|
ULONG ref = InterlockedIncrement(&This->ref);
|
||||||
return ++(This->ref);
|
|
||||||
|
TRACE("(%p) : AddRef from %ld\n", This, ref - 1);
|
||||||
|
|
||||||
|
return ref;
|
||||||
}
|
}
|
||||||
|
|
||||||
ULONG WINAPI IDirectMusicBandImpl_IUnknown_Release (LPUNKNOWN iface) {
|
ULONG WINAPI IDirectMusicBandImpl_IUnknown_Release (LPUNKNOWN iface) {
|
||||||
ICOM_THIS_MULTI(IDirectMusicBandImpl, UnknownVtbl, iface);
|
ICOM_THIS_MULTI(IDirectMusicBandImpl, UnknownVtbl, iface);
|
||||||
ULONG ref = --This->ref;
|
ULONG ref = InterlockedDecrement(&This->ref);
|
||||||
TRACE("(%p) : ReleaseRef to %ld\n", This, This->ref);
|
|
||||||
|
TRACE("(%p) : ReleaseRef to %ld\n", This, ref);
|
||||||
|
|
||||||
if (ref == 0) {
|
if (ref == 0) {
|
||||||
HeapFree(GetProcessHeap(), 0, This);
|
HeapFree(GetProcessHeap(), 0, This);
|
||||||
}
|
}
|
||||||
|
|
|
@ -51,14 +51,19 @@ HRESULT WINAPI IDirectMusicBandTrack_IUnknown_QueryInterface (LPUNKNOWN iface, R
|
||||||
|
|
||||||
ULONG WINAPI IDirectMusicBandTrack_IUnknown_AddRef (LPUNKNOWN iface) {
|
ULONG WINAPI IDirectMusicBandTrack_IUnknown_AddRef (LPUNKNOWN iface) {
|
||||||
ICOM_THIS_MULTI(IDirectMusicBandTrack, UnknownVtbl, iface);
|
ICOM_THIS_MULTI(IDirectMusicBandTrack, UnknownVtbl, iface);
|
||||||
TRACE("(%p) : AddRef from %ld\n", This, This->ref);
|
ULONG ref = InterlockedIncrement(&This->ref);
|
||||||
return ++(This->ref);
|
|
||||||
|
TRACE("(%p) : AddRef from %ld\n", This, ref - 1);
|
||||||
|
|
||||||
|
return ref;
|
||||||
}
|
}
|
||||||
|
|
||||||
ULONG WINAPI IDirectMusicBandTrack_IUnknown_Release (LPUNKNOWN iface) {
|
ULONG WINAPI IDirectMusicBandTrack_IUnknown_Release (LPUNKNOWN iface) {
|
||||||
ICOM_THIS_MULTI(IDirectMusicBandTrack, UnknownVtbl, iface);
|
ICOM_THIS_MULTI(IDirectMusicBandTrack, UnknownVtbl, iface);
|
||||||
ULONG ref = --This->ref;
|
ULONG ref = InterlockedDecrement(&This->ref);
|
||||||
TRACE("(%p) : ReleaseRef to %ld\n", This, This->ref);
|
|
||||||
|
TRACE("(%p) : ReleaseRef to %ld\n", This, ref);
|
||||||
|
|
||||||
if (ref == 0) {
|
if (ref == 0) {
|
||||||
HeapFree(GetProcessHeap(), 0, This);
|
HeapFree(GetProcessHeap(), 0, This);
|
||||||
}
|
}
|
||||||
|
|
|
@ -39,13 +39,13 @@ static HRESULT WINAPI BandCF_QueryInterface(LPCLASSFACTORY iface,REFIID riid,LPV
|
||||||
|
|
||||||
static ULONG WINAPI BandCF_AddRef(LPCLASSFACTORY iface) {
|
static ULONG WINAPI BandCF_AddRef(LPCLASSFACTORY iface) {
|
||||||
IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
|
IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
|
||||||
return ++(This->ref);
|
return InterlockedIncrement(&This->ref);
|
||||||
}
|
}
|
||||||
|
|
||||||
static ULONG WINAPI BandCF_Release(LPCLASSFACTORY iface) {
|
static ULONG WINAPI BandCF_Release(LPCLASSFACTORY iface) {
|
||||||
IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
|
IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
|
||||||
/* static class, won't be freed */
|
/* static class, won't be freed */
|
||||||
return --(This->ref);
|
return InterlockedDecrement(&This->ref);
|
||||||
}
|
}
|
||||||
|
|
||||||
static HRESULT WINAPI BandCF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pOuter, REFIID riid, LPVOID *ppobj) {
|
static HRESULT WINAPI BandCF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pOuter, REFIID riid, LPVOID *ppobj) {
|
||||||
|
@ -84,13 +84,13 @@ static HRESULT WINAPI BandTrackCF_QueryInterface(LPCLASSFACTORY iface,REFIID rii
|
||||||
|
|
||||||
static ULONG WINAPI BandTrackCF_AddRef(LPCLASSFACTORY iface) {
|
static ULONG WINAPI BandTrackCF_AddRef(LPCLASSFACTORY iface) {
|
||||||
IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
|
IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
|
||||||
return ++(This->ref);
|
return InterlockedIncrement(&This->ref);
|
||||||
}
|
}
|
||||||
|
|
||||||
static ULONG WINAPI BandTrackCF_Release(LPCLASSFACTORY iface) {
|
static ULONG WINAPI BandTrackCF_Release(LPCLASSFACTORY iface) {
|
||||||
IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
|
IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
|
||||||
/* static class, won't be freed */
|
/* static class, won't be freed */
|
||||||
return --(This->ref);
|
return InterlockedDecrement(&This->ref);
|
||||||
}
|
}
|
||||||
|
|
||||||
static HRESULT WINAPI BandTrackCF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pOuter, REFIID riid, LPVOID *ppobj) {
|
static HRESULT WINAPI BandTrackCF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pOuter, REFIID riid, LPVOID *ppobj) {
|
||||||
|
|
Loading…
Reference in New Issue