- Fix logic in Stream_fnRelease, refcount should be decremented before
the test for 0. - Use Interlocked* functions in Stream_fnRelease . - Store the result of the Interlocked functions and this in the TRACE.
This commit is contained in:
parent
e9ca9f1955
commit
fea45b1493
|
@ -160,10 +160,11 @@ static ULONG WINAPI ACMStream_fnAddRef(IAVIStream *iface)
|
||||||
static ULONG WINAPI ACMStream_fnRelease(IAVIStream* iface)
|
static ULONG WINAPI ACMStream_fnRelease(IAVIStream* iface)
|
||||||
{
|
{
|
||||||
IAVIStreamImpl *This = (IAVIStreamImpl *)iface;
|
IAVIStreamImpl *This = (IAVIStreamImpl *)iface;
|
||||||
|
ULONG ref = InterlockedDecrement(&This->ref);
|
||||||
|
|
||||||
TRACE("(%p) -> %ld\n", iface, This->ref - 1);
|
TRACE("(%p) -> %ld\n", iface, ref);
|
||||||
|
|
||||||
if (This->ref == 0) {
|
if (ref == 0) {
|
||||||
/* destruct */
|
/* destruct */
|
||||||
if (This->has != NULL) {
|
if (This->has != NULL) {
|
||||||
if (This->acmStreamHdr.fdwStatus & ACMSTREAMHEADER_STATUSF_PREPARED)
|
if (This->acmStreamHdr.fdwStatus & ACMSTREAMHEADER_STATUSF_PREPARED)
|
||||||
|
@ -202,7 +203,7 @@ static ULONG WINAPI ACMStream_fnRelease(IAVIStream* iface)
|
||||||
if (This->pStream != NULL)
|
if (This->pStream != NULL)
|
||||||
IAVIStream_Release(This->pStream);
|
IAVIStream_Release(This->pStream);
|
||||||
|
|
||||||
return --This->ref;
|
return ref;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* lParam1: PAVISTREAM
|
/* lParam1: PAVISTREAM
|
||||||
|
|
|
@ -176,10 +176,11 @@ static ULONG WINAPI ICMStream_fnAddRef(IAVIStream *iface)
|
||||||
static ULONG WINAPI ICMStream_fnRelease(IAVIStream* iface)
|
static ULONG WINAPI ICMStream_fnRelease(IAVIStream* iface)
|
||||||
{
|
{
|
||||||
IAVIStreamImpl *This = (IAVIStreamImpl *)iface;
|
IAVIStreamImpl *This = (IAVIStreamImpl *)iface;
|
||||||
|
ULONG ref = InterlockedDecrement(&This->ref);
|
||||||
|
|
||||||
TRACE("(%p) -> %ld\n", iface, This->ref - 1);
|
TRACE("(%p) -> %ld\n", iface, ref);
|
||||||
|
|
||||||
if (This->ref == 0) {
|
if (ref == 0) {
|
||||||
/* destruct */
|
/* destruct */
|
||||||
if (This->pg != NULL) {
|
if (This->pg != NULL) {
|
||||||
AVIStreamGetFrameClose(This->pg);
|
AVIStreamGetFrameClose(This->pg);
|
||||||
|
@ -224,7 +225,7 @@ static ULONG WINAPI ICMStream_fnRelease(IAVIStream* iface)
|
||||||
if (This->pStream != NULL)
|
if (This->pStream != NULL)
|
||||||
IAVIStream_Release(This->pStream);
|
IAVIStream_Release(This->pStream);
|
||||||
|
|
||||||
return --This->ref;
|
return ref;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* lParam1: PAVISTREAM
|
/* lParam1: PAVISTREAM
|
||||||
|
|
Loading…
Reference in New Issue