Fixing overlay crashes, for real

This commit is contained in:
Brad Davis 2017-07-06 18:01:26 -07:00 committed by Chris Collins
parent 0374d24b15
commit e22a3c6af9

View file

@ -307,6 +307,7 @@ void Overlays::deleteOverlay(OverlayID id) {
} }
#endif #endif
_overlaysToDelete.push_back(overlayToDelete); _overlaysToDelete.push_back(overlayToDelete);
emit overlayDeleted(id); emit overlayDeleted(id);
} }
@ -606,22 +607,16 @@ QSizeF Overlays::textSize(OverlayID id, const QString& text) {
return result; return result;
} }
Overlay::Pointer thisOverlay; Overlay::Pointer thisOverlay = getOverlay(id);
{
QMutexLocker locker(&_mutex);
thisOverlay = _overlaysHUD[id];
}
if (thisOverlay) { if (thisOverlay) {
if (auto textOverlay = std::dynamic_pointer_cast<TextOverlay>(thisOverlay)) { if (thisOverlay->is3D()) {
return textOverlay->textSize(text); if (auto text3dOverlay = std::dynamic_pointer_cast<Text3DOverlay>(thisOverlay)) {
} return text3dOverlay->textSize(text);
} else { }
{ } else {
QMutexLocker locker(&_mutex); if (auto textOverlay = std::dynamic_pointer_cast<TextOverlay>(thisOverlay)) {
thisOverlay = _overlaysWorld[id]; return textOverlay->textSize(text);
} }
if (auto text3dOverlay = std::dynamic_pointer_cast<Text3DOverlay>(thisOverlay)) {
return text3dOverlay->textSize(text);
} }
} }
return QSizeF(0.0f, 0.0f); return QSizeF(0.0f, 0.0f);