]> git.alsa-project.org Git - alsa-tools.git/commitdiff
Thomas Charbonnel <thomas@undata.org>:
authorTakashi Iwai <tiwai@suse.de>
Thu, 27 Nov 2003 10:42:40 +0000 (10:42 +0000)
committerTakashi Iwai <tiwai@suse.de>
Thu, 27 Nov 2003 10:42:40 +0000 (10:42 +0000)
- fix some problems with default presets file handling.

hdspmixer/src/HDSPMixerWindow.cxx
hdspmixer/src/HDSPMixerWindow.h

index 5031266d502943b073258beb2fb1cf5ecb6e09d8..76a2833a2eecbc1ce461853641bbb7523ebde098 100644 (file)
@@ -397,7 +397,13 @@ void HDSPMixerWindow::load()
 {
     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 @@ void HDSPMixerWindow::restoreDefaults(int card)
        h9632_an12_submix[2] = 1;
        num_modes = 3;
        phones = 0;
+       break;
     default:
        /* should never happen */
        return;
@@ -624,8 +631,18 @@ HDSPMixerWindow::HDSPMixerWindow(int x, int y, int w, int h, const char *label,
     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();
index c3f8b8fb3a1c70db6f78616134b9c6fa51c53a78..af5c666a61025062fcd8e70347b857883ce2ac95 100644 (file)
@@ -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"