From 03234c59244ed77cb8eea5fca6b93741f40ca59d Mon Sep 17 00:00:00 2001 From: Giulio Camuffo Date: Tue, 2 Apr 2019 11:24:33 +0200 Subject: Fix assert when using QScreenRayCaster with multiple viewports The mouse can't be in all viewports at once so the ray will not be valid for all the viewports. Cherry-picked from b68ebfde583dc5cec7ae60f752f1e05371e57dba Change-Id: Id196f043c4f670cd2106993fc5c0a9dd468a491e Reviewed-by: Paul Lemire --- src/render/jobs/raycastingjob.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/render/jobs/raycastingjob.cpp b/src/render/jobs/raycastingjob.cpp index e76b9fe8d..7d3af34cc 100644 --- a/src/render/jobs/raycastingjob.cpp +++ b/src/render/jobs/raycastingjob.cpp @@ -164,8 +164,11 @@ bool RayCastingJob::runHelper() rays.back().transform(*pair.first->worldTransform()); break; case QAbstractRayCasterPrivate::ScreenScapeRayCaster: - for (const PickingUtils::ViewportCameraAreaDetails &vca : vcaDetails) - rays << rayForViewportAndCamera(vca, nullptr, pair.second->position()); + for (const PickingUtils::ViewportCameraAreaDetails &vca : vcaDetails) { + auto ray = rayForViewportAndCamera(vca, nullptr, pair.second->position()); + if (ray.isValid()) + rays << ray; + } break; default: Q_UNREACHABLE(); -- cgit v1.2.3