summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGiulio Camuffo <giulio.camuffo@kdab.com>2019-04-02 11:24:33 +0200
committerPaul Lemire <paul.lemire@kdab.com>2019-04-02 14:16:50 +0000
commit03234c59244ed77cb8eea5fca6b93741f40ca59d (patch)
tree690e114792e5bb1f037999550d810cd3953f21a3
parent59d26d3e9411150c7ed0fb0cf68d48988c8dbf59 (diff)
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 <paul.lemire@kdab.com>
-rw-r--r--src/render/jobs/raycastingjob.cpp7
1 files changed, 5 insertions, 2 deletions
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();