Merge pull request #10909 from jherico/overlay_crashes

Fixing overlay crashes, for real
This commit is contained in:
Seth Alves 2017-07-07 07:11:52 -07:00 committed by GitHub
commit 81cc46beb4

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);