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() {
SoundManager::instance()->shutdown();
DEBUG_DEBUG(DEBUG_CATEGORY_DEBUG, "MainWindow: ~MainWindow — saving channel state");
if (m_messageList) m_messageList->saveChannelState();
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 <QFile>
#include <QDebug>
#include "../../lib/debug_config.h"
SoundManager* SoundManager::instance() {
static SoundManager s;
@ -36,9 +37,10 @@ void SoundManager::shutdown() {
}
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; }
DEBUG_INFO(DEBUG_CATEGORY_DEBUG, "SoundManager: after ma_engine_uninit");
m_initialized = false;
qDebug("SoundManager: shutdown");
}
void SoundManager::setEnabled(bool enabled) { m_enabled = enabled; }

Loading…
Cancel
Save