- use Interlocked* functions in AddRef and Release.
authorPaul Vriens <Paul.Vriens@xs4all.nl>
Wed, 12 Jan 2005 19:26:42 +0000 (19:26 +0000)
committerAlexandre Julliard <julliard@winehq.org>
Wed, 12 Jan 2005 19:26:42 +0000 (19:26 +0000)
- store the result of the Interlocked functions and use only this.

dlls/dmcompos/chordmap.c
dlls/dmcompos/chordmaptrack.c
dlls/dmcompos/composer.c
dlls/dmcompos/signposttrack.c

index 7510fa739a604c4e194f9daadbdd4c12fac231ea..aef51cdee80b6285aae8ba71445f121e034e47fe 100644 (file)
@@ -54,17 +54,20 @@ HRESULT WINAPI IDirectMusicChordMapImpl_IUnknown_QueryInterface (LPUNKNOWN iface
 
 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);
index 8fe1c63ab34153abb3ab9d78f90e9cebab657b4c..4b1123030c2fbce1000428a25082403f85452a31 100644 (file)
@@ -51,17 +51,20 @@ HRESULT WINAPI IDirectMusicChordMapTrack_IUnknown_QueryInterface (LPUNKNOWN ifac
 
 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);
index 30dfb072cc803e4c3015166d24a7ec3920348422..5c066fc686f991349dcb24b127f2e77d5df92ff5 100644 (file)
@@ -38,17 +38,20 @@ HRESULT WINAPI IDirectMusicComposerImpl_QueryInterface (LPDIRECTMUSICCOMPOSER if
 
 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);
index 104cef18e6b47ee65e268eb409b89303e7c8db08..b88cd373a37991875f3065af7d2a14d844304d77 100644 (file)
@@ -51,17 +51,20 @@ HRESULT WINAPI IDirectMusicSignPostTrack_IUnknown_QueryInterface (LPUNKNOWN ifac
 
 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);