From 984133f61dc376a8dafad7458966186658918226 Mon Sep 17 00:00:00 2001 From: "Geoffrey D. Bennett" Date: Tue, 12 Mar 2024 02:11:21 +1030 Subject: [PATCH] Store the best_firmware_version in struct alsa_card --- src/alsa.c | 2 ++ src/alsa.h | 1 + src/iface-update.c | 5 +---- src/window-startup.c | 7 ++----- 4 files changed, 6 insertions(+), 9 deletions(-) diff --git a/src/alsa.c b/src/alsa.c index 9702eaf..94bcb55 100644 --- a/src/alsa.c +++ b/src/alsa.c @@ -4,6 +4,7 @@ #include #include "alsa.h" +#include "scarlett2-firmware.h" #include "stringhelper.h" #include "window-iface.h" @@ -778,6 +779,7 @@ static void alsa_scan_cards(void) { alsa_subscribe(card); alsa_get_usbid(card); alsa_get_serial_number(card); + card->best_firmware_version = scarlett2_get_best_firmware_version(card->pid); if (card->serial) { diff --git a/src/alsa.h b/src/alsa.h index 30c62a3..688311d 100644 --- a/src/alsa.h +++ b/src/alsa.h @@ -155,6 +155,7 @@ struct alsa_card { uint32_t pid; char *serial; char *name; + int best_firmware_version; snd_ctl_t *handle; struct pollfd pfd; GArray *elems; diff --git a/src/iface-update.c b/src/iface-update.c index e8b326c..16fb8fe 100644 --- a/src/iface-update.c +++ b/src/iface-update.c @@ -25,10 +25,7 @@ GtkWidget *create_iface_update_main(struct alsa_card *card) { gtk_widget_add_css_class(w, "window-title"); gtk_box_append(GTK_BOX(content), w); - uint32_t best_firmware_version = - scarlett2_get_best_firmware_version(card->pid); - - if (!best_firmware_version) { + if (!card->best_firmware_version) { w = gtk_label_new(NULL); gtk_label_set_markup( GTK_LABEL(w), diff --git a/src/window-startup.c b/src/window-startup.c index a50ae81..4cd4ea6 100644 --- a/src/window-startup.c +++ b/src/window-startup.c @@ -5,7 +5,6 @@ #include "device-update-firmware.h" #include "gtkhelper.h" #include "scarlett2.h" -#include "scarlett2-firmware.h" #include "scarlett2-ioctls.h" #include "widget-boolean.h" #include "window-startup.h" @@ -273,10 +272,8 @@ static void add_reset_actions( return; int firmware_version = alsa_get_elem_value(firmware_elem); - uint32_t best_firmware_version = - scarlett2_get_best_firmware_version(card->pid); - if (firmware_version >= best_firmware_version) + if (firmware_version >= card->best_firmware_version) return; char *s = g_strdup_printf( @@ -284,7 +281,7 @@ static void add_reset_actions( "factory default settings and update the firmware from version " "%d to %d.", firmware_version, - best_firmware_version + card->best_firmware_version ); add_reset_action( card,