Takashi Iwai wrote :

Takashi it seems that at least for hdsploader (I didn't check the other tools) you forgot the trailing / in DATAPATH in Makefile.am, so the program fails to find the firmware file :
Unable to open file '/usr/local/share/alsa/firmware/hdsploadermultiface_firmware.bin' for reading


oh yes, you're right.
is the attached patch ok?
i'll check it in.


Good for me, thanks.
Please also apply the attached patch to hdspmixer, it fixes some problems with default presets file handling.


Thomas.
diff -Naur hdspmixer.orig/src/HDSPMixerWindow.cxx hdspmixer/src/HDSPMixerWindow.cxx
--- hdspmixer.orig/src/HDSPMixerWindow.cxx      2003-11-27 01:36:29.000000000 +0100
+++ hdspmixer/src/HDSPMixerWindow.cxx   2003-11-27 01:35:01.000000000 +0100
@@ -397,7 +397,13 @@
 {
     FILE *file;
     if ((file = fopen(file_name, "r")) == NULL) {
+       int i = 0;
        fl_alert("Error opening file %s for reading", file_name);
+       while (cards[i] != NULL) {
+           restoreDefaults(i++);
+       }
+       inputs->buttons->presets->preset_change(1);     
+       return;
     }
     for (int speed = 0; speed < 3; ++speed) {
        for (int card = 0; card < 3; ++card) {
@@ -533,6 +539,7 @@
        h9632_an12_submix[2] = 1;
        num_modes = 3;
        phones = 0;
+       break;
     default:
        /* should never happen */
        return;
@@ -624,8 +631,18 @@
     cards[2] = hdsp_card3;
     current_card = current_preset = 0;
     prefs = new Fl_Preferences(Fl_Preferences::USER, "thomasATundata.org", 
"HDSPMixer");
-    if (!prefs->get("default_file", file_name_buffer, NULL, FL_PATH_MAX-1)) file_name 
= NULL;
-    else file_name = file_name_buffer;
+    if (!prefs->get("default_file", file_name_buffer, NULL, FL_PATH_MAX-1)) {
+       file_name = NULL;
+    } else {
+       struct stat buf;
+       if (!stat(file_name_buffer, &buf)) {
+           file_name = file_name_buffer;
+       } else {
+           file_name = NULL;
+           prefs->deleteEntry("default_file");
+           prefs->flush();
+       }       
+    }
     for (int j = 0; j < 3; ++j) {
        for (int i = 0; i < 8; ++i) {
            data[j][0][i] = new HDSPMixerPresetData();
diff -Naur hdspmixer.orig/src/HDSPMixerWindow.h hdspmixer/src/HDSPMixerWindow.h
--- hdspmixer.orig/src/HDSPMixerWindow.h        2003-11-27 01:36:29.000000000 +0100
+++ hdspmixer/src/HDSPMixerWindow.h     2003-11-27 01:25:03.000000000 +0100
@@ -35,6 +35,9 @@
 #include <stdlib.h>
 #include <math.h>
 #include <sys/ioctl.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <unistd.h>
 #include <alsa/asoundlib.h>
 #include <sound/hdsp.h>
 #include "HDSPMixerCard.h"

Reply via email to