From e0f24c47b31dac51835e2a8293bd1588ab987ec1 Mon Sep 17 00:00:00 2001 From: Darkstar099 Date: Wed, 27 May 2026 18:04:35 +0700 Subject: [PATCH 1/2] Fix: conf2 race in rig_engaged_cb breaks dual-device engage --- src/gtk-rig-ctrl.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gtk-rig-ctrl.c b/src/gtk-rig-ctrl.c index bc069c217..934267257 100644 --- a/src/gtk-rig-ctrl.c +++ b/src/gtk-rig-ctrl.c @@ -991,6 +991,7 @@ static void rig_engaged_cb(GtkToggleButton * button, gpointer data) /* stop worker thread... */ setconfig(ctrl); ctrl->rigctl_thread = NULL; + ctrl->conf2 = NULL; } else { @@ -1003,7 +1004,6 @@ static void rig_engaged_cb(GtkToggleButton * button, gpointer data) ctrl->rigctl_thread = g_thread_new("rigctl_run", rigctl_run, ctrl); setconfig(ctrl); } - ctrl->conf2 = NULL; } static GtkWidget *create_target_widgets(GtkRigCtrl * ctrl) From 942c4a742c5c1bb31083dd5561adc278492250ee Mon Sep 17 00:00:00 2001 From: Darkstar099 Date: Thu, 28 May 2026 13:27:57 +0700 Subject: [PATCH 2/2] Fix: disengage race prevents reconnect; fix conf2 vfo_opt socket --- src/gtk-rig-ctrl.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/gtk-rig-ctrl.c b/src/gtk-rig-ctrl.c index 934267257..23a9cd301 100644 --- a/src/gtk-rig-ctrl.c +++ b/src/gtk-rig-ctrl.c @@ -988,10 +988,12 @@ static void rig_engaged_cb(GtkToggleButton * button, gpointer data) gtk_widget_set_sensitive(ctrl->DevSel2, TRUE); ctrl->engaged = FALSE; - /* stop worker thread... */ + /* stop worker thread and wait for it to close sockets */ + g_mutex_lock(&ctrl->widgetsync); setconfig(ctrl); + g_cond_wait(&ctrl->widgetready, &ctrl->widgetsync); + g_mutex_unlock(&ctrl->widgetsync); ctrl->rigctl_thread = NULL; - ctrl->conf2 = NULL; } else { @@ -2860,7 +2862,7 @@ static void rigctrl_open(GtkRigCtrl * data) { open_rigctld_socket(ctrl->conf2, &(ctrl->sock2)); /* set initial dual mode */ - ctrl->conf2->vfo_opt = get_vfo_opt(ctrl, ctrl->sock); + ctrl->conf2->vfo_opt = get_vfo_opt(ctrl, ctrl->sock2); sat_log_log(SAT_LOG_LEVEL_DEBUG, _("%s:%s: VFO opt2=%d"), __FILE__, __func__, ctrl->conf2->vfo_opt);