Blame envy24control/driverevents.c

Packit 427e91
/*****************************************************************************
Packit 427e91
   driverevents.c - Events from the driver processing
Packit 427e91
   Copyright (C) 2000 by Jaroslav Kysela <perex@perex.cz>
Packit 427e91
   
Packit 427e91
   This program is free software; you can redistribute it and/or
Packit 427e91
   modify it under the terms of the GNU General Public License
Packit 427e91
   as published by the Free Software Foundation; either version 2
Packit 427e91
   of the License, or (at your option) any later version.
Packit 427e91
   
Packit 427e91
   This program is distributed in the hope that it will be useful,
Packit 427e91
   but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit 427e91
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Packit 427e91
   GNU General Public License for more details.
Packit 427e91
   
Packit 427e91
   You should have received a copy of the GNU General Public License
Packit 427e91
   along with this program; if not, write to the Free Software
Packit 427e91
   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
Packit 427e91
******************************************************************************/
Packit 427e91
Packit 427e91
#include "envy24control.h"
Packit 427e91
Packit 427e91
void control_input_callback(gpointer data, gint source, GdkInputCondition condition)
Packit 427e91
{
Packit 427e91
	snd_ctl_t *ctl = (snd_ctl_t *)data;
Packit 427e91
	snd_ctl_event_t *ev;
Packit 427e91
	const char *name;
Packit 427e91
	int index;
Packit 427e91
	unsigned int mask;
Packit 427e91
Packit 427e91
	snd_ctl_event_alloca(&ev;;
Packit 427e91
	if (snd_ctl_read(ctl, ev) < 0)
Packit 427e91
		return;
Packit 427e91
	name = snd_ctl_event_elem_get_name(ev);
Packit 427e91
	index = snd_ctl_event_elem_get_index(ev);
Packit 427e91
	mask = snd_ctl_event_elem_get_mask(ev);
Packit 427e91
	if (! (mask & (SND_CTL_EVENT_MASK_VALUE | SND_CTL_EVENT_MASK_INFO)))
Packit 427e91
		return;
Packit 427e91
Packit 427e91
	switch (snd_ctl_event_elem_get_interface(ev)) {
Packit 427e91
	case SND_CTL_ELEM_IFACE_MIXER:
Packit 427e91
		if (!strcmp(name, "Word Clock Sync"))
Packit 427e91
			master_clock_update();
Packit 427e91
		else if (!strcmp(name, "Multi Track Volume Rate"))
Packit 427e91
			volume_change_rate_update();
Packit 427e91
		else if (!strcmp(name, "IEC958 Input Optical"))
Packit 427e91
			spdif_input_update();
Packit 427e91
		else if (!strcmp(name, "Delta IEC958 Output Defaults"))
Packit 427e91
			spdif_output_update();
Packit 427e91
		else if (!strcmp(name, "Multi Track Internal Clock"))
Packit 427e91
			master_clock_update();
Packit 427e91
		else if (!strcmp(name, "Multi Track Internal Clock Default"))
Packit 427e91
			master_clock_update();
Packit 427e91
		else if (!strcmp(name, "Multi Track Rate Locking"))
Packit 427e91
			rate_locking_update();
Packit 427e91
		else if (!strcmp(name, "Multi Track Rate Reset"))
Packit 427e91
			rate_reset_update();
Packit 427e91
		else if (!strcmp(name, "Multi Playback Volume"))
Packit 427e91
			mixer_update_stream(index + 1, 1, 0);
Packit 427e91
		else if (!strcmp(name, "H/W Multi Capture Volume"))
Packit 427e91
			mixer_update_stream(index + 11, 1, 0);
Packit 427e91
		else if (!strcmp(name, "IEC958 Multi Capture Volume"))
Packit 427e91
			mixer_update_stream(index + 19, 1, 0);
Packit 427e91
		else if (!strcmp(name, "Multi Playback Switch"))
Packit 427e91
			mixer_update_stream(index + 1, 0, 1);
Packit 427e91
		else if (!strcmp(name, "H/W Multi Capture Switch"))
Packit 427e91
			mixer_update_stream(index + 11, 0, 1);
Packit 427e91
		else if (!strcmp(name, "IEC958 Multi Capture Switch"))
Packit 427e91
			mixer_update_stream(index + 19, 0, 1);
Packit 427e91
		else if (!strcmp(name, "H/W Playback Route"))
Packit 427e91
			patchbay_update();
Packit 427e91
		else if (!strcmp(name, "IEC958 Playback Route"))
Packit 427e91
			patchbay_update();
Packit 427e91
		else if (!strcmp(name, "DAC Volume"))
Packit 427e91
			dac_volume_update(index);
Packit 427e91
		else if (!strcmp(name, "ADC Volume"))
Packit 427e91
			adc_volume_update(index);
Packit 427e91
		else if (!strcmp(name, "IPGA Analog Capture Volume"))
Packit 427e91
			ipga_volume_update(index);
Packit 427e91
		else if (!strcmp(name, "Output Sensitivity Switch"))
Packit 427e91
			dac_sense_update(index);
Packit 427e91
		else if (!strcmp(name, "Input Sensitivity Switch"))
Packit 427e91
			adc_sense_update(index);
Packit 427e91
		break;
Packit 427e91
	default:
Packit 427e91
		break;
Packit 427e91
	}
Packit 427e91
}
Packit 427e91