From f8b76d65ab3963912ee4ebb730b0790ff5dca469 Mon Sep 17 00:00:00 2001 From: Brad Davis Date: Thu, 6 Jul 2017 18:01:26 -0700 Subject: [PATCH] Fixing overlay crashes, for real --- interface/src/ui/overlays/Overlays.cpp | 25 ++++++++++--------------- 1 file changed, 10 insertions(+), 15 deletions(-) diff --git a/interface/src/ui/overlays/Overlays.cpp b/interface/src/ui/overlays/Overlays.cpp index 399c730dbd..bcf9897dd8 100644 --- a/interface/src/ui/overlays/Overlays.cpp +++ b/interface/src/ui/overlays/Overlays.cpp @@ -307,6 +307,7 @@ void Overlays::deleteOverlay(OverlayID id) { } #endif + _overlaysToDelete.push_back(overlayToDelete); emit overlayDeleted(id); } @@ -606,22 +607,16 @@ QSizeF Overlays::textSize(OverlayID id, const QString& text) { return result; } - Overlay::Pointer thisOverlay; - { - QMutexLocker locker(&_mutex); - thisOverlay = _overlaysHUD[id]; - } + Overlay::Pointer thisOverlay = getOverlay(id); if (thisOverlay) { - if (auto textOverlay = std::dynamic_pointer_cast(thisOverlay)) { - return textOverlay->textSize(text); - } - } else { - { - QMutexLocker locker(&_mutex); - thisOverlay = _overlaysWorld[id]; - } - if (auto text3dOverlay = std::dynamic_pointer_cast(thisOverlay)) { - return text3dOverlay->textSize(text); + if (thisOverlay->is3D()) { + if (auto text3dOverlay = std::dynamic_pointer_cast(thisOverlay)) { + return text3dOverlay->textSize(text); + } + } else { + if (auto textOverlay = std::dynamic_pointer_cast(thisOverlay)) { + return textOverlay->textSize(text); + } } } return QSizeF(0.0f, 0.0f);