Browse Source

chatgui: move SoundManager shutdown to ~MainWindow before node cleanup

- SoundManager::shutdown() called explicitly in ~MainWindow (not static destruction)
- Before ma_engine_uninit: DEBUG_INFO diagnostic in timestamped log
- After ma_engine_uninit: DEBUG_INFO diagnostic
- Double-call safe: static destructor hits m_initialized=false, returns immediately
topo_upd
Evgeny 2 months ago
parent
commit
0d558245ce
  1. 1
      tools/chatgui/src/mainwindow.cpp
  2. 4
      tools/chatgui/src/sound_manager.cpp

1
tools/chatgui/src/mainwindow.cpp

@ -84,6 +84,7 @@ MainWindow::MainWindow(QWidget *parent, DbManager* db, const QString& cfgPath,
} }
MainWindow::~MainWindow() { MainWindow::~MainWindow() {
SoundManager::instance()->shutdown();
DEBUG_DEBUG(DEBUG_CATEGORY_DEBUG, "MainWindow: ~MainWindow — saving channel state"); DEBUG_DEBUG(DEBUG_CATEGORY_DEBUG, "MainWindow: ~MainWindow — saving channel state");
if (m_messageList) m_messageList->saveChannelState(); if (m_messageList) m_messageList->saveChannelState();
DEBUG_DEBUG(DEBUG_CATEGORY_DEBUG, "MainWindow: ~MainWindow — stopping utun node"); DEBUG_DEBUG(DEBUG_CATEGORY_DEBUG, "MainWindow: ~MainWindow — stopping utun node");

4
tools/chatgui/src/sound_manager.cpp

@ -3,6 +3,7 @@
#include "sound_manager.h" #include "sound_manager.h"
#include <QFile> #include <QFile>
#include <QDebug> #include <QDebug>
#include "../../lib/debug_config.h"
SoundManager* SoundManager::instance() { SoundManager* SoundManager::instance() {
static SoundManager s; static SoundManager s;
@ -36,9 +37,10 @@ void SoundManager::shutdown() {
} }
m_sounds.clear(); m_sounds.clear();
DEBUG_INFO(DEBUG_CATEGORY_DEBUG, "SoundManager: before ma_engine_uninit engine=%p", (void*)m_engine);
if (m_engine) { ma_engine_uninit(m_engine); delete m_engine; m_engine = nullptr; } if (m_engine) { ma_engine_uninit(m_engine); delete m_engine; m_engine = nullptr; }
DEBUG_INFO(DEBUG_CATEGORY_DEBUG, "SoundManager: after ma_engine_uninit");
m_initialized = false; m_initialized = false;
qDebug("SoundManager: shutdown");
} }
void SoundManager::setEnabled(bool enabled) { m_enabled = enabled; } void SoundManager::setEnabled(bool enabled) { m_enabled = enabled; }

Loading…
Cancel
Save