Skip to content

Commit 2403fbc

Browse files
m0dBSwiftb0y
authored andcommitted
properly remove and delete unused nodes
1 parent 9f0ccfe commit 2403fbc

File tree

2 files changed

+7
-2
lines changed

2 files changed

+7
-2
lines changed

src/waveform/renderers/allshader/waveformrendermark.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -393,8 +393,9 @@ void allshader::WaveformRenderMark::update() {
393393

394394
// Remove unused nodes
395395
while (pRangeChild) {
396+
auto* pNextChild = static_cast<GeometryNode*>(pRangeChild->nextSibling());
396397
auto pNode = m_pRangeNodesParent->detachChildNode(pRangeChild);
397-
pRangeChild = static_cast<GeometryNode*>(pRangeChild->nextSibling());
398+
pRangeChild = pNextChild;
398399
}
399400

400401
m_waveformRenderer->setMarkPositions(marksOnScreen);

src/waveform/renderers/allshader/waveformrendermarkrange.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ void WaveformRenderMarkRange::draw(QPainter* painter, QPaintEvent* event) {
4040
void WaveformRenderMarkRange::update() {
4141
GeometryNode* pChild = static_cast<GeometryNode*>(firstChild());
4242

43+
// Add or reuse child node for the active and visible mark ranges.
4344
for (const auto& markRange : m_markRanges) {
4445
// If the mark range is not active we should not draw it.
4546
if (!markRange.active()) {
@@ -72,6 +73,7 @@ void WaveformRenderMarkRange::update() {
7273
QColor color = markRange.enabled() ? markRange.m_activeColor : markRange.m_disabledColor;
7374
color.setAlphaF(0.3f);
7475

76+
// Append a new node if none left, or reuse an existing one.
7577
if (!pChild) {
7678
auto pNode = std::make_unique<GeometryNode>();
7779
pChild = pNode.get();
@@ -87,9 +89,11 @@ void WaveformRenderMarkRange::update() {
8789

8890
pChild = static_cast<GeometryNode*>(pChild->nextSibling());
8991
}
92+
// Remove all remaining nodes
9093
while (pChild) {
94+
auto* pNextChild = static_cast<GeometryNode*>(pChild->nextSibling());
9195
auto pNode = detachChildNode(pChild);
92-
pChild = static_cast<GeometryNode*>(pChild->nextSibling());
96+
pChild = pNextChild;
9397
}
9498
}
9599

0 commit comments

Comments
 (0)