Merge pull request #392 from AdenKoperczak/fix_AlertLayer_circular_reference

Fix alert layer circular reference
This commit is contained in:
Dan Paulat 2025-03-12 23:10:06 -05:00 committed by GitHub
commit 9e5890d95e
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -157,8 +157,8 @@ public:
const std::shared_ptr<AlertLayerHandler::SegmentRecord>& segmentRecord);
void ConnectAlertHandlerSignals();
void ConnectSignals();
void HandleGeoLinesEvent(std::shared_ptr<gl::draw::GeoLineDrawItem>& di,
QEvent* ev);
void HandleGeoLinesEvent(std::weak_ptr<gl::draw::GeoLineDrawItem>& di,
QEvent* ev);
void HandleGeoLinesHover(std::shared_ptr<gl::draw::GeoLineDrawItem>& di,
const QPointF& mouseGlobalPos);
void ScheduleRefresh();
@ -633,11 +633,12 @@ void AlertLayer::Impl::AddLine(std::shared_ptr<gl::draw::GeoLines>& geoLines,
std::placeholders::_1,
std::placeholders::_2));
const std::weak_ptr<gl::draw::GeoLineDrawItem> diWeak = di;
gl::draw::GeoLines::RegisterEventHandler(
di,
std::bind(&AlertLayer::Impl::HandleGeoLinesEvent,
this,
di,
diWeak,
std::placeholders::_1));
}
}
@ -691,8 +692,14 @@ void AlertLayer::Impl::UpdateLines()
}
void AlertLayer::Impl::HandleGeoLinesEvent(
std::shared_ptr<gl::draw::GeoLineDrawItem>& di, QEvent* ev)
std::weak_ptr<gl::draw::GeoLineDrawItem>& diWeak, QEvent* ev)
{
const std::shared_ptr<gl::draw::GeoLineDrawItem> di = diWeak.lock();
if (di == nullptr)
{
return;
}
switch (ev->type())
{
case QEvent::Type::MouseButtonPress: