- store the result of the Interlocked functions and use only this.
ULONG WINAPI IDirectMusicChordMapImpl_IUnknown_AddRef (LPUNKNOWN iface) {
ICOM_THIS_MULTI(IDirectMusicChordMapImpl, UnknownVtbl, iface);
- TRACE("(%p): AddRef from %ld\n", This, This->ref);
+ ULONG ref = InterlockedIncrement(&This->ref);
+
+ TRACE("(%p): AddRef from %ld\n", This, ref - 1);
DMCOMPOS_LockModule();
- return ++(This->ref);
+ return ref;
}
ULONG WINAPI IDirectMusicChordMapImpl_IUnknown_Release (LPUNKNOWN iface) {
ICOM_THIS_MULTI(IDirectMusicChordMapImpl, UnknownVtbl, iface);
- ULONG ref = --This->ref;
- TRACE("(%p): ReleaseRef to %ld\n", This, This->ref);
+ ULONG ref = InterlockedDecrement(&This->ref);
+
+ TRACE("(%p): ReleaseRef to %ld\n", This, ref);
if (ref == 0) {
HeapFree(GetProcessHeap(), 0, This);
ULONG WINAPI IDirectMusicChordMapTrack_IUnknown_AddRef (LPUNKNOWN iface) {
ICOM_THIS_MULTI(IDirectMusicChordMapTrack, UnknownVtbl, iface);
- TRACE("(%p): AddRef from %ld\n", This, This->ref);
+ ULONG ref = InterlockedIncrement(&This->ref);
+
+ TRACE("(%p): AddRef from %ld\n", This, ref - 1);
DMCOMPOS_LockModule();
- return ++(This->ref);
+ return ref;
}
ULONG WINAPI IDirectMusicChordMapTrack_IUnknown_Release (LPUNKNOWN iface) {
ICOM_THIS_MULTI(IDirectMusicChordMapTrack, UnknownVtbl, iface);
- ULONG ref = --This->ref;
- TRACE("(%p): ReleaseRef to %ld\n", This, This->ref);
+ ULONG ref = InterlockedDecrement(&This->ref);
+
+ TRACE("(%p): ReleaseRef to %ld\n", This, ref);
if (ref == 0) {
HeapFree(GetProcessHeap(), 0, This);
ULONG WINAPI IDirectMusicComposerImpl_AddRef (LPDIRECTMUSICCOMPOSER iface) {
IDirectMusicComposerImpl *This = (IDirectMusicComposerImpl *)iface;
- TRACE("(%p): AddRef from %ld\n", This, This->ref);
+ ULONG ref = InterlockedIncrement(&This->ref);
+
+ TRACE("(%p): AddRef from %ld\n", This, ref - 1);
DMCOMPOS_LockModule();
- return ++(This->ref);
+ return ref;
}
ULONG WINAPI IDirectMusicComposerImpl_Release (LPDIRECTMUSICCOMPOSER iface) {
IDirectMusicComposerImpl *This = (IDirectMusicComposerImpl *)iface;
- ULONG ref = --This->ref;
- TRACE("(%p): ReleaseRef to %ld\n", This, This->ref);
+ ULONG ref = InterlockedDecrement(&This->ref);
+
+ TRACE("(%p): ReleaseRef to %ld\n", This, ref);
if (ref == 0) {
HeapFree(GetProcessHeap(), 0, This);
ULONG WINAPI IDirectMusicSignPostTrack_IUnknown_AddRef (LPUNKNOWN iface) {
ICOM_THIS_MULTI(IDirectMusicSignPostTrack, UnknownVtbl, iface);
- TRACE("(%p): AddRef from %ld\n", This, This->ref);
+ ULONG ref = InterlockedIncrement(&This->ref);
+
+ TRACE("(%p): AddRef from %ld\n", This, ref - 1);
DMCOMPOS_LockModule();
- return ++(This->ref);
+ return ref;
}
ULONG WINAPI IDirectMusicSignPostTrack_IUnknown_Release (LPUNKNOWN iface) {
ICOM_THIS_MULTI(IDirectMusicSignPostTrack, UnknownVtbl, iface);
- ULONG ref = --This->ref;
- TRACE("(%p): ReleaseRef to %ld\n", This, This->ref);
+ ULONG ref = InterlockedDecrement(&This->ref);
+
+ TRACE("(%p): ReleaseRef to %ld\n", This, ref);
if (ref == 0) {
HeapFree(GetProcessHeap(), 0, This);