diff options
author | Giulio Camuffo <giulio.camuffo@kdab.com> | 2019-04-02 11:24:33 +0200 |
---|---|---|
committer | Paul Lemire <paul.lemire@kdab.com> | 2019-04-02 14:16:50 +0000 |
commit | 03234c59244ed77cb8eea5fca6b93741f40ca59d (patch) | |
tree | 690e114792e5bb1f037999550d810cd3953f21a3 | |
parent | 59d26d3e9411150c7ed0fb0cf68d48988c8dbf59 (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.cpp | 7 |
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(); |