fix audio mode change crash (#3111)

This commit is contained in:
Totoo
2026-03-26 22:40:27 +01:00
committed by GitHub
parent 5c719645d6
commit 70b42f4a56
3 changed files with 10 additions and 2 deletions
@@ -419,10 +419,10 @@ void AnalogAudioView::on_baseband_bandwidth_changed(uint32_t bandwidth_hz) {
}
void AnalogAudioView::on_modulation_changed(ReceiverModel::Mode modulation) {
baseband::spectrum_streaming_stop();
waterfall.stop();
update_modulation(modulation);
on_show_options_modulation();
baseband::spectrum_streaming_start();
waterfall.start();
}
void AnalogAudioView::remove_options_widget() {
+2
View File
@@ -361,6 +361,8 @@ void WaterfallView::stop() {
baseband::spectrum_streaming_stop();
running_ = false;
}
this->channel_fifo = nullptr;
this->audio_spectrum_data = nullptr;
}
void WaterfallView::show_audio_spectrum_view(const bool show) {
+6
View File
@@ -173,12 +173,16 @@ class WaterfallView : public View {
MessageHandlerRegistration message_handler_channel_spectrum_config{
Message::ID::ChannelSpectrumConfig,
[this](const Message* const p) {
if (!running_)
return;
const auto message = *reinterpret_cast<const ChannelSpectrumConfigMessage*>(p);
this->channel_fifo = message.fifo;
}};
MessageHandlerRegistration message_handler_audio_spectrum{
Message::ID::AudioSpectrum,
[this](const Message* const p) {
if (!running_)
return;
const auto message = *reinterpret_cast<const AudioSpectrumMessage*>(p);
this->audio_spectrum_data = message.data;
this->audio_spectrum_update = true;
@@ -186,6 +190,8 @@ class WaterfallView : public View {
MessageHandlerRegistration message_handler_frame_sync{
Message::ID::DisplayFrameSync,
[this](const Message* const) {
if (!running_)
return;
if (this->channel_fifo) {
ChannelSpectrum channel_spectrum;
while (channel_fifo->out(channel_spectrum)) {