Re: quartz: Fix deadlock with transform filter, try 2
Am Montag, den 07.07.2008, 18:22 -0700 schrieb Maarten Lankhorst:
Reworks the code so that the lock is taking in the called procedures now.
+ InputPin *pin = (InputPin *)pTransformFilter->ppPins[0]; + + EnterCriticalSection(&pTransformFilter->csFilter); + if (pTransformFilter->state == State_Stopped) + { + LeaveCriticalSection(&pTransformFilter->csFilter); + return VFW_E_WRONG_STATE; + }
I have to admit that I don't know anything about quartz. Are you sure you may access pTransformFilter->ppPins[0] before taking the lock? Regards, Michael Karcher
Hi Michael, 2008/7/8 Michael Karcher <wine(a)mkarcher.dialup.fu-berlin.de>:
Am Montag, den 07.07.2008, 18:22 -0700 schrieb Maarten Lankhorst:
Reworks the code so that the lock is taking in the called procedures now.
+ InputPin *pin = (InputPin *)pTransformFilter->ppPins[0]; + + EnterCriticalSection(&pTransformFilter->csFilter); + if (pTransformFilter->state == State_Stopped) + { + LeaveCriticalSection(&pTransformFilter->csFilter); + return VFW_E_WRONG_STATE; + }
I have to admit that I don't know anything about quartz. Are you sure you may access pTransformFilter->ppPins[0] before taking the lock? It's safe, pins are allocated during construction, and the pointers themselves are not modified since. Doing operations on the pin requires the lock though.
Cheers, Maarten.
participants (2)
-
Maarten Lankhorst -
Michael Karcher