From 907bb7ae1fe44468f3051527978949b7c90f63ba Mon Sep 17 00:00:00 2001 From: Maarten Lankhorst Date: Thu, 18 Sep 2008 17:56:05 +0200 Subject: [PATCH] quartz: Requeue in pullpin if request for data timed out. If the filter is paused, no additional data will be queued and VFW_E_TIMEOUT is legitimately returned. Don't make this a fatal error, but instead try again. If flushing the thing will still abort. --- dlls/quartz/pin.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/dlls/quartz/pin.c b/dlls/quartz/pin.c index 8f78fc3b441..56890150baa 100644 --- a/dlls/quartz/pin.c +++ b/dlls/quartz/pin.c @@ -1526,6 +1526,7 @@ static void CALLBACK PullPin_Thread_Process(PullPin *This) TRACE("Process sample\n"); + pSample = NULL; hr = IAsyncReader_WaitForNext(This->pReader, 10000, &pSample, &dwUser); /* Return an empty sample on error to the implementation in case it does custom parsing, so it knows it's gone */ @@ -1537,6 +1538,12 @@ static void CALLBACK PullPin_Thread_Process(PullPin *This) { /* FIXME: This is not well handled yet! */ ERR("Processing error: %x\n", hr); + if (hr == VFW_E_TIMEOUT) + { + assert(!pSample); + hr = S_OK; + continue; + } } if (pSample) -- 2.11.4.GIT