From 79a990af479ab7c8710a4f12ab002e7748c4ffe4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20K=C3=A4berich?= Date: Thu, 10 Dec 2020 13:23:25 +0100 Subject: [PATCH] Proper cleanup of delta marker connections --- Software/PC_Application/Traces/tracemarker.cpp | 16 ++++++++++------ Software/PC_Application/Traces/tracemarker.h | 1 + 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/Software/PC_Application/Traces/tracemarker.cpp b/Software/PC_Application/Traces/tracemarker.cpp index 42f0087..47d6528 100644 --- a/Software/PC_Application/Traces/tracemarker.cpp +++ b/Software/PC_Application/Traces/tracemarker.cpp @@ -351,6 +351,15 @@ void TraceMarker::checkDeltaMarker() } } +void TraceMarker::deltaDeleted() +{ + // the delta marker of this marker has been deleted, find new match + delta = nullptr; + qDebug() << "assigned delta deleted"; + assignDeltaMarker(bestDeltaCandidate()); + update(); +} + std::set TraceMarker::getSupportedTypes() { set supported; @@ -447,12 +456,7 @@ void TraceMarker::assignDeltaMarker(TraceMarker *m) // this marker has to be updated when the delta marker changes connect(delta, &TraceMarker::rawDataChanged, this, &TraceMarker::update); connect(delta, &TraceMarker::domainChanged, this, &TraceMarker::checkDeltaMarker); - connect(delta, &TraceMarker::deleted, [=](){ - delta = nullptr; - qDebug() << "assigned delta deleted"; - assignDeltaMarker(bestDeltaCandidate()); - update(); - }); + connect(delta, &TraceMarker::deleted, this, &TraceMarker::deltaDeleted); } emit assignedDeltaChanged(this); } diff --git a/Software/PC_Application/Traces/tracemarker.h b/Software/PC_Application/Traces/tracemarker.h index f41d191..5d9700d 100644 --- a/Software/PC_Application/Traces/tracemarker.h +++ b/Software/PC_Application/Traces/tracemarker.h @@ -92,6 +92,7 @@ private slots: void traceDataChanged(); void updateSymbol(); void checkDeltaMarker(); + void deltaDeleted(); signals: void rawDataChanged(); void domainChanged();