diff --git a/src/plugins/tracing/qctflib.cpp b/src/plugins/tracing/qctflib.cpp index 0ad639a9cee..86d39afaa9b 100644 --- a/src/plugins/tracing/qctflib.cpp +++ b/src/plugins/tracing/qctflib.cpp @@ -257,6 +257,7 @@ void QCtfLibImpl::writeCtfPacket(QCtfLibImpl::Channel &ch) QCtfLibImpl::Channel::~Channel() { impl->writeCtfPacket(*this); + impl->removeChannel(this); } QCtfLibImpl::~QCtfLibImpl() @@ -266,6 +267,12 @@ QCtfLibImpl::~QCtfLibImpl() qDeleteAll(m_eventPrivs); } +void QCtfLibImpl::removeChannel(Channel *ch) +{ + const QMutexLocker lock(&m_mutex); + m_channels.removeOne(ch); +} + bool QCtfLibImpl::tracepointEnabled(const QCtfTracePointEvent &point) { if (m_sessionChanged) { diff --git a/src/plugins/tracing/qctflib_p.h b/src/plugins/tracing/qctflib_p.h index ef70fcdd9ac..297d38ee509 100644 --- a/src/plugins/tracing/qctflib_p.h +++ b/src/plugins/tracing/qctflib_p.h @@ -89,6 +89,7 @@ public: private: static QCtfLibImpl *s_instance; QHash m_eventPrivs; + void removeChannel(Channel *ch); void updateMetadata(const QCtfTracePointEvent &point); void writeMetadata(const QString &metadata, bool overwrite = false); void clearLocation();