chatgui: диагностика воспроизведения голосовых сообщений (Windows)

- sound_manager: ma_engine_init/playRawPcm логируют через DEBUG_* (qWarning/qDebug терялись в GUI-приложении без консоли); детальный результат старта PCM (rc/is_playing/cursor)
- main: ранняя инициализация лога в GUI-потоке до SoundManager::init, чтобы диагностика инициализации попала в файл
- messagedelegate: лог клика по Play/timeline (filePath/dlState/существует ли файл)
- voiceplayback: лог заголовка opus (sr/ch/frameSamples)

Попутные правки:
- u_async: фикс двойного close wakeup_pipe (eventfd/Windows)
- chat_core: NULL-guard в get_db/is_initialized
- android: sqlite открывается в utun_instance_init, cleanup stale-потока без утечки fd
- android SettingsScreen: компактная раскладка имени интерфейса
This commit is contained in:
evgeny committed 2026-09-21 18:59:04 +03:00
1 parent 19dc076528
commit 9793733cd5
8 files changed
+76 -51

No files matched your search

+4
View File
@@ -174,6 +174,10 @@ bool MessageDelegate::editorEvent(QEvent *event, QAbstractItemModel *model,
qint64 msgId = index.data(MsgIdRole).toLongLong();
QString chId = index.data(MsgChannelIdRole).toString();
GUI_DEBUG("editorEvent voice: playBtn=%d wave=%d file='%s' exists=%d dlState=%d msgId=%lld",
(int)onPlayBtn, (int)onWaveform, qPrintable(filePath), QFile::exists(filePath),
dlState, (long long)msgId);
/* not downloaded: start download (play will start on completion) */
if (filePath.isEmpty() && dlState != 1) {
if (chId.isEmpty() || msgId <= 0) return false;