[PATCH 5/5] strmbase: Get rid of the "pCritSec" member of BasePin.
Zebediah Figura
z.figura12 at gmail.com
Thu Sep 5 19:02:16 CDT 2019
Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
---
dlls/quartz/dsoundrender.c | 4 +--
dlls/quartz/parser.c | 20 ++++++-------
dlls/quartz/pin.c | 49 ++++++++++++++++----------------
dlls/strmbase/pin.c | 50 ++++++++++++++++-----------------
dlls/strmbase/renderer.c | 8 +++---
dlls/winegstreamer/gstdemux.c | 14 ++++-----
dlls/wineqtdecoder/qtsplitter.c | 18 ++++++------
include/wine/strmbase.h | 1 -
8 files changed, 78 insertions(+), 86 deletions(-)
diff --git a/dlls/quartz/dsoundrender.c b/dlls/quartz/dsoundrender.c
index 3478f95f513..29b6492adb9 100644
--- a/dlls/quartz/dsoundrender.c
+++ b/dlls/quartz/dsoundrender.c
@@ -505,9 +505,9 @@ static HRESULT WINAPI DSoundRender_BreakConnect(BaseRenderer* iface)
if (This->threadid) {
PostThreadMessageW(This->threadid, WM_APP, 0, 0);
- LeaveCriticalSection(This->renderer.sink.pin.pCritSec);
+ LeaveCriticalSection(&This->renderer.filter.csFilter);
WaitForSingleObject(This->advisethread, INFINITE);
- EnterCriticalSection(This->renderer.sink.pin.pCritSec);
+ EnterCriticalSection(&This->renderer.filter.csFilter);
CloseHandle(This->advisethread);
}
if (This->dsbuffer)
diff --git a/dlls/quartz/parser.c b/dlls/quartz/parser.c
index 309f26fb9ee..5b09f70758c 100644
--- a/dlls/quartz/parser.c
+++ b/dlls/quartz/parser.c
@@ -552,9 +552,9 @@ static HRESULT WINAPI Parser_OutputPin_Connect(IPin * iface, IPin * pReceivePin,
ParserImpl *parser = impl_from_IBaseFilter(&This->pin.pin.filter->IBaseFilter_iface);
/* Set the allocator to our input pin's */
- EnterCriticalSection(This->pin.pin.pCritSec);
+ EnterCriticalSection(&parser->filter.csFilter);
This->alloc = parser->pInputPin->pAlloc;
- LeaveCriticalSection(This->pin.pin.pCritSec);
+ LeaveCriticalSection(&parser->filter.csFilter);
return BaseOutputPinImpl_Connect(iface, pReceivePin, pmt);
}
@@ -623,22 +623,22 @@ static HRESULT WINAPI Parser_PullPin_Disconnect(IPin * iface)
TRACE("()\n");
EnterCriticalSection(&This->thread_lock);
- EnterCriticalSection(This->pin.pCritSec);
+ EnterCriticalSection(&This->pin.filter->csFilter);
{
if (This->pin.pConnectedTo)
{
FILTER_STATE state;
ParserImpl *Parser = impl_from_IBaseFilter(&This->pin.filter->IBaseFilter_iface);
- LeaveCriticalSection(This->pin.pCritSec);
+ LeaveCriticalSection(&This->pin.filter->csFilter);
hr = IBaseFilter_GetState(&This->pin.filter->IBaseFilter_iface, INFINITE, &state);
- EnterCriticalSection(This->pin.pCritSec);
+ EnterCriticalSection(&This->pin.filter->csFilter);
if (SUCCEEDED(hr) && (state == State_Stopped) && SUCCEEDED(Parser->fnDisconnect(Parser)))
{
- LeaveCriticalSection(This->pin.pCritSec);
+ LeaveCriticalSection(&This->pin.filter->csFilter);
PullPin_Disconnect(iface);
- EnterCriticalSection(This->pin.pCritSec);
+ EnterCriticalSection(&This->pin.filter->csFilter);
hr = Parser_RemoveOutputPins(impl_from_IBaseFilter(&This->pin.filter->IBaseFilter_iface));
}
else
@@ -647,7 +647,7 @@ static HRESULT WINAPI Parser_PullPin_Disconnect(IPin * iface)
else
hr = S_FALSE;
}
- LeaveCriticalSection(This->pin.pCritSec);
+ LeaveCriticalSection(&This->pin.filter->csFilter);
LeaveCriticalSection(&This->thread_lock);
return hr;
@@ -664,9 +664,9 @@ static HRESULT WINAPI Parser_PullPin_ReceiveConnection(IPin * iface, IPin * pRec
{
BasePin *This = (BasePin *)iface;
- EnterCriticalSection(This->pCritSec);
+ EnterCriticalSection(&This->filter->csFilter);
Parser_RemoveOutputPins(impl_from_IBaseFilter(&This->filter->IBaseFilter_iface));
- LeaveCriticalSection(This->pCritSec);
+ LeaveCriticalSection(&This->filter->csFilter);
}
return hr;
diff --git a/dlls/quartz/pin.c b/dlls/quartz/pin.c
index bcdd1c94735..bf31799641d 100644
--- a/dlls/quartz/pin.c
+++ b/dlls/quartz/pin.c
@@ -174,7 +174,6 @@ static HRESULT PullPin_Init(const IPinVtbl *PullPin_Vtbl, struct strmbase_filter
/* Common attributes */
pPinImpl->pin.IPin_iface.lpVtbl = PullPin_Vtbl;
pPinImpl->pin.pConnectedTo = NULL;
- pPinImpl->pin.pCritSec = &filter->csFilter;
wcscpy(pPinImpl->pin.name, name);
pPinImpl->pin.dir = PINDIR_INPUT;
pPinImpl->pin.filter = filter;
@@ -244,7 +243,7 @@ HRESULT WINAPI PullPin_ReceiveConnection(IPin * iface, IPin * pReceivePin, const
TRACE("(%p/%p)->(%p, %p)\n", This, iface, pReceivePin, pmt);
dump_AM_MEDIA_TYPE(pmt);
- EnterCriticalSection(This->pin.pCritSec);
+ EnterCriticalSection(&This->pin.filter->csFilter);
if (!This->pin.pConnectedTo)
{
ALLOCATOR_PROPERTIES props;
@@ -323,7 +322,7 @@ HRESULT WINAPI PullPin_ReceiveConnection(IPin * iface, IPin * pReceivePin, const
}
else
hr = VFW_E_ALREADY_CONNECTED;
- LeaveCriticalSection(This->pin.pCritSec);
+ LeaveCriticalSection(&This->pin.filter->csFilter);
return hr;
}
@@ -382,7 +381,7 @@ static void PullPin_Flush(PullPin *This)
if (This->pReader)
{
/* Do not allow state to change while flushing */
- EnterCriticalSection(This->pin.pCritSec);
+ EnterCriticalSection(&This->pin.filter->csFilter);
/* Flush outstanding samples */
IAsyncReader_BeginFlush(This->pReader);
@@ -404,7 +403,7 @@ static void PullPin_Flush(PullPin *This)
IAsyncReader_EndFlush(This->pReader);
- LeaveCriticalSection(This->pin.pCritSec);
+ LeaveCriticalSection(&This->pin.filter->csFilter);
}
}
@@ -435,9 +434,9 @@ static void PullPin_Thread_Process(PullPin *This)
if (FAILED(hr))
ERR("Request error: %x\n", hr);
- EnterCriticalSection(This->pin.pCritSec);
+ EnterCriticalSection(&This->pin.filter->csFilter);
SetEvent(This->hEventStateChanged);
- LeaveCriticalSection(This->pin.pCritSec);
+ LeaveCriticalSection(&This->pin.filter->csFilter);
if (SUCCEEDED(hr))
do
@@ -505,19 +504,19 @@ static void PullPin_Thread_Pause(PullPin *This)
{
PullPin_Flush(This);
- EnterCriticalSection(This->pin.pCritSec);
+ EnterCriticalSection(&This->pin.filter->csFilter);
This->state = Req_Sleepy;
SetEvent(This->hEventStateChanged);
- LeaveCriticalSection(This->pin.pCritSec);
+ LeaveCriticalSection(&This->pin.filter->csFilter);
}
static void PullPin_Thread_Stop(PullPin *This)
{
TRACE("(%p)->()\n", This);
- EnterCriticalSection(This->pin.pCritSec);
+ EnterCriticalSection(&This->pin.filter->csFilter);
SetEvent(This->hEventStateChanged);
- LeaveCriticalSection(This->pin.pCritSec);
+ LeaveCriticalSection(&This->pin.filter->csFilter);
IPin_Release(&This->pin.IPin_iface);
@@ -562,7 +561,7 @@ static HRESULT PullPin_InitProcessing(PullPin * This)
DWORD dwThreadId;
WaitForSingleObject(This->hEventStateChanged, INFINITE);
- EnterCriticalSection(This->pin.pCritSec);
+ EnterCriticalSection(&This->pin.filter->csFilter);
assert(!This->hThread);
assert(This->state == Req_Die);
@@ -584,7 +583,7 @@ static HRESULT PullPin_InitProcessing(PullPin * This)
SetEvent(This->hEventStateChanged);
/* If assert fails, that means a command was not processed before the thread previously terminated */
}
- LeaveCriticalSection(This->pin.pCritSec);
+ LeaveCriticalSection(&This->pin.filter->csFilter);
}
TRACE(" -- %x\n", hr);
@@ -625,7 +624,7 @@ HRESULT PullPin_PauseProcessing(PullPin * This)
PullPin_WaitForStateChange(This, INFINITE);
- EnterCriticalSection(This->pin.pCritSec);
+ EnterCriticalSection(&This->pin.filter->csFilter);
assert(!This->stop_playback);
assert(This->state == Req_Run|| This->state == Req_Sleepy);
@@ -652,7 +651,7 @@ HRESULT PullPin_PauseProcessing(PullPin * This)
} while(pSample);
}
- LeaveCriticalSection(This->pin.pCritSec);
+ LeaveCriticalSection(&This->pin.filter->csFilter);
}
return S_OK;
@@ -700,10 +699,10 @@ HRESULT WINAPI PullPin_EndOfStream(IPin * iface)
TRACE("(%p)->()\n", iface);
- EnterCriticalSection(This->pin.pCritSec);
+ EnterCriticalSection(&This->pin.filter->csFilter);
hr = SendFurther( iface, deliver_endofstream, NULL, NULL );
SetEvent(This->hEventStateChanged);
- LeaveCriticalSection(This->pin.pCritSec);
+ LeaveCriticalSection(&This->pin.filter->csFilter);
return hr;
}
@@ -713,11 +712,11 @@ HRESULT WINAPI PullPin_BeginFlush(IPin * iface)
PullPin *This = impl_PullPin_from_IPin(iface);
TRACE("(%p)->()\n", This);
- EnterCriticalSection(This->pin.pCritSec);
+ EnterCriticalSection(&This->pin.filter->csFilter);
{
SendFurther( iface, deliver_beginflush, NULL, NULL );
}
- LeaveCriticalSection(This->pin.pCritSec);
+ LeaveCriticalSection(&This->pin.filter->csFilter);
EnterCriticalSection(&This->thread_lock);
{
@@ -733,11 +732,11 @@ HRESULT WINAPI PullPin_BeginFlush(IPin * iface)
}
LeaveCriticalSection(&This->thread_lock);
- EnterCriticalSection(This->pin.pCritSec);
+ EnterCriticalSection(&This->pin.filter->csFilter);
{
This->fnCleanProc(This->pUserData);
}
- LeaveCriticalSection(This->pin.pCritSec);
+ LeaveCriticalSection(&This->pin.filter->csFilter);
return S_OK;
}
@@ -749,9 +748,9 @@ HRESULT WINAPI PullPin_EndFlush(IPin * iface)
TRACE("(%p)->()\n", iface);
/* Send further first: Else a race condition might terminate processing early */
- EnterCriticalSection(This->pin.pCritSec);
+ EnterCriticalSection(&This->pin.filter->csFilter);
SendFurther( iface, deliver_endflush, NULL, NULL );
- LeaveCriticalSection(This->pin.pCritSec);
+ LeaveCriticalSection(&This->pin.filter->csFilter);
EnterCriticalSection(&This->thread_lock);
{
@@ -779,7 +778,7 @@ HRESULT WINAPI PullPin_Disconnect(IPin *iface)
TRACE("()\n");
- EnterCriticalSection(This->pin.pCritSec);
+ EnterCriticalSection(&This->pin.filter->csFilter);
{
if (FAILED(hr = IMemAllocator_Decommit(This->pAlloc)))
ERR("Allocator decommit failed with error %x. Possible memory leak\n", hr);
@@ -797,7 +796,7 @@ HRESULT WINAPI PullPin_Disconnect(IPin *iface)
else
hr = S_FALSE;
}
- LeaveCriticalSection(This->pin.pCritSec);
+ LeaveCriticalSection(&This->pin.filter->csFilter);
WaitForSingleObject(This->hThread, INFINITE);
CloseHandle(This->hThread);
diff --git a/dlls/strmbase/pin.c b/dlls/strmbase/pin.c
index fbb9451d563..6f1f96c9d53 100644
--- a/dlls/strmbase/pin.c
+++ b/dlls/strmbase/pin.c
@@ -184,7 +184,7 @@ HRESULT WINAPI BasePinImpl_Disconnect(IPin * iface)
TRACE("(%p)->()\n", This);
- EnterCriticalSection(This->pCritSec);
+ EnterCriticalSection(&This->filter->csFilter);
{
if (This->pConnectedTo)
{
@@ -197,7 +197,7 @@ HRESULT WINAPI BasePinImpl_Disconnect(IPin * iface)
else
hr = S_FALSE;
}
- LeaveCriticalSection(This->pCritSec);
+ LeaveCriticalSection(&This->filter->csFilter);
return hr;
}
@@ -209,7 +209,7 @@ HRESULT WINAPI BasePinImpl_ConnectedTo(IPin * iface, IPin ** ppPin)
TRACE("(%p)->(%p)\n", This, ppPin);
- EnterCriticalSection(This->pCritSec);
+ EnterCriticalSection(&This->filter->csFilter);
{
if (This->pConnectedTo)
{
@@ -223,7 +223,7 @@ HRESULT WINAPI BasePinImpl_ConnectedTo(IPin * iface, IPin ** ppPin)
*ppPin = NULL;
}
}
- LeaveCriticalSection(This->pCritSec);
+ LeaveCriticalSection(&This->filter->csFilter);
return hr;
}
@@ -235,7 +235,7 @@ HRESULT WINAPI BasePinImpl_ConnectionMediaType(IPin * iface, AM_MEDIA_TYPE * pmt
TRACE("(%p)->(%p)\n", This, pmt);
- EnterCriticalSection(This->pCritSec);
+ EnterCriticalSection(&This->filter->csFilter);
{
if (This->pConnectedTo)
{
@@ -248,7 +248,7 @@ HRESULT WINAPI BasePinImpl_ConnectionMediaType(IPin * iface, AM_MEDIA_TYPE * pmt
hr = VFW_E_NOT_CONNECTED;
}
}
- LeaveCriticalSection(This->pCritSec);
+ LeaveCriticalSection(&This->filter->csFilter);
return hr;
}
@@ -384,7 +384,7 @@ HRESULT WINAPI BaseOutputPinImpl_Connect(IPin * iface, IPin * pReceivePin, const
* catches the obvious case */
assert(pReceivePin != iface);
- EnterCriticalSection(This->pin.pCritSec);
+ EnterCriticalSection(&This->pin.filter->csFilter);
{
/* if we have been a specific type to connect with, then we can either connect
* with that or fail. We cannot choose different AM_MEDIA_TYPE */
@@ -447,7 +447,7 @@ HRESULT WINAPI BaseOutputPinImpl_Connect(IPin * iface, IPin * pReceivePin, const
} /* if not found */
} /* if negotiate media type */
} /* if succeeded */
- LeaveCriticalSection(This->pin.pCritSec);
+ LeaveCriticalSection(&This->pin.filter->csFilter);
TRACE(" -- %x\n", hr);
return hr;
@@ -466,7 +466,7 @@ HRESULT WINAPI BaseOutputPinImpl_Disconnect(IPin * iface)
TRACE("(%p)->()\n", This);
- EnterCriticalSection(This->pin.pCritSec);
+ EnterCriticalSection(&This->pin.filter->csFilter);
{
if (This->pMemInputPin)
{
@@ -484,7 +484,7 @@ HRESULT WINAPI BaseOutputPinImpl_Disconnect(IPin * iface)
else
hr = S_FALSE;
}
- LeaveCriticalSection(This->pin.pCritSec);
+ LeaveCriticalSection(&This->pin.filter->csFilter);
return hr;
}
@@ -542,7 +542,7 @@ HRESULT WINAPI BaseOutputPinImpl_Deliver(BaseOutputPin *This, IMediaSample * pSa
PIN_INFO pinInfo;
HRESULT hr;
- EnterCriticalSection(This->pin.pCritSec);
+ EnterCriticalSection(&This->pin.filter->csFilter);
{
if (!This->pin.pConnectedTo || !This->pMemInputPin)
hr = VFW_E_NOT_CONNECTED;
@@ -556,7 +556,7 @@ HRESULT WINAPI BaseOutputPinImpl_Deliver(BaseOutputPin *This, IMediaSample * pSa
hr = IPin_QueryPinInfo(This->pin.pConnectedTo, &pinInfo);
}
}
- LeaveCriticalSection(This->pin.pCritSec);
+ LeaveCriticalSection(&This->pin.filter->csFilter);
if (SUCCEEDED(hr))
{
@@ -582,14 +582,14 @@ HRESULT WINAPI BaseOutputPinImpl_Active(BaseOutputPin *This)
TRACE("(%p)->()\n", This);
- EnterCriticalSection(This->pin.pCritSec);
+ EnterCriticalSection(&This->pin.filter->csFilter);
{
if (!This->pin.pConnectedTo || !This->pMemInputPin)
hr = VFW_E_NOT_CONNECTED;
else
hr = IMemAllocator_Commit(This->pAllocator);
}
- LeaveCriticalSection(This->pin.pCritSec);
+ LeaveCriticalSection(&This->pin.filter->csFilter);
TRACE("--> %08x\n", hr);
return hr;
@@ -602,14 +602,14 @@ HRESULT WINAPI BaseOutputPinImpl_Inactive(BaseOutputPin *This)
TRACE("(%p)->()\n", This);
- EnterCriticalSection(This->pin.pCritSec);
+ EnterCriticalSection(&This->pin.filter->csFilter);
{
if (!This->pin.pConnectedTo || !This->pMemInputPin)
hr = VFW_E_NOT_CONNECTED;
else
hr = IMemAllocator_Decommit(This->pAllocator);
}
- LeaveCriticalSection(This->pin.pCritSec);
+ LeaveCriticalSection(&This->pin.filter->csFilter);
TRACE("--> %08x\n", hr);
return hr;
@@ -709,7 +709,6 @@ void strmbase_source_init(BaseOutputPin *pin, const IPinVtbl *vtbl, struct strmb
{
memset(pin, 0, sizeof(*pin));
pin->pin.IPin_iface.lpVtbl = vtbl;
- pin->pin.pCritSec = &filter->csFilter;
pin->pin.dRate = 1.0;
pin->pin.filter = filter;
pin->pin.dir = PINDIR_OUTPUT;
@@ -779,7 +778,7 @@ HRESULT WINAPI BaseInputPinImpl_ReceiveConnection(IPin * iface, IPin * pReceiveP
TRACE("(%p)->(%p, %p)\n", This, pReceivePin, pmt);
dump_AM_MEDIA_TYPE(pmt);
- EnterCriticalSection(This->pin.pCritSec);
+ EnterCriticalSection(&This->pin.filter->csFilter);
{
if (This->pin.pConnectedTo)
hr = VFW_E_ALREADY_CONNECTED;
@@ -806,7 +805,7 @@ HRESULT WINAPI BaseInputPinImpl_ReceiveConnection(IPin * iface, IPin * pReceiveP
IPin_AddRef(pReceivePin);
}
}
- LeaveCriticalSection(This->pin.pCritSec);
+ LeaveCriticalSection(&This->pin.filter->csFilter);
return hr;
}
@@ -823,12 +822,12 @@ HRESULT WINAPI BaseInputPinImpl_EndOfStream(IPin * iface)
TRACE("(%p)->()\n", This);
- EnterCriticalSection(This->pin.pCritSec);
+ EnterCriticalSection(&This->pin.filter->csFilter);
if (This->flushing)
hr = S_FALSE;
else
This->end_of_stream = TRUE;
- LeaveCriticalSection(This->pin.pCritSec);
+ LeaveCriticalSection(&This->pin.filter->csFilter);
if (hr == S_OK)
hr = SendFurther( iface, deliver_endofstream, NULL, NULL );
@@ -846,11 +845,11 @@ HRESULT WINAPI BaseInputPinImpl_BeginFlush(IPin * iface)
HRESULT hr;
TRACE("(%p) semi-stub\n", This);
- EnterCriticalSection(This->pin.pCritSec);
+ EnterCriticalSection(&This->pin.filter->csFilter);
This->flushing = TRUE;
hr = SendFurther( iface, deliver_beginflush, NULL, NULL );
- LeaveCriticalSection(This->pin.pCritSec);
+ LeaveCriticalSection(&This->pin.filter->csFilter);
return hr;
}
@@ -866,11 +865,11 @@ HRESULT WINAPI BaseInputPinImpl_EndFlush(IPin * iface)
HRESULT hr;
TRACE("(%p)->()\n", This);
- EnterCriticalSection(This->pin.pCritSec);
+ EnterCriticalSection(&This->pin.filter->csFilter);
This->flushing = This->end_of_stream = FALSE;
hr = SendFurther( iface, deliver_endflush, NULL, NULL );
- LeaveCriticalSection(This->pin.pCritSec);
+ LeaveCriticalSection(&This->pin.filter->csFilter);
return hr;
}
@@ -1037,7 +1036,6 @@ void strmbase_sink_init(BaseInputPin *pin, const IPinVtbl *vtbl, struct strmbase
{
memset(pin, 0, sizeof(*pin));
pin->pin.IPin_iface.lpVtbl = vtbl;
- pin->pin.pCritSec = &filter->csFilter;
pin->pin.dRate = 1.0;
pin->pin.filter = filter;
pin->pin.dir = PINDIR_INPUT;
diff --git a/dlls/strmbase/renderer.c b/dlls/strmbase/renderer.c
index a74c975b9a9..21083526a8c 100644
--- a/dlls/strmbase/renderer.c
+++ b/dlls/strmbase/renderer.c
@@ -52,14 +52,14 @@ static HRESULT WINAPI BaseRenderer_InputPin_ReceiveConnection(IPin *iface, IPin
TRACE("iface %p, peer %p, mt %p.\n", iface, peer, mt);
- EnterCriticalSection(filter->sink.pin.pCritSec);
+ EnterCriticalSection(&filter->filter.csFilter);
hr = BaseInputPinImpl_ReceiveConnection(iface, peer, mt);
if (SUCCEEDED(hr))
{
if (filter->pFuncsTable->pfnCompleteConnect)
hr = filter->pFuncsTable->pfnCompleteConnect(filter, peer);
}
- LeaveCriticalSection(filter->sink.pin.pCritSec);
+ LeaveCriticalSection(&filter->filter.csFilter);
return hr;
}
@@ -71,7 +71,7 @@ static HRESULT WINAPI BaseRenderer_InputPin_Disconnect(IPin * iface)
TRACE("iface %p.\n", iface);
- EnterCriticalSection(filter->sink.pin.pCritSec);
+ EnterCriticalSection(&filter->filter.csFilter);
hr = BasePinImpl_Disconnect(iface);
if (SUCCEEDED(hr))
{
@@ -79,7 +79,7 @@ static HRESULT WINAPI BaseRenderer_InputPin_Disconnect(IPin * iface)
hr = filter->pFuncsTable->pfnBreakConnect(filter);
}
BaseRendererImpl_ClearPendingSample(filter);
- LeaveCriticalSection(filter->sink.pin.pCritSec);
+ LeaveCriticalSection(&filter->filter.csFilter);
return hr;
}
diff --git a/dlls/winegstreamer/gstdemux.c b/dlls/winegstreamer/gstdemux.c
index 8a85f290a12..e687569039b 100644
--- a/dlls/winegstreamer/gstdemux.c
+++ b/dlls/winegstreamer/gstdemux.c
@@ -1283,7 +1283,6 @@ IUnknown * CALLBACK Gstreamer_Splitter_create(IUnknown *outer, HRESULT *phr)
lstrcpynW(This->pInputPin.pin.name, wcsInputPinName, ARRAY_SIZE(This->pInputPin.pin.name));
This->pInputPin.pin.IPin_iface.lpVtbl = &GST_InputPin_Vtbl;
This->pInputPin.pin.pConnectedTo = NULL;
- This->pInputPin.pin.pCritSec = &This->filter.csFilter;
ZeroMemory(&This->pInputPin.pin.mtCurrent, sizeof(AM_MEDIA_TYPE));
*phr = S_OK;
@@ -1740,14 +1739,12 @@ static HRESULT WINAPI GSTOutPin_DecideAllocator(BaseOutputPin *base, IMemInputPi
static void free_source_pin(GSTOutPin *pin)
{
- EnterCriticalSection(pin->pin.pin.pCritSec);
if (pin->pin.pin.pConnectedTo)
{
if (SUCCEEDED(IMemAllocator_Decommit(pin->pin.pAllocator)))
IPin_Disconnect(pin->pin.pin.pConnectedTo);
IPin_Disconnect(&pin->pin.pin.IPin_iface);
}
- LeaveCriticalSection(pin->pin.pin.pCritSec);
if (pin->their_src)
{
@@ -1877,7 +1874,7 @@ static HRESULT WINAPI GSTInPin_ReceiveConnection(IPin *iface, IPin *pReceivePin,
mark_wine_thread();
- EnterCriticalSection(This->pin.pCritSec);
+ EnterCriticalSection(&filter->filter.csFilter);
if (!This->pin.pConnectedTo) {
ALLOCATOR_PROPERTIES props;
IMemAllocator *pAlloc = NULL;
@@ -1936,13 +1933,14 @@ static HRESULT WINAPI GSTInPin_ReceiveConnection(IPin *iface, IPin *pReceivePin,
TRACE("Size: %i\n", props.cbBuffer);
} else
hr = VFW_E_ALREADY_CONNECTED;
- LeaveCriticalSection(This->pin.pCritSec);
+ LeaveCriticalSection(&filter->filter.csFilter);
return hr;
}
static HRESULT WINAPI GSTInPin_Disconnect(IPin *iface)
{
GSTInPin *This = impl_sink_from_IPin(iface);
+ GSTImpl *filter = impl_from_strmbase_filter(This->pin.filter);
HRESULT hr;
FILTER_STATE state;
@@ -1950,8 +1948,8 @@ static HRESULT WINAPI GSTInPin_Disconnect(IPin *iface)
mark_wine_thread();
- hr = IBaseFilter_GetState(&This->pin.filter->IBaseFilter_iface, INFINITE, &state);
- EnterCriticalSection(This->pin.pCritSec);
+ hr = IBaseFilter_GetState(&filter->filter.IBaseFilter_iface, INFINITE, &state);
+ EnterCriticalSection(&filter->filter.csFilter);
if (This->pin.pConnectedTo) {
GSTImpl *Parser = impl_from_strmbase_filter(This->pin.filter);
@@ -1965,7 +1963,7 @@ static HRESULT WINAPI GSTInPin_Disconnect(IPin *iface)
hr = VFW_E_NOT_STOPPED;
} else
hr = S_FALSE;
- LeaveCriticalSection(This->pin.pCritSec);
+ LeaveCriticalSection(&filter->filter.csFilter);
return hr;
}
diff --git a/dlls/wineqtdecoder/qtsplitter.c b/dlls/wineqtdecoder/qtsplitter.c
index 1d845a9e8fb..61ebeab2387 100644
--- a/dlls/wineqtdecoder/qtsplitter.c
+++ b/dlls/wineqtdecoder/qtsplitter.c
@@ -317,7 +317,6 @@ IUnknown * CALLBACK QTSplitter_create(IUnknown *outer, HRESULT *phr)
lstrcpynW(This->pInputPin.pin.name, wcsInputPinName, ARRAY_SIZE(This->pInputPin.pin.name));
This->pInputPin.pin.IPin_iface.lpVtbl = &QT_InputPin_Vtbl;
This->pInputPin.pin.pConnectedTo = NULL;
- This->pInputPin.pin.pCritSec = &This->filter.csFilter;
SourceSeeking_Init(&This->sourceSeeking, &QT_Seeking_Vtbl, QTSplitter_ChangeStop, QTSplitter_ChangeStart, QTSplitter_ChangeRate, &This->filter.csFilter);
@@ -778,14 +777,12 @@ static const IBaseFilterVtbl QT_Vtbl = {
static void free_source_pin(QTOutPin *pin)
{
- EnterCriticalSection(pin->pin.pin.pCritSec);
if (pin->pin.pin.pConnectedTo)
{
if (SUCCEEDED(IMemAllocator_Decommit(pin->pin.pAllocator)))
IPin_Disconnect(pin->pin.pin.pConnectedTo);
IPin_Disconnect(&pin->pin.pin.IPin_iface);
}
- LeaveCriticalSection(pin->pin.pin.pCritSec);
DeleteMediaType(pin->pmt);
strmbase_source_cleanup(&pin->pin);
@@ -1044,7 +1041,7 @@ static HRESULT WINAPI QTInPin_ReceiveConnection(IPin *iface, IPin *pReceivePin,
TRACE("(%p/%p)->(%p, %p)\n", This, iface, pReceivePin, pmt);
- EnterCriticalSection(This->pin.pCritSec);
+ EnterCriticalSection(&filter->filter.csFilter);
This->pReader = NULL;
if (This->pin.pConnectedTo)
@@ -1061,19 +1058,19 @@ static HRESULT WINAPI QTInPin_ReceiveConnection(IPin *iface, IPin *pReceivePin,
if (FAILED(hr))
{
- LeaveCriticalSection(This->pin.pCritSec);
+ LeaveCriticalSection(&filter->filter.csFilter);
return hr;
}
hr = IPin_QueryInterface(pReceivePin, &IID_IAsyncReader, (LPVOID *)&This->pReader);
if (FAILED(hr))
{
- LeaveCriticalSection(This->pin.pCritSec);
+ LeaveCriticalSection(&filter->filter.csFilter);
TRACE("Input source is not an AsyncReader\n");
return hr;
}
- LeaveCriticalSection(This->pin.pCritSec);
+ LeaveCriticalSection(&filter->filter.csFilter);
EnterCriticalSection(&filter->filter.csFilter);
hr = QT_Process_Movie(filter);
if (FAILED(hr))
@@ -1129,11 +1126,12 @@ static HRESULT WINAPI QTInPin_Disconnect(IPin *iface)
{
HRESULT hr;
QTInPin *This = impl_from_IPin(iface);
+ QTSplitter *filter = impl_from_strmbase_filter(This->pin.filter);
FILTER_STATE state;
TRACE("()\n");
- hr = IBaseFilter_GetState(&This->pin.filter->IBaseFilter_iface, INFINITE, &state);
- EnterCriticalSection(This->pin.pCritSec);
+ hr = IBaseFilter_GetState(&filter->filter.IBaseFilter_iface, INFINITE, &state);
+ EnterCriticalSection(&filter->filter.csFilter);
if (This->pin.pConnectedTo)
{
QTSplitter *Parser = impl_from_strmbase_filter(This->pin.filter);
@@ -1151,7 +1149,7 @@ static HRESULT WINAPI QTInPin_Disconnect(IPin *iface)
}
else
hr = S_FALSE;
- LeaveCriticalSection(This->pin.pCritSec);
+ LeaveCriticalSection(&filter->filter.csFilter);
return hr;
}
diff --git a/include/wine/strmbase.h b/include/wine/strmbase.h
index 08e8b7cbb5d..b2903999155 100644
--- a/include/wine/strmbase.h
+++ b/include/wine/strmbase.h
@@ -31,7 +31,6 @@ void WINAPI DeleteMediaType(AM_MEDIA_TYPE * pMediaType);
typedef struct BasePin
{
IPin IPin_iface;
- CRITICAL_SECTION *pCritSec;
struct strmbase_filter *filter;
PIN_DIRECTION dir;
WCHAR name[128];
--
2.22.0
More information about the wine-devel
mailing list