diff --git a/tools/chatgui/src/radio_audio_engine.cpp b/tools/chatgui/src/radio_audio_engine.cpp index c042f03f..e570954d 100644 --- a/tools/chatgui/src/radio_audio_engine.cpp +++ b/tools/chatgui/src/radio_audio_engine.cpp @@ -194,6 +194,7 @@ void RadioAudioEngine::postSettings(const std::array& values, bool apply }, Qt::QueuedConnection); request->~SettingsRequest(); }; + // Сначала поставить задачу: обработчик stateChanged может синхронно вызвать следующий loadSettings. uasync_post_reserved(inst->ua, &request->task); DEBUG_DEBUG(DEBUG_CATEGORY_RADIO, "RadioAudio: settings queued generation=%llu apply=%d", (unsigned long long)generation, apply); diff --git a/tools/chatgui/src/radio_audio_engine.h b/tools/chatgui/src/radio_audio_engine.h index 136e1389..b5e1b705 100644 --- a/tools/chatgui/src/radio_audio_engine.h +++ b/tools/chatgui/src/radio_audio_engine.h @@ -35,7 +35,8 @@ public: void talkEnd(); void setHotkeyTalking(bool pressed); // независимый владелец PTT — глобальная клавиатура - /* GUI-поток: начать новое поколение настроек после DB_READY или явного перечитывания конфига. + /* GUI-поток: начать новое чтение настроек из ядра, в том числе после DB_READY. + * configPath — INI для последующего applySettings; loadSettings сам файл не читает. * Снимает прежнее ожидание, даже если ядро удалило задачу без callback; поздний результат прежнего поколения игнорируется. * Физически уже поставленные задачи остаются в очереди ядра; новый снимок читается после них. */ void loadSettings(const QString& configPath);