From 5718f95819a8fe61c4f442cfd0a7ead691e6a600 Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Sun, 15 Mar 2020 00:32:31 +0100 Subject: [PATCH] Tone player "myself" guard --- src/blacksound/threadedtonepairplayer.cpp | 6 +++++- src/blacksound/threadedtonepairplayer.h | 6 +++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/blacksound/threadedtonepairplayer.cpp b/src/blacksound/threadedtonepairplayer.cpp index adc01bb38..18e94332e 100644 --- a/src/blacksound/threadedtonepairplayer.cpp +++ b/src/blacksound/threadedtonepairplayer.cpp @@ -28,12 +28,16 @@ namespace BlackSound void CThreadedTonePairPlayer::play(int volume, const QList &tonePairs) { + QPointer myself(this); QMutexLocker ml(&m_mutex); if (m_audioOutput->state() != QAudio::StoppedState) { return; } m_bufferData = this->getAudioByTonePairs(tonePairs); m_audioOutput->setVolume(static_cast(0.01 * volume)); - QTimer::singleShot(0, this, &CThreadedTonePairPlayer::playBuffer); + QTimer::singleShot(0, this, [ = ] + { + if (myself) { myself->playBuffer(); } + }); } bool CThreadedTonePairPlayer::reinitializeAudio(const CAudioDeviceInfo &device) diff --git a/src/blacksound/threadedtonepairplayer.h b/src/blacksound/threadedtonepairplayer.h index ca72ae6f5..9b5123890 100644 --- a/src/blacksound/threadedtonepairplayer.h +++ b/src/blacksound/threadedtonepairplayer.h @@ -68,9 +68,9 @@ namespace BlackSound BlackMisc::Audio::CAudioDeviceInfo m_deviceInfo; QAudioOutput *m_audioOutput = nullptr; - QByteArray m_bufferData; - QBuffer m_buffer; - QAudioFormat m_audioFormat; + QByteArray m_bufferData; + QBuffer m_buffer; + QAudioFormat m_audioFormat; QMap m_tonePairCache; mutable QMutex m_mutex { QMutex::Recursive }; };