From 24e4509971e07499adab40de39529f3640f55788 Mon Sep 17 00:00:00 2001 From: DL1YCF Date: Sat, 10 Oct 2020 15:15:08 +0200 Subject: [PATCH] Defer calling audio_open_input and audio_open_output until the radio state is restored and the local audio settings are set. --- radio.c | 60 +++++++++++++++++++++++++++++++++++++++------------------ 1 file changed, 41 insertions(+), 19 deletions(-) diff --git a/radio.c b/radio.c index 12ed146..fce6eb4 100644 --- a/radio.c +++ b/radio.c @@ -288,8 +288,8 @@ long long tune_timeout; int analog_meter=0; int smeter=RXA_S_AV; -int local_audio=0; -int local_microphone=0; +//int local_audio=0; +//int local_microphone=0; int eer_pwm_min=100; int eer_pwm_max=800; @@ -1187,6 +1187,26 @@ void start_radio() { radioRestoreState(); + // + // This must come *after* radioRestoreState since this + // reads the local audio settings from the props file + // (and this is now removed from *_protocol_init and create_receiver) + // + + for(int i=0;ilocal_audio) { + if (audio_open_output(receiver[i]) < 0) receiver[i]->local_audio=0; + } + } + if(transmitter->local_microphone && can_transmit) { + if(audio_open_input()!=0) { + g_print("audio_open_input failed\n"); + transmitter->local_microphone=0; + } + } + + // // It is possible that an option has been read in // which is not compatible with the hardware. @@ -2001,14 +2021,12 @@ g_print("radioRestoreState: %s\n",property_path); if(value) smeter=atoi(value); value=getProperty("alc"); if(value) alc=atoi(value); -#ifdef OLD_AUDIO - value=getProperty("local_audio"); - if(value) local_audio=atoi(value); - value=getProperty("n_selected_output_device"); - if(value) n_selected_output_device=atoi(value); -#endif - value=getProperty("local_microphone"); - if(value) local_microphone=atoi(value); +// value=getProperty("local_audio"); +// if(value) local_audio=atoi(value); +// value=getProperty("n_selected_output_device"); +// if(value) n_selected_output_device=atoi(value); +// value=getProperty("local_microphone"); +// if(value) local_microphone=atoi(value); // value=getProperty("n_selected_input_device"); // if(value) n_selected_input_device=atoi(value); value=getProperty("enable_tx_equalizer"); @@ -2299,14 +2317,12 @@ g_print("radioSaveState: %s\n",property_path); setProperty("smeter",value); sprintf(value,"%d",alc); setProperty("alc",value); -#ifdef OLD_AUDIO - sprintf(value,"%d",local_audio); - setProperty("local_audio",value); - sprintf(value,"%d",n_selected_output_device); - setProperty("n_selected_output_device",value); -#endif - sprintf(value,"%d",local_microphone); - setProperty("local_microphone",value); +// sprintf(value,"%d",local_audio); +// setProperty("local_audio",value); +// sprintf(value,"%d",n_selected_output_device); +// setProperty("n_selected_output_device",value); +// sprintf(value,"%d",local_microphone); +// setProperty("local_microphone",value); sprintf(value,"%d",enable_tx_equalizer); setProperty("enable_tx_equalizer",value); @@ -2548,10 +2564,16 @@ int remote_start(void *data) { #endif radioRestoreState(); create_visual(); + if(transmitter->local_microphone) { + if(audio_open_input()!=0) { + g_print("audio_open_input failed\n"); + transmitter->local_microphone=0; + } + } for(int i=0;ilocal_audio) { - if (audio_open_output(receiver[i]) < 0) receiver[i].local_audio=0; + if (audio_open_output(receiver[i]) < 0) receiver[i]->local_audio=0; } } reconfigure_radio(); -- 2.45.2