Update of /cvsroot/alsa/alsa-tools/envy24control
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv27025

Modified Files:
        driverevents.c envy24control.c envy24control.h hardware.c 
Log Message:
<[EMAIL PROTECTED]>
This patch added callbacks for rate locking and rate reset and fixed
an initialisation problem from envy24control.
If we have a default rate from e.g. 96000 and a stream is playing with
e.g. 48000 an we start envy24control then the value 48000 is set
as default rate.


Index: driverevents.c
===================================================================
RCS file: /cvsroot/alsa/alsa-tools/envy24control/driverevents.c,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- driverevents.c      5 Mar 2004 09:10:01 -0000       1.10
+++ driverevents.c      16 Apr 2004 13:09:35 -0000      1.11
@@ -48,6 +48,8 @@
                        spdif_output_update();
                else if (!strcmp(name, "Multi Track Internal Clock"))
                        master_clock_update();
+               else if (!strcmp(name, "Multi Track Internal Clock Default"))
+                       master_clock_update();
                else if (!strcmp(name, "Multi Track Rate Locking"))
                        rate_locking_update();
                else if (!strcmp(name, "Multi Track Rate Reset"))

Index: envy24control.c
===================================================================
RCS file: /cvsroot/alsa/alsa-tools/envy24control/envy24control.c,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -r1.24 -r1.25
--- envy24control.c     6 Mar 2004 12:55:18 -0000       1.24
+++ envy24control.c     16 Apr 2004 13:09:35 -0000      1.25
@@ -1840,6 +1840,8 @@
        gtk_timeout_add(40, level_meters_timeout_callback, NULL);
        gtk_timeout_add(100, master_clock_status_timeout_callback, NULL);
        gtk_timeout_add(100, internal_clock_status_timeout_callback, NULL);
+       gtk_timeout_add(100, rate_locking_status_timeout_callback, NULL);
+       gtk_timeout_add(100, rate_reset_status_timeout_callback, NULL);
 
 
        gtk_widget_show(window);

Index: envy24control.h
===================================================================
RCS file: /cvsroot/alsa/alsa-tools/envy24control/envy24control.h,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- envy24control.h     5 Mar 2004 09:10:01 -0000       1.13
+++ envy24control.h     16 Apr 2004 13:09:35 -0000      1.14
@@ -170,6 +170,8 @@
 void master_clock_update(void);
 gint master_clock_status_timeout_callback(gpointer data);
 gint internal_clock_status_timeout_callback(gpointer data);
+gint rate_locking_status_timeout_callback(gpointer data);
+gint rate_reset_status_timeout_callback(gpointer data);
 void internal_clock_toggled(GtkWidget *togglebutton, gpointer data);
 void rate_locking_update(void);
 void rate_locking_toggled(GtkWidget *togglebutton, gpointer data);

Index: hardware.c
===================================================================
RCS file: /cvsroot/alsa/alsa-tools/envy24control/hardware.c,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- hardware.c  19 Feb 2004 10:44:53 -0000      1.13
+++ hardware.c  16 Apr 2004 13:09:35 -0000      1.14
@@ -20,6 +20,7 @@
 #include "envy24control.h"
 
 static snd_ctl_elem_value_t *internal_clock;
+static snd_ctl_elem_value_t *internal_clock_default;
 static snd_ctl_elem_value_t *word_clock_sync;
 static snd_ctl_elem_value_t *rate_locking;
 static snd_ctl_elem_value_t *rate_reset;
@@ -31,6 +32,8 @@
 static snd_ctl_elem_value_t *spdif_on_off;
 static snd_ctl_elem_value_t *phono_input;
 
+static inline int is_update_needed(void);
+
 #define toggle_set(widget, state) \
        gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), state);
 
@@ -41,10 +44,12 @@
 
 void master_clock_update(void)
 {
-       int err, rate;
+       int err, rate, need_default_update;
        
        if ((err = snd_ctl_elem_read(ctl, internal_clock)) < 0)
                g_print("Unable to read Internal Clock state: %s\n", 
snd_strerror(err));
+       if ((err = snd_ctl_elem_read(ctl, internal_clock_default)) < 0)
+               g_print("Unable to read Internal Clock Default state: %s\n", 
snd_strerror(err));
        if (card_eeprom.subvendor == ICE1712_SUBDEVICE_DELTA1010 ||
            card_eeprom.subvendor == ICE1712_SUBDEVICE_DELTA1010LT) {
                if ((err = snd_ctl_elem_read(ctl, word_clock_sync)) < 0)
@@ -58,7 +63,12 @@
                }
        } else {
 //             toggle_set(hw_master_clock_xtal_radio, TRUE);
-               rate = snd_ctl_elem_value_get_enumerated(internal_clock, 0);
+               need_default_update = !is_update_needed() ? 1 : 0;
+               if (need_default_update) {
+                       rate = 
snd_ctl_elem_value_get_enumerated(internal_clock_default, 0);
+               } else {
+                       rate = snd_ctl_elem_value_get_enumerated(internal_clock, 0);
+               }
                switch (rate) {
                case 5: toggle_set(hw_master_clock_xtal_22050, TRUE); break;
                case 7: toggle_set(hw_master_clock_xtal_32000, TRUE); break;
@@ -171,6 +181,8 @@
        
        if ((err = snd_ctl_elem_read(ctl, internal_clock)) < 0)
                g_print("Unable to read Internal Clock state: %s\n", 
snd_strerror(err));
+       if ((err = snd_ctl_elem_read(ctl, internal_clock_default)) < 0)
+               g_print("Unable to read Internal Clock Default state: %s\n", 
snd_strerror(err));
        if (card_eeprom.subvendor == ICE1712_SUBDEVICE_DELTA1010 ||
            card_eeprom.subvendor == ICE1712_SUBDEVICE_DELTA1010LT) {
                if ((err = snd_ctl_elem_read(ctl, word_clock_sync)) < 0)
@@ -218,11 +230,45 @@
                            g_print("Error in rate: %d\n", rate);
                            break;
                }
+               if (!need_update) {     //default clock need update
+                       rate = 
snd_ctl_elem_value_get_enumerated(internal_clock_default, 0);
+                       switch (rate) {
+                       case 5: toggle_set(hw_master_clock_xtal_22050, TRUE); break;
+                       case 7: toggle_set(hw_master_clock_xtal_32000, TRUE); break;
+                       case 8: toggle_set(hw_master_clock_xtal_44100, TRUE); break;
+                       case 9: toggle_set(hw_master_clock_xtal_48000, TRUE); break;
+                       case 11: toggle_set(hw_master_clock_xtal_88200, TRUE); break;
+                       case 12: toggle_set(hw_master_clock_xtal_96000, TRUE); break;
+                       default:
+                               g_print("Error in rate: %d\n", rate);
+                               break;
+                       }
+               }
        }
        gtk_label_set_text(GTK_LABEL(hw_master_clock_actual_rate_label), label);
        return TRUE;
 }
 
+gint rate_locking_status_timeout_callback(gpointer data)
+{
+    int state;
+
+    if (is_active(hw_rate_locking_check) != (state = is_rate_locked())) {
+       toggle_set(hw_rate_locking_check, state ? TRUE : FALSE);
+    }
+    return TRUE;
+}
+
+gint rate_reset_status_timeout_callback(gpointer data)
+{
+    int state;
+
+    if (is_active(hw_rate_reset_check) != (state = is_rate_reset())) {
+       toggle_set(hw_rate_reset_check, state ? TRUE : FALSE);
+    }
+    return TRUE;
+}
+
 void rate_locking_update(void)
 {
        int err;
@@ -728,6 +774,7 @@
 void hardware_init(void)
 {
        if (snd_ctl_elem_value_malloc(&internal_clock) < 0 ||
+           snd_ctl_elem_value_malloc(&internal_clock_default) < 0 ||
            snd_ctl_elem_value_malloc(&word_clock_sync) < 0 ||
            snd_ctl_elem_value_malloc(&rate_locking) < 0 ||
            snd_ctl_elem_value_malloc(&rate_reset) < 0 ||
@@ -745,6 +792,9 @@
        snd_ctl_elem_value_set_interface(internal_clock, SND_CTL_ELEM_IFACE_MIXER);
        snd_ctl_elem_value_set_name(internal_clock, "Multi Track Internal Clock");
 
+       snd_ctl_elem_value_set_interface(internal_clock_default, 
SND_CTL_ELEM_IFACE_MIXER);
+       snd_ctl_elem_value_set_name(internal_clock_default, "Multi Track Internal 
Clock Default");
+
        snd_ctl_elem_value_set_interface(word_clock_sync, SND_CTL_ELEM_IFACE_PCM);
        snd_ctl_elem_value_set_name(word_clock_sync, "Word Clock Sync");
 



-------------------------------------------------------
This SF.Net email is sponsored by: IBM Linux Tutorials
Free Linux tutorial presented by Daniel Robbins, President and CEO of
GenToo technologies. Learn everything from fundamentals to system
administration.http://ads.osdn.com/?ad_id=1470&alloc_id=3638&op=click
_______________________________________________
Alsa-cvslog mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/alsa-cvslog

Reply via email to