From 91bab737cbb1b50e89856a3061cbdb2d53af1e23 Mon Sep 17 00:00:00 2001 From: Andy Shaw Date: Fri, 20 Apr 2018 14:25:03 +0200 Subject: Directshow: Don't report failure for stream source with no video output The video output is set after it has handled this doRender() call which means that it would report an error with the media, even though it was renderable. This approach ensures that it does not report an error and will correctly report as loaded in this case. Change-Id: I6ec6abb82dcdd8f122e198ff6a765cf83931ee10 Reviewed-by: VaL Doroshchuk Reviewed-by: Oliver Wolff --- src/plugins/directshow/player/directshowplayerservice.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/plugins/directshow/player/directshowplayerservice.cpp b/src/plugins/directshow/player/directshowplayerservice.cpp index d7d190c6a..b975677a6 100644 --- a/src/plugins/directshow/player/directshowplayerservice.cpp +++ b/src/plugins/directshow/player/directshowplayerservice.cpp @@ -521,9 +521,9 @@ void DirectShowPlayerService::doRender(QMutexLocker *locker) peer->Release(); } else { locker->unlock(); - HRESULT hr; - if (SUCCEEDED(hr = graph->RenderEx( - pin, /*AM_RENDEREX_RENDERTOEXISTINGRENDERERS*/ 1, 0))) { + HRESULT hr = graph->RenderEx(pin, /*AM_RENDEREX_RENDERTOEXISTINGRENDERERS*/ 1, 0); + // Do not return an error if no video output is set yet. + if (SUCCEEDED(hr) || !(m_executedTasks & SetVideoOutput)) { rendered = true; } else if (renderHr == S_OK || renderHr == VFW_E_NO_DECOMPRESSOR){ renderHr = hr; -- cgit v1.2.1