From 7eb79440739f08de76df7da5e5e09243dd8ff8ac Mon Sep 17 00:00:00 2001 From: Maarten Lankhorst Date: Wed, 9 Jul 2008 13:00:43 -0700 Subject: [PATCH] quartz: Make parser start even if some of the pins arent connected --- dlls/quartz/parser.c | 10 +++++++--- 1 files changed, 7 insertions(+), 3 deletions(-) diff --git a/dlls/quartz/parser.c b/dlls/quartz/parser.c index 0848e84..6883e47 100644 --- a/dlls/quartz/parser.c +++ b/dlls/quartz/parser.c @@ -277,7 +277,8 @@ HRESULT WINAPI Parser_Pause(IBaseFilter * iface) EnterCriticalSection(&This->csFilter); } - This->state = State_Paused; + if (SUCCEEDED(hr)) + This->state = State_Paused; LeaveCriticalSection(&This->csFilter); LeaveCriticalSection(&pin->thread_lock); @@ -298,6 +299,8 @@ HRESULT WINAPI Parser_Run(IBaseFilter * iface, REFERENCE_TIME tStart) EnterCriticalSection(&pin->thread_lock); EnterCriticalSection(&This->csFilter); { + HRESULT hr_any = VFW_E_NOT_CONNECTED; + if (This->state == State_Running || This->state == State_Paused) { This->state = State_Running; @@ -311,10 +314,11 @@ HRESULT WINAPI Parser_Run(IBaseFilter * iface, REFERENCE_TIME tStart) for (i = 1; i < (This->cStreams + 1); i++) { hr = OutputPin_CommitAllocator((OutputPin *)This->ppPins[i]); - if (FAILED(hr)) - break; + if (SUCCEEDED(hr)) + hr_any = hr; } + hr_any = hr; if (SUCCEEDED(hr)) { LeaveCriticalSection(&This->csFilter); -- 1.5.4.1