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