From f13f5b5fdbd3500ae369dbd536c2a030512b8c5e Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Fri, 3 Jan 2020 02:44:33 +1100 Subject: [PATCH] fixes memory leak in AudioManager Ensures a thread that gets created gets deleted when it's done. --- app/audio/audiomanager.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/app/audio/audiomanager.cpp b/app/audio/audiomanager.cpp index d8b367d50..22ee8d906 100644 --- a/app/audio/audiomanager.cpp +++ b/app/audio/audiomanager.cpp @@ -58,6 +58,7 @@ void AudioManager::RefreshDevices() // Refreshing devices can take some time, so we do it in a separate thread QThread* thread = new QThread(); connect(thread, &QThread::finished, thread, &QThread::deleteLater); + thread->start(QThread::LowPriority); AudioRefreshDevicesObject* refresher = new AudioRefreshDevicesObject(); @@ -221,6 +222,7 @@ void AudioManager::RefreshThreadDone() } // Clean up refresher object + refresher->thread()->quit(); refresher->deleteLater(); emit DeviceListReady(); @@ -250,8 +252,5 @@ void AudioRefreshDevicesObject::Refresh() output_devices_ = QAudioDeviceInfo::availableDevices(QAudio::AudioOutput); input_devices_ = QAudioDeviceInfo::availableDevices(QAudio::AudioInput); - // Move back to main thread - moveToThread(QApplication::instance()->thread()); - emit ListsReady(); }