static ULONG WINAPI IDirectMusicPortImpl_Release (LPDIRECTMUSICPORT iface) { IDirectMusicPortImpl *This = (IDirectMusicPortImpl *)iface; ULONG refCount = InterlockedDecrement(&This->ref); TRACE("(%p)->(ref before=%u)\n", This, refCount + 1); if (!refCount) { HeapFree(GetProcessHeap(), 0, This); } DMUSIC_UnlockModule(); return refCount; }
static ULONG WINAPI IDirectMusicDownloadImpl_Release(IDirectMusicDownload *iface) { IDirectMusicDownloadImpl *This = impl_from_IDirectMusicDownload(iface); ULONG ref = InterlockedDecrement(&This->ref); TRACE("(%p)->(): new ref = %u\n", iface, ref); if (!ref) HeapFree(GetProcessHeap(), 0, This); DMUSIC_UnlockModule(); return ref; }
static ULONG WINAPI IDirectMusicInstrumentImpl_IUnknown_Release (LPUNKNOWN iface) { ICOM_THIS_MULTI(IDirectMusicInstrumentImpl, UnknownVtbl, iface); ULONG refCount = InterlockedDecrement(&This->ref); TRACE("(%p)->(ref before=%u)\n", This, refCount + 1); if (!refCount) { HeapFree(GetProcessHeap(), 0, This); } DMUSIC_UnlockModule(); return refCount; }
static ULONG WINAPI IDirectMusicBufferImpl_Release(LPDIRECTMUSICBUFFER iface) { IDirectMusicBufferImpl *This = impl_from_IDirectMusicBuffer(iface); ULONG ref = InterlockedDecrement(&This->ref); TRACE("(%p)->(): new ref = %u\n", iface, ref); if (!ref) { HeapFree(GetProcessHeap(), 0, This->data); HeapFree(GetProcessHeap(), 0, This); DMUSIC_UnlockModule(); } return ref; }
static ULONG WINAPI IReferenceClockImpl_Release(IReferenceClock *iface) { IReferenceClockImpl *This = impl_from_IReferenceClock(iface); ULONG refCount = InterlockedDecrement(&This->ref); TRACE("(%p)->(ref before=%u)\n", This, refCount + 1); if (!refCount) { HeapFree(GetProcessHeap(), 0, This); } DMUSIC_UnlockModule(); return refCount; }
static ULONG WINAPI IDirectMusicDownloadedInstrumentImpl_Release(LPDIRECTMUSICDOWNLOADEDINSTRUMENT iface) { IDirectMusicDownloadedInstrumentImpl *This = impl_from_IDirectMusicDownloadedInstrument(iface); ULONG ref = InterlockedDecrement(&This->ref); TRACE("(%p)->(): new ref = %u\n", iface, ref); if (!ref) { HeapFree(GetProcessHeap(), 0, This->data); HeapFree(GetProcessHeap(), 0, This); DMUSIC_UnlockModule(); } return ref; }
static ULONG WINAPI IDirectMusic8Impl_Release(LPDIRECTMUSIC8 iface) { IDirectMusic8Impl *This = impl_from_IDirectMusic8(iface); ULONG ref = InterlockedDecrement(&This->ref); TRACE("(%p)->(): new ref = %u\n", This, ref); if (!ref) { HeapFree(GetProcessHeap(), 0, This->system_ports); HeapFree(GetProcessHeap(), 0, This->ppPorts); HeapFree(GetProcessHeap(), 0, This); } DMUSIC_UnlockModule(); return ref; }
static ULONG WINAPI SynthPortImpl_IDirectMusicPort_Release(LPDIRECTMUSICPORT iface) { SynthPortImpl *This = impl_from_SynthPortImpl_IDirectMusicPort(iface); ULONG ref = InterlockedDecrement(&This->ref); TRACE("(%p)->(): new ref = %u\n", This, ref); if (!ref) { IDirectMusicSynth_Activate(This->synth, FALSE); IDirectMusicSynth_Close(This->synth); IDirectMusicSynth_Release(This->synth); IDirectMusicSynthSink_Release(This->synth_sink); IReferenceClock_Release(This->pLatencyClock); HeapFree(GetProcessHeap(), 0, This); } DMUSIC_UnlockModule(); return ref; }
static ULONG WINAPI IDirectMusicInstrumentImpl_Release(LPDIRECTMUSICINSTRUMENT iface) { IDirectMusicInstrumentImpl *This = impl_from_IDirectMusicInstrument(iface); ULONG ref = InterlockedDecrement(&This->ref); TRACE("(%p)->(): new ref = %u\n", iface, ref); if (!ref) { ULONG i; HeapFree(GetProcessHeap(), 0, This->regions); for (i = 0; i < This->nb_articulations; i++) HeapFree(GetProcessHeap(), 0, This->articulations->connections); HeapFree(GetProcessHeap(), 0, This->articulations); HeapFree(GetProcessHeap(), 0, This); } DMUSIC_UnlockModule(); return ref; }