mirror of
https://github.com/alsa-project/alsa-tools.git
synced 2025-10-29 05:40:25 -04:00
envy24control: port to GTK 3
Closes: https://github.com/alsa-project/alsa-tools/pull/35 Signed-off-by: Andreas Persson <andreasp56@outlook.com> Signed-off-by: Jaroslav Kysela <perex@perex.cz>
This commit is contained in:
parent
32495631b1
commit
ddc93b66b4
12 changed files with 541 additions and 534 deletions
|
|
@ -47,7 +47,7 @@ void config_close()
|
|||
void config_set_stereo(GtkWidget *but, gpointer data)
|
||||
{
|
||||
gint i=GPOINTER_TO_INT(data);
|
||||
config_stereo[i]=GTK_TOGGLE_BUTTON(but)->active;
|
||||
config_stereo[i]=gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(but));
|
||||
}
|
||||
|
||||
void config_restore_stereo()
|
||||
|
|
|
|||
|
|
@ -5,6 +5,6 @@ AC_HEADER_STDC
|
|||
AM_INIT_AUTOMAKE
|
||||
AM_MAINTAINER_MODE([enable])
|
||||
|
||||
PKG_CHECK_MODULES(ENVY24CONTROL, gtk+-2.0 alsa >= 0.9.0)
|
||||
PKG_CHECK_MODULES(ENVY24CONTROL, gtk+-3.0 alsa >= 0.9.0)
|
||||
|
||||
AC_OUTPUT(Makefile desktop/Makefile)
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@
|
|||
|
||||
#include "envy24control.h"
|
||||
|
||||
void control_input_callback(gpointer data, gint source, GdkInputCondition condition)
|
||||
gboolean control_input_callback(GIOChannel *source, GIOCondition condition, gpointer data)
|
||||
{
|
||||
snd_ctl_t *ctl = (snd_ctl_t *)data;
|
||||
snd_ctl_event_t *ev;
|
||||
|
|
@ -29,12 +29,12 @@ void control_input_callback(gpointer data, gint source, GdkInputCondition condit
|
|||
|
||||
snd_ctl_event_alloca(&ev);
|
||||
if (snd_ctl_read(ctl, ev) < 0)
|
||||
return;
|
||||
return TRUE;
|
||||
name = snd_ctl_event_elem_get_name(ev);
|
||||
index = snd_ctl_event_elem_get_index(ev);
|
||||
mask = snd_ctl_event_elem_get_mask(ev);
|
||||
if (! (mask & (SND_CTL_EVENT_MASK_VALUE | SND_CTL_EVENT_MASK_INFO)))
|
||||
return;
|
||||
return TRUE;
|
||||
|
||||
switch (snd_ctl_event_elem_get_interface(ev)) {
|
||||
case SND_CTL_ELEM_IFACE_MIXER:
|
||||
|
|
@ -88,5 +88,6 @@ void control_input_callback(gpointer data, gint source, GdkInputCondition condit
|
|||
default:
|
||||
break;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -85,7 +85,7 @@ extern ice1712_eeprom_t card_eeprom;
|
|||
extern GtkWidget *mixer_mix_drawing;
|
||||
extern GtkWidget *mixer_clear_peaks_button;
|
||||
extern GtkWidget *mixer_drawing[20];
|
||||
extern GtkObject *mixer_adj[20][2];
|
||||
extern GtkAdjustment *mixer_adj[20][2];
|
||||
extern GtkWidget *mixer_vscale[20][2];
|
||||
extern GtkWidget *mixer_solo_toggle[20][2];
|
||||
extern GtkWidget *mixer_mute_toggle[20][2];
|
||||
|
|
@ -108,7 +108,7 @@ extern GtkWidget *hw_master_clock_actual_rate_label;
|
|||
extern GtkWidget *hw_rate_locking_check;
|
||||
extern GtkWidget *hw_rate_reset_check;
|
||||
|
||||
extern GtkObject *hw_volume_change_adj;
|
||||
extern GtkAdjustment *hw_volume_change_adj;
|
||||
extern GtkWidget *hw_volume_change_spin;
|
||||
|
||||
extern GtkWidget *hw_spdif_profi_nonaudio_radio;
|
||||
|
|
@ -151,9 +151,9 @@ extern GtkWidget *input_interface_internal;
|
|||
extern GtkWidget *input_interface_front_input;
|
||||
extern GtkWidget *input_interface_rear_input;
|
||||
extern GtkWidget *input_interface_wavetable;
|
||||
extern GtkObject *av_dac_volume_adj[];
|
||||
extern GtkObject *av_adc_volume_adj[];
|
||||
extern GtkObject *av_ipga_volume_adj[];
|
||||
extern GtkAdjustment *av_dac_volume_adj[];
|
||||
extern GtkAdjustment *av_adc_volume_adj[];
|
||||
extern GtkAdjustment *av_ipga_volume_adj[];
|
||||
extern GtkLabel *av_dac_volume_label[];
|
||||
extern GtkLabel *av_adc_volume_label[];
|
||||
extern GtkLabel *av_ipga_volume_label[];
|
||||
|
|
@ -163,8 +163,7 @@ extern GtkWidget *av_adc_sense_radio[][4];
|
|||
/* flags */
|
||||
extern int card_is_dmx6fire;
|
||||
|
||||
gint level_meters_configure_event(GtkWidget *widget, GdkEventConfigure *event);
|
||||
gint level_meters_expose_event(GtkWidget *widget, GdkEventExpose *event);
|
||||
gboolean level_meters_draw_callback(GtkWidget *widget, cairo_t *cr, gpointer data);
|
||||
gint level_meters_timeout_callback(gpointer data);
|
||||
void level_meters_reset_peaks(GtkButton *button, gpointer data);
|
||||
void level_meters_init(void);
|
||||
|
|
@ -238,6 +237,5 @@ void ipga_volume_adjust(GtkAdjustment *adj, gpointer data);
|
|||
void dac_sense_toggled(GtkWidget *togglebutton, gpointer data);
|
||||
void adc_sense_toggled(GtkWidget *togglebutton, gpointer data);
|
||||
|
||||
void control_input_callback(gpointer data, gint source, GdkInputCondition condition);
|
||||
void mixer_input_callback(gpointer data, gint source, GdkInputCondition condition);
|
||||
gboolean control_input_callback(GIOChannel *gio, GIOCondition condition, gpointer data);
|
||||
|
||||
|
|
|
|||
|
|
@ -39,7 +39,14 @@ static inline int is_update_needed(void);
|
|||
|
||||
static int is_active(GtkWidget *widget)
|
||||
{
|
||||
return GTK_TOGGLE_BUTTON(widget)->active ? 1 : 0;
|
||||
return gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)) ? 1 : 0;
|
||||
}
|
||||
|
||||
static void label_set(GtkWidget* widget, const char* str)
|
||||
{
|
||||
const char* old = gtk_label_get_text(GTK_LABEL(widget));
|
||||
if (strcmp(old, str))
|
||||
gtk_label_set_text(GTK_LABEL(widget), str);
|
||||
}
|
||||
|
||||
void master_clock_update(void)
|
||||
|
|
@ -170,8 +177,8 @@ gint master_clock_status_timeout_callback(gpointer data)
|
|||
snd_ctl_elem_value_set_name(sw, "Word Clock Status");
|
||||
if ((err = snd_ctl_elem_read(ctl, sw)) < 0)
|
||||
g_print("Unable to determine word clock status: %s\n", snd_strerror(err));
|
||||
gtk_label_set_text(GTK_LABEL(hw_master_clock_status_label),
|
||||
snd_ctl_elem_value_get_boolean(sw, 0) ? "No signal" : "Locked");
|
||||
label_set(hw_master_clock_status_label,
|
||||
snd_ctl_elem_value_get_boolean(sw, 0) ? "No signal" : "Locked");
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
|
@ -246,7 +253,7 @@ gint internal_clock_status_timeout_callback(gpointer data)
|
|||
}
|
||||
}
|
||||
}
|
||||
gtk_label_set_text(GTK_LABEL(hw_master_clock_actual_rate_label), label);
|
||||
label_set(hw_master_clock_actual_rate_label, label);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
|
@ -354,7 +361,7 @@ void volume_change_rate_adj(GtkAdjustment *adj, gpointer data)
|
|||
{
|
||||
int err;
|
||||
|
||||
snd_ctl_elem_value_set_integer(volume_rate, 0, adj->value);
|
||||
snd_ctl_elem_value_set_integer(volume_rate, 0, gtk_adjustment_get_value(adj));
|
||||
if ((err = snd_ctl_elem_write(ctl, volume_rate)) < 0)
|
||||
g_print("Unable to write volume change rate: %s\n", snd_strerror(err));
|
||||
}
|
||||
|
|
@ -598,7 +605,7 @@ void spdif_output_toggled(GtkWidget *togglebutton, gpointer data)
|
|||
page = 1;
|
||||
}
|
||||
spdif_output_write();
|
||||
gtk_notebook_set_page(GTK_NOTEBOOK(hw_spdif_output_notebook), page);
|
||||
gtk_notebook_set_current_page(GTK_NOTEBOOK(hw_spdif_output_notebook), page);
|
||||
spdif_output_update();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -19,13 +19,13 @@
|
|||
|
||||
#include "envy24control.h"
|
||||
|
||||
static GdkGC *penGreenShadow[21] = { NULL, };
|
||||
static GdkGC *penGreenLight[21] = { NULL, };
|
||||
static GdkGC *penOrangeShadow[21] = { NULL, };
|
||||
static GdkGC *penOrangeLight[21] = { NULL, };
|
||||
static GdkGC *penRedShadow[21] = { NULL, };
|
||||
static GdkGC *penRedLight[21] = { NULL, };
|
||||
static GdkPixmap *pixmap[21] = { NULL, };
|
||||
static GdkRGBA *penGreenShadow = NULL;
|
||||
static GdkRGBA *penGreenLight = NULL;
|
||||
static GdkRGBA *penOrangeShadow = NULL;
|
||||
static GdkRGBA *penOrangeLight = NULL;
|
||||
static GdkRGBA *penRedShadow = NULL;
|
||||
static GdkRGBA *penRedLight = NULL;
|
||||
static int level[22] = { 0 };
|
||||
static snd_ctl_elem_value_t *peaks;
|
||||
|
||||
extern int input_channels, output_channels, pcm_output_channels, spdif_channels, view_spdif_playback;
|
||||
|
|
@ -50,19 +50,16 @@ static void get_levels(int idx, int *l1, int *l2)
|
|||
}
|
||||
}
|
||||
|
||||
static GdkGC *get_pen(int idx, int nRed, int nGreen, int nBlue)
|
||||
static GdkRGBA *get_pen(int nRed, int nGreen, int nBlue)
|
||||
{
|
||||
GdkColor *c;
|
||||
GdkGC *gc;
|
||||
GdkRGBA *c;
|
||||
|
||||
c = (GdkColor *)g_malloc(sizeof(GdkColor));
|
||||
c->red = nRed;
|
||||
c->green = nGreen;
|
||||
c->blue = nBlue;
|
||||
gdk_color_alloc(gdk_colormap_get_system(), c);
|
||||
gc = gdk_gc_new(pixmap[idx]);
|
||||
gdk_gc_set_foreground(gc, c);
|
||||
return gc;
|
||||
c = (GdkRGBA *)g_malloc(sizeof(GdkRGBA));
|
||||
c->red = nRed / 65535.0;
|
||||
c->green = nGreen / 65535.0;
|
||||
c->blue = nBlue / 65535.0;
|
||||
c->alpha = 1.0;
|
||||
return c;
|
||||
}
|
||||
|
||||
static int get_index(const gchar *name)
|
||||
|
|
@ -79,7 +76,7 @@ static int get_index(const gchar *name)
|
|||
return result;
|
||||
}
|
||||
|
||||
static void redraw_meters(int idx, int width, int height, int level1, int level2)
|
||||
static void redraw_meters(int idx, int width, int height, int level1, int level2, cairo_t *cr)
|
||||
{
|
||||
int stereo = idx == 0;
|
||||
int segment_width = stereo ? (width / 2) - 8 : width - 12;
|
||||
|
|
@ -90,167 +87,156 @@ static void redraw_meters(int idx, int width, int height, int level1, int level2
|
|||
int seg;
|
||||
int segs_on1 = ((segments * level1) + 128) / 255;
|
||||
int segs_on2 = ((segments * level2) + 128) / 255;
|
||||
int end_seg;
|
||||
GdkRectangle clip;
|
||||
|
||||
// g_print("segs_on1 = %i (%i), segs_on2 = %i (%i)\n", segs_on1, level1, segs_on2, level2);
|
||||
for (seg = 0; seg < green_segments; seg++) {
|
||||
gdk_draw_rectangle(pixmap[idx],
|
||||
segs_on1 > 0 ? penGreenLight[idx] : penGreenShadow[idx],
|
||||
TRUE,
|
||||
6, 3 + ((segments - seg - 1) * 4),
|
||||
segment_width,
|
||||
3);
|
||||
if (stereo)
|
||||
gdk_draw_rectangle(pixmap[idx],
|
||||
segs_on2 > 0 ? penGreenLight[idx] : penGreenShadow[idx],
|
||||
TRUE,
|
||||
2 + (width / 2),
|
||||
3 + ((segments - seg - 1) * 4),
|
||||
segment_width,
|
||||
3);
|
||||
cairo_rectangle(cr, 0, 0, width, height);
|
||||
cairo_fill(cr);
|
||||
|
||||
gdk_cairo_get_clip_rectangle(cr, &clip);
|
||||
seg = segments - (clip.y + clip.height) / 4;
|
||||
if (seg < 0)
|
||||
seg = 0;
|
||||
segs_on1 -= seg;
|
||||
segs_on2 -= seg;
|
||||
end_seg = segments - (clip.y - 2) / 4;
|
||||
|
||||
for (; seg < green_segments && seg < end_seg; seg++) {
|
||||
gdk_cairo_set_source_rgba(cr,
|
||||
segs_on1 > 0 ? penGreenLight : penGreenShadow);
|
||||
cairo_rectangle(cr,
|
||||
6, 3 + ((segments - seg - 1) * 4),
|
||||
segment_width,
|
||||
3);
|
||||
cairo_fill(cr);
|
||||
if (stereo) {
|
||||
gdk_cairo_set_source_rgba(cr,
|
||||
segs_on2 > 0 ? penGreenLight : penGreenShadow);
|
||||
cairo_rectangle(cr,
|
||||
2 + (width / 2),
|
||||
3 + ((segments - seg - 1) * 4),
|
||||
segment_width,
|
||||
3);
|
||||
cairo_fill(cr);
|
||||
}
|
||||
segs_on1--;
|
||||
segs_on2--;
|
||||
}
|
||||
for (seg = green_segments; seg < green_segments + orange_segments; seg++) {
|
||||
gdk_draw_rectangle(pixmap[idx],
|
||||
segs_on1 > 0 ? penOrangeLight[idx] : penOrangeShadow[idx],
|
||||
TRUE,
|
||||
6, 3 + ((segments - seg - 1) * 4),
|
||||
segment_width,
|
||||
3);
|
||||
if (stereo)
|
||||
gdk_draw_rectangle(pixmap[idx],
|
||||
segs_on2 > 0 ? penOrangeLight[idx] : penOrangeShadow[idx],
|
||||
TRUE,
|
||||
2 + (width / 2),
|
||||
3 + ((segments - seg - 1) * 4),
|
||||
segment_width,
|
||||
3);
|
||||
for (; seg < green_segments + orange_segments && seg < end_seg; seg++) {
|
||||
gdk_cairo_set_source_rgba(cr,
|
||||
segs_on1 > 0 ? penOrangeLight : penOrangeShadow);
|
||||
cairo_rectangle(cr,
|
||||
6, 3 + ((segments - seg - 1) * 4),
|
||||
segment_width,
|
||||
3);
|
||||
cairo_fill(cr);
|
||||
if (stereo) {
|
||||
gdk_cairo_set_source_rgba(cr,
|
||||
segs_on2 > 0 ? penOrangeLight : penOrangeShadow);
|
||||
cairo_rectangle(cr,
|
||||
2 + (width / 2),
|
||||
3 + ((segments - seg - 1) * 4),
|
||||
segment_width,
|
||||
3);
|
||||
cairo_fill(cr);
|
||||
}
|
||||
segs_on1--;
|
||||
segs_on2--;
|
||||
}
|
||||
for (seg = green_segments + orange_segments; seg < segments; seg++) {
|
||||
gdk_draw_rectangle(pixmap[idx],
|
||||
segs_on1 > 0 ? penRedLight[idx] : penRedShadow[idx],
|
||||
TRUE,
|
||||
6, 3 + ((segments - seg - 1) * 4),
|
||||
segment_width,
|
||||
3);
|
||||
if (stereo)
|
||||
gdk_draw_rectangle(pixmap[idx],
|
||||
segs_on2 > 0 ? penRedLight[idx] : penRedShadow[idx],
|
||||
TRUE,
|
||||
2 + (width / 2),
|
||||
3 + ((segments - seg - 1) * 4),
|
||||
segment_width,
|
||||
3);
|
||||
for (; seg < segments && seg < end_seg; seg++) {
|
||||
gdk_cairo_set_source_rgba(cr,
|
||||
segs_on1 > 0 ? penRedLight : penRedShadow);
|
||||
cairo_rectangle(cr,
|
||||
6, 3 + ((segments - seg - 1) * 4),
|
||||
segment_width,
|
||||
3);
|
||||
cairo_fill(cr);
|
||||
if (stereo) {
|
||||
gdk_cairo_set_source_rgba(cr,
|
||||
segs_on2 > 0 ? penRedLight : penRedShadow);
|
||||
cairo_rectangle(cr,
|
||||
2 + (width / 2),
|
||||
3 + ((segments - seg - 1) * 4),
|
||||
segment_width,
|
||||
3);
|
||||
cairo_fill(cr);
|
||||
}
|
||||
segs_on1--;
|
||||
segs_on2--;
|
||||
}
|
||||
}
|
||||
|
||||
gint level_meters_configure_event(GtkWidget *widget, GdkEventConfigure *event)
|
||||
{
|
||||
int idx = get_index(gtk_widget_get_name(widget));
|
||||
|
||||
if (pixmap[idx] != NULL)
|
||||
gdk_pixmap_unref(pixmap[idx]);
|
||||
pixmap[idx] = gdk_pixmap_new(widget->window,
|
||||
widget->allocation.width,
|
||||
widget->allocation.height,
|
||||
-1);
|
||||
penGreenShadow[idx] = get_pen(idx, 0, 0x77ff, 0);
|
||||
penGreenLight[idx] = get_pen(idx, 0, 0xffff, 0);
|
||||
penOrangeShadow[idx] = get_pen(idx, 0xddff, 0x55ff, 0);
|
||||
penOrangeLight[idx] = get_pen(idx, 0xffff, 0x99ff, 0);
|
||||
penRedShadow[idx] = get_pen(idx, 0xaaff, 0, 0);
|
||||
penRedLight[idx] = get_pen(idx, 0xffff, 0, 0);
|
||||
gdk_draw_rectangle(pixmap[idx],
|
||||
widget->style->black_gc,
|
||||
TRUE,
|
||||
0, 0,
|
||||
widget->allocation.width,
|
||||
widget->allocation.height);
|
||||
// g_print("configure: %i:%i\n", widget->allocation.width, widget->allocation.height);
|
||||
redraw_meters(idx, widget->allocation.width, widget->allocation.height, 0, 0);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
gint level_meters_expose_event(GtkWidget *widget, GdkEventExpose *event)
|
||||
gboolean level_meters_draw_callback(GtkWidget *widget, cairo_t *cr, gpointer data)
|
||||
{
|
||||
int idx = get_index(gtk_widget_get_name(widget));
|
||||
int l1, l2;
|
||||
|
||||
get_levels(idx, &l1, &l2);
|
||||
redraw_meters(idx, widget->allocation.width, widget->allocation.height, l1, l2);
|
||||
gdk_draw_pixmap(widget->window,
|
||||
widget->style->black_gc,
|
||||
pixmap[idx],
|
||||
event->area.x, event->area.y,
|
||||
event->area.x, event->area.y,
|
||||
event->area.width, event->area.height);
|
||||
redraw_meters(idx, gtk_widget_get_allocated_width(widget), gtk_widget_get_allocated_height(widget), l1, l2, cr);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void update_meter(int idx)
|
||||
{
|
||||
int stereo = idx == 0;
|
||||
GtkWidget *widget = stereo ? mixer_mix_drawing : mixer_drawing[idx - 1];
|
||||
int width = gtk_widget_get_allocated_width(widget);
|
||||
int height = gtk_widget_get_allocated_height(widget);
|
||||
int segments = (height - 6) / 4;
|
||||
int level_idx = stereo ? 20 : idx - 1;
|
||||
int l1, l2, segs_on, old_segs_on, h;
|
||||
|
||||
get_levels(idx, &l1, &l2);
|
||||
segs_on = ((segments * l1) + 128) / 255;
|
||||
old_segs_on = ((segments * level[level_idx]) + 128) / 255;
|
||||
h = abs(old_segs_on - segs_on);
|
||||
level[level_idx] = l1;
|
||||
|
||||
if (h > 0) {
|
||||
int y = segments - MAX(old_segs_on, segs_on);
|
||||
gtk_widget_queue_draw_area(widget,
|
||||
6, 4 * y + 3,
|
||||
stereo ? (width / 2) - 8 : width - 12,
|
||||
4 * h - 1);
|
||||
}
|
||||
|
||||
if (stereo) {
|
||||
level_idx++;
|
||||
segs_on = ((segments * l2) + 128) / 255;
|
||||
old_segs_on = ((segments * level[level_idx]) + 128) / 255;
|
||||
h = abs(old_segs_on - segs_on);
|
||||
level[level_idx] = l2;
|
||||
|
||||
if (h > 0) {
|
||||
int y = segments - MAX(old_segs_on, segs_on);
|
||||
gtk_widget_queue_draw_area(widget,
|
||||
2 + (width / 2), 4 * y + 3,
|
||||
(width / 2) - 8,
|
||||
4 * h - 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
gint level_meters_timeout_callback(gpointer data)
|
||||
{
|
||||
GtkWidget *widget;
|
||||
int idx, l1, l2;
|
||||
int idx;
|
||||
|
||||
update_peak_switch();
|
||||
for (idx = 0; idx <= pcm_output_channels; idx++) {
|
||||
get_levels(idx, &l1, &l2);
|
||||
widget = idx == 0 ? mixer_mix_drawing : mixer_drawing[idx-1];
|
||||
if (GTK_WIDGET_VISIBLE(widget) && (pixmap[idx] != NULL)) {
|
||||
redraw_meters(idx, widget->allocation.width, widget->allocation.height, l1, l2);
|
||||
gdk_draw_pixmap(widget->window,
|
||||
widget->style->black_gc,
|
||||
pixmap[idx],
|
||||
0, 0,
|
||||
0, 0,
|
||||
widget->allocation.width, widget->allocation.height);
|
||||
}
|
||||
update_meter(idx);
|
||||
}
|
||||
if (view_spdif_playback) {
|
||||
for (idx = MAX_PCM_OUTPUT_CHANNELS + 1; idx <= MAX_OUTPUT_CHANNELS + spdif_channels; idx++) {
|
||||
get_levels(idx, &l1, &l2);
|
||||
widget = idx == 0 ? mixer_mix_drawing : mixer_drawing[idx-1];
|
||||
if (GTK_WIDGET_VISIBLE(widget) && (pixmap[idx] != NULL)) {
|
||||
redraw_meters(idx, widget->allocation.width, widget->allocation.height, l1, l2);
|
||||
gdk_draw_pixmap(widget->window,
|
||||
widget->style->black_gc,
|
||||
pixmap[idx],
|
||||
0, 0,
|
||||
0, 0,
|
||||
widget->allocation.width, widget->allocation.height);
|
||||
}
|
||||
update_meter(idx);
|
||||
}
|
||||
}
|
||||
for (idx = MAX_PCM_OUTPUT_CHANNELS + MAX_SPDIF_CHANNELS + 1; idx <= input_channels + MAX_PCM_OUTPUT_CHANNELS + MAX_SPDIF_CHANNELS; idx++) {
|
||||
get_levels(idx, &l1, &l2);
|
||||
widget = idx == 0 ? mixer_mix_drawing : mixer_drawing[idx-1];
|
||||
if (GTK_WIDGET_VISIBLE(widget) && (pixmap[idx] != NULL)) {
|
||||
redraw_meters(idx, widget->allocation.width, widget->allocation.height, l1, l2);
|
||||
gdk_draw_pixmap(widget->window,
|
||||
widget->style->black_gc,
|
||||
pixmap[idx],
|
||||
0, 0,
|
||||
0, 0,
|
||||
widget->allocation.width, widget->allocation.height);
|
||||
}
|
||||
update_meter(idx);
|
||||
}
|
||||
for (idx = MAX_PCM_OUTPUT_CHANNELS + MAX_SPDIF_CHANNELS + MAX_INPUT_CHANNELS + 1; \
|
||||
idx <= spdif_channels + MAX_PCM_OUTPUT_CHANNELS + MAX_SPDIF_CHANNELS + MAX_INPUT_CHANNELS; idx++) {
|
||||
get_levels(idx, &l1, &l2);
|
||||
widget = idx == 0 ? mixer_mix_drawing : mixer_drawing[idx-1];
|
||||
if (GTK_WIDGET_VISIBLE(widget) && (pixmap[idx] != NULL)) {
|
||||
redraw_meters(idx, widget->allocation.width, widget->allocation.height, l1, l2);
|
||||
gdk_draw_pixmap(widget->window,
|
||||
widget->style->black_gc,
|
||||
pixmap[idx],
|
||||
0, 0,
|
||||
0, 0,
|
||||
widget->allocation.width, widget->allocation.height);
|
||||
}
|
||||
update_meter(idx);
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
|
@ -270,6 +256,13 @@ void level_meters_init(void)
|
|||
/* older ALSA driver, using MIXER type */
|
||||
snd_ctl_elem_value_set_interface(peaks,
|
||||
SND_CTL_ELEM_IFACE_MIXER);
|
||||
|
||||
penGreenShadow = get_pen(0, 0x77ff, 0);
|
||||
penGreenLight = get_pen(0, 0xffff, 0);
|
||||
penOrangeShadow = get_pen(0xddff, 0x55ff, 0);
|
||||
penOrangeLight = get_pen(0xffff, 0x99ff, 0);
|
||||
penRedShadow = get_pen(0xaaff, 0, 0);
|
||||
penRedLight = get_pen(0xffff, 0, 0);
|
||||
}
|
||||
|
||||
void level_meters_postinit(void)
|
||||
|
|
|
|||
|
|
@ -243,7 +243,7 @@ int midi_init(char *appname, int channel, int midi_enhanced)
|
|||
void mixer_adjust(GtkAdjustment *adj, gpointer data);
|
||||
void mixer_set_mute(int stream, int left, int right);
|
||||
|
||||
void midi_process(gpointer data, gint source, GdkInputCondition condition)
|
||||
gboolean midi_process(GIOChannel *gio, GIOCondition condition, gpointer data)
|
||||
{
|
||||
snd_seq_event_t *ev;
|
||||
static GtkAdjustment *adj=0;
|
||||
|
|
@ -306,6 +306,7 @@ void midi_process(gpointer data, gint source, GdkInputCondition condition)
|
|||
snd_seq_free_event(ev);
|
||||
}
|
||||
while (snd_seq_event_input_pending(seq, 0) > 0);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* ************************************************* */
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ int midi_init(char *appname, int channel, int midi_enhanced);
|
|||
int midi_close();
|
||||
void midi_maxstreams(int);
|
||||
int midi_controller(int c, int v);
|
||||
void midi_process(gpointer data, gint source, GdkInputCondition condition);
|
||||
gboolean midi_process(GIOChannel *gio, GIOCondition condition, gpointer data);
|
||||
int midi_button(int b, int v);
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -39,7 +39,7 @@ extern int input_channels, output_channels, pcm_output_channels, spdif_channels,
|
|||
|
||||
static int is_active(GtkWidget *widget)
|
||||
{
|
||||
return GTK_TOGGLE_BUTTON(widget)->active ? 1 : 0;
|
||||
return gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)) ? 1 : 0;
|
||||
}
|
||||
|
||||
void mixer_update_stream(int stream, int vol_flag, int sw_flag)
|
||||
|
|
@ -181,10 +181,10 @@ void mixer_adjust(GtkAdjustment *adj, gpointer data)
|
|||
int stereo = is_active(mixer_stereo_toggle[stream-1]) ? 1 : 0;
|
||||
int vol[2] = { -1, -1 };
|
||||
|
||||
vol[button] = 96 - adj->value;
|
||||
vol[button] = 96 - gtk_adjustment_get_value(adj);
|
||||
if (stereo) {
|
||||
gtk_adjustment_set_value(GTK_ADJUSTMENT(mixer_adj[stream-1][button ^ 1]), adj->value);
|
||||
vol[button ^ 1] = 96 - adj->value;
|
||||
gtk_adjustment_set_value(GTK_ADJUSTMENT(mixer_adj[stream-1][button ^ 1]), gtk_adjustment_get_value(adj));
|
||||
vol[button ^ 1] = 96 - gtk_adjustment_get_value(adj);
|
||||
}
|
||||
set_volume1(stream, vol[0], vol[1]);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ extern int output_channels, input_channels, pcm_output_channels, spdif_channels;
|
|||
|
||||
static int is_active(GtkWidget *widget)
|
||||
{
|
||||
return GTK_TOGGLE_BUTTON(widget)->active ? 1 : 0;
|
||||
return gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)) ? 1 : 0;
|
||||
}
|
||||
|
||||
static int get_toggle_index(int stream)
|
||||
|
|
|
|||
|
|
@ -217,7 +217,7 @@ void dac_volume_adjust(GtkAdjustment *adj, gpointer data)
|
|||
{
|
||||
int idx = (int)(long)data;
|
||||
snd_ctl_elem_value_t *val;
|
||||
int err, ival = -(int)adj->value;
|
||||
int err, ival = -(int)gtk_adjustment_get_value(adj);
|
||||
char text[16];
|
||||
|
||||
snd_ctl_elem_value_alloca(&val);
|
||||
|
|
@ -235,7 +235,7 @@ void adc_volume_adjust(GtkAdjustment *adj, gpointer data)
|
|||
{
|
||||
int idx = (int)(long)data;
|
||||
snd_ctl_elem_value_t *val;
|
||||
int err, ival = -(int)adj->value;
|
||||
int err, ival = -(int)gtk_adjustment_get_value(adj);
|
||||
char text[16];
|
||||
|
||||
snd_ctl_elem_value_alloca(&val);
|
||||
|
|
@ -253,7 +253,7 @@ void ipga_volume_adjust(GtkAdjustment *adj, gpointer data)
|
|||
{
|
||||
int idx = (int)(long)data;
|
||||
snd_ctl_elem_value_t *val;
|
||||
int err, ival = -(int)adj->value;
|
||||
int err, ival = -(int)gtk_adjustment_get_value(adj);
|
||||
char text[16];
|
||||
|
||||
snd_ctl_elem_value_alloca(&val);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue