mirror of
https://github.com/alsa-project/alsa-tools.git
synced 2025-10-29 05:40:25 -04:00
Fix ADC controls with higher resolution in envy24control
Fixed envy24control to handle ADC volumes with higher resolution properly. Also, the bogus sync of gtk_adjustment between ADC and IPGA volumes is fixed in the case no IPGA is detected.
This commit is contained in:
parent
526334dda9
commit
917e71fcc8
3 changed files with 13 additions and 4 deletions
|
|
@ -1570,7 +1570,7 @@ static void create_analog_volume(GtkWidget *main, GtkWidget *notebook, int page)
|
||||||
gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, TRUE, 6);
|
gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, TRUE, 6);
|
||||||
}
|
}
|
||||||
|
|
||||||
adj = gtk_adjustment_new(0, -127, 0, 1, 16, 0);
|
adj = gtk_adjustment_new(0, -(envy_adc_max()), 0, 1, 16, 0);
|
||||||
av_adc_volume_adj[i] = adj;
|
av_adc_volume_adj[i] = adj;
|
||||||
vscale = gtk_vscale_new(GTK_ADJUSTMENT(adj));
|
vscale = gtk_vscale_new(GTK_ADJUSTMENT(adj));
|
||||||
gtk_scale_set_draw_value(GTK_SCALE(vscale), FALSE);
|
gtk_scale_set_draw_value(GTK_SCALE(vscale), FALSE);
|
||||||
|
|
|
||||||
|
|
@ -217,6 +217,7 @@ void analog_volume_postinit(void);
|
||||||
int envy_dac_volumes(void);
|
int envy_dac_volumes(void);
|
||||||
int envy_dac_max(void);
|
int envy_dac_max(void);
|
||||||
int envy_adc_volumes(void);
|
int envy_adc_volumes(void);
|
||||||
|
int envy_adc_max(void);
|
||||||
int envy_ipga_volumes(void);
|
int envy_ipga_volumes(void);
|
||||||
int envy_dac_senses(void);
|
int envy_dac_senses(void);
|
||||||
int envy_adc_senses(void);
|
int envy_adc_senses(void);
|
||||||
|
|
|
||||||
|
|
@ -33,6 +33,7 @@
|
||||||
|
|
||||||
static int dac_volumes;
|
static int dac_volumes;
|
||||||
static int dac_max = 127;
|
static int dac_max = 127;
|
||||||
|
static int adc_max = 127;
|
||||||
static int adc_volumes;
|
static int adc_volumes;
|
||||||
static int ipga_volumes;
|
static int ipga_volumes;
|
||||||
static int dac_senses;
|
static int dac_senses;
|
||||||
|
|
@ -58,6 +59,11 @@ int envy_adc_volumes(void)
|
||||||
return adc_volumes;
|
return adc_volumes;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int envy_adc_max(void)
|
||||||
|
{
|
||||||
|
return adc_max;
|
||||||
|
}
|
||||||
|
|
||||||
int envy_ipga_volumes(void)
|
int envy_ipga_volumes(void)
|
||||||
{
|
{
|
||||||
return ipga_volumes;
|
return ipga_volumes;
|
||||||
|
|
@ -138,8 +144,9 @@ void adc_volume_update(int idx)
|
||||||
g_print("Unable to read ipga volume: %s\n", snd_strerror(err));
|
g_print("Unable to read ipga volume: %s\n", snd_strerror(err));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
gtk_adjustment_set_value(GTK_ADJUSTMENT(av_ipga_volume_adj[idx]),
|
if (ipga_volumes > 0)
|
||||||
-0);
|
gtk_adjustment_set_value(GTK_ADJUSTMENT(av_ipga_volume_adj[idx]),
|
||||||
|
-0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ipga_volume_update(int idx)
|
void ipga_volume_update(int idx)
|
||||||
|
|
@ -165,7 +172,7 @@ void ipga_volume_update(int idx)
|
||||||
// set ADC volume to max if IPGA volume greater 0
|
// set ADC volume to max if IPGA volume greater 0
|
||||||
if (ipga_vol)
|
if (ipga_vol)
|
||||||
gtk_adjustment_set_value(GTK_ADJUSTMENT(av_adc_volume_adj[idx]),
|
gtk_adjustment_set_value(GTK_ADJUSTMENT(av_adc_volume_adj[idx]),
|
||||||
-127);
|
-adc_max);
|
||||||
}
|
}
|
||||||
|
|
||||||
void dac_sense_update(int idx)
|
void dac_sense_update(int idx)
|
||||||
|
|
@ -342,6 +349,7 @@ void analog_volume_init(void)
|
||||||
snd_ctl_elem_info_set_index(info, i);
|
snd_ctl_elem_info_set_index(info, i);
|
||||||
if (snd_ctl_elem_info(ctl, info) < 0)
|
if (snd_ctl_elem_info(ctl, info) < 0)
|
||||||
break;
|
break;
|
||||||
|
adc_max = snd_ctl_elem_info_get_max(info);
|
||||||
}
|
}
|
||||||
if (i < input_channels - 1)
|
if (i < input_channels - 1)
|
||||||
adc_volumes = i;
|
adc_volumes = i;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue