From 8e2b523a92329e4b8a48da18bb3614c47470e44f Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Wed, 5 Jan 2000 13:46:58 +0000 Subject: [PATCH] GTK mixer programs xamixer2 & gamix were removed. The reason is the difficult maintaince. --- Makefile.am | 12 +- configure.in | 20 +- gamix/ChangeLog | 66 --- gamix/Makefile.am | 9 - gamix/README | 10 - gamix/catch.c | 651 ----------------------------- gamix/conf_w.c | 850 ------------------------------------- gamix/gamix.h | 121 ------ gamix/main.c | 293 ------------- gamix/mkmixer.c | 942 ------------------------------------------ gamix/probe.c | 441 -------------------- xamixer2/AUTHORS | 0 xamixer2/COPYING | 282 ------------- xamixer2/ChangeLog | 0 xamixer2/INSTALL | 182 -------- xamixer2/Makefile.am | 5 - xamixer2/NEWS | 0 xamixer2/README | 0 xamixer2/TODO | 0 xamixer2/callbacks.c | 225 ---------- xamixer2/callbacks.h | 28 -- xamixer2/cinit.c | 386 ----------------- xamixer2/cinit.h | 25 -- xamixer2/config.c | 483 ---------------------- xamixer2/config.h | 24 -- xamixer2/configure.in | 11 - xamixer2/display.c | 592 -------------------------- xamixer2/display.h | 33 -- xamixer2/main.c | 0 xamixer2/main.h | 95 ----- xamixer2/options.c | 0 xamixer2/options.h | 0 xamixer2/structs.h | 137 ------ xamixer2/switches.c | 0 xamixer2/switches.h | 0 xamixer2/test.c | 31 -- xamixer2/test1.c | 11 - xamixer2/util.c | 173 -------- xamixer2/util.h | 37 -- xamixer2/xamixer.conf | 47 --- xamixer2/xamixer.home | 47 --- xamixer2/xamixer2.c | 198 --------- xamixer2/xamixer2.h | 25 -- 43 files changed, 6 insertions(+), 6486 deletions(-) delete mode 100644 gamix/ChangeLog delete mode 100644 gamix/Makefile.am delete mode 100644 gamix/README delete mode 100644 gamix/catch.c delete mode 100644 gamix/conf_w.c delete mode 100644 gamix/gamix.h delete mode 100644 gamix/main.c delete mode 100644 gamix/mkmixer.c delete mode 100644 gamix/probe.c delete mode 100644 xamixer2/AUTHORS delete mode 100644 xamixer2/COPYING delete mode 100644 xamixer2/ChangeLog delete mode 100644 xamixer2/INSTALL delete mode 100644 xamixer2/Makefile.am delete mode 100644 xamixer2/NEWS delete mode 100644 xamixer2/README delete mode 100644 xamixer2/TODO delete mode 100644 xamixer2/callbacks.c delete mode 100644 xamixer2/callbacks.h delete mode 100644 xamixer2/cinit.c delete mode 100644 xamixer2/cinit.h delete mode 100644 xamixer2/config.c delete mode 100644 xamixer2/config.h delete mode 100644 xamixer2/configure.in delete mode 100644 xamixer2/display.c delete mode 100644 xamixer2/display.h delete mode 100644 xamixer2/main.c delete mode 100644 xamixer2/main.h delete mode 100644 xamixer2/options.c delete mode 100644 xamixer2/options.h delete mode 100644 xamixer2/structs.h delete mode 100644 xamixer2/switches.c delete mode 100644 xamixer2/switches.h delete mode 100644 xamixer2/test.c delete mode 100644 xamixer2/test1.c delete mode 100644 xamixer2/util.c delete mode 100644 xamixer2/util.h delete mode 100644 xamixer2/xamixer.conf delete mode 100644 xamixer2/xamixer.home delete mode 100644 xamixer2/xamixer2.c delete mode 100644 xamixer2/xamixer2.h diff --git a/Makefile.am b/Makefile.am index 59e2f0a..32cfa81 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,15 +1,5 @@ INCLUDES=-I$(top_srcdir)/include -SUBDIRS1=include alsactl alsamixer amixer aplay seq utils -if COND_XAMIXER2 -SUBDIRS2=$(SUBDIRS1) xamixer2 -else -SUBDIRS2=$(SUBDIRS1) -endif -if COND_GAMIX -SUBDIRS=$(SUBDIRS2) gamix -else -SUBDIRS=$(SUBDIRS2) -endif +SUBDIRS=include alsactl alsamixer amixer aplay seq utils EXTRA_DIST=ChangeLog INSTALL README configure cvscompile rpm: dist diff --git a/configure.in b/configure.in index e503880..41a6688 100644 --- a/configure.in +++ b/configure.in @@ -5,7 +5,7 @@ AM_INIT_AUTOMAKE(alsa-utils, 0.5.0) dnl Checks for programs. AC_PROG_CC -AC_PROG_CXX +dnl AC_PROG_CXX AC_PROG_INSTALL AC_PROG_LN_S AC_PROG_YACC @@ -24,10 +24,8 @@ AC_SUBST(CURSESINC) AC_SUBST(CURSESLIB) dnl Check for Gtk+ -AM_PATH_GTK(1.0.1) -CFLAGS="$CFLAGS $GTK_CFLAGS" -# LDFLAGS="$LDFLAGS $GTK_LIBS" - +dnl AM_PATH_GTK(1.0.1) +dnl CFLAGS="$CFLAGS $GTK_CFLAGS" AM_CONFIG_HEADER(include/aconfig.h) @@ -41,14 +39,6 @@ AC_PROG_GCC_TRADITIONAL SAVE_UTIL_VERSION -AM_CONDITIONAL(COND_XAMIXER2, test "x$GTK_LIBS" != "x") -if test "x$GTK_LIBS" = "x"; then - AC_MSG_RESULT(Not building XAmixer2 as Gtk+ was not found.) -fi -AM_CONDITIONAL(COND_GAMIX, test "x$GTK_LIBS" != "x") -if test "x$GTK_LIBS" = "x"; then - AC_MSG_RESULT(Not building gamix as Gtk+ was not found.) -fi AC_OUTPUT(Makefile alsactl/Makefile alsamixer/Makefile amixer/Makefile aplay/Makefile \ - include/Makefile utils/Makefile utils/alsa-utils.spec xamixer2/Makefile - gamix/Makefile seq/Makefile seq/aconnect/Makefile seq/aseqnet/Makefile) + include/Makefile utils/Makefile utils/alsa-utils.spec \ + seq/Makefile seq/aconnect/Makefile seq/aseqnet/Makefile) diff --git a/gamix/ChangeLog b/gamix/ChangeLog deleted file mode 100644 index eeb48b0..0000000 --- a/gamix/ChangeLog +++ /dev/null @@ -1,66 +0,0 @@ -1999-11-03 Fumihiko Murata - - * main.c: add some messages. - -1999-10-19 Fumihiko Murata - - * conf_w.c: imprement mixer reorder. - -1999-10-16 Fumihiko Murata - - * main.c: add "-h" option. - -1999-10-11 Fumihiko Murata - - * main.c: imprement config select "-c" option. - -1999-10-08 Fumihiko Murata - - * supported dynamic element. - -1999-10-01 Fumihiko Murata - - * conf_w.c: fix spacing mode. - -1999-09-26 Fumihiko Murata - - * change array to chain. - -1999-09-25 Fumihiko Murata - - * conf_w.c: fix read config file. - -1999-09-14 Fumihiko Murata - - * start support element type pc1. - -1999-09-06 Fumihiko Murata - - * probe.c : free none used mux memory. - -1999-08-16 Fumihiko Murata - - * catch.c : add element tone control. - * mkmixer.c : add element tone control. - -1999-08-11 Fumihiko Murata - - * catch.c : add 3d effect 7th param. - * mkmixer.c : add 3d effect 7th param. - -1999-08-04 Fumihiko Murata - - * probe.c: fixed multi haven element problem. - -1999-08-03 Fumihiko Murata - - * catch.c: fixed mux lock. - -1999-07-30 Fumihiko Murata - - * conf_w.c: fixed case of cards[i].mixer[j].ee_n = 0. - -1999-07-19 Fumihiko Murata - - * probe.c: fixed multi mixerdevices. - diff --git a/gamix/Makefile.am b/gamix/Makefile.am deleted file mode 100644 index 5686135..0000000 --- a/gamix/Makefile.am +++ /dev/null @@ -1,9 +0,0 @@ -bin_PROGRAMS = gamix - -INCLUDES = -DLOCALEDIR=\""$(datadir)/locale"\" - -DEFS := $(DEFS) -DPACKAGE=\""alsa-utils\"" -DVERSION=\""$(VERSION)\"" -gamix_SOURCES = gamix.h main.c mkmixer.c probe.c catch.c conf_w.c -gamix_LDFLAGS = $(GTK_LIBS) - -EXTRA_DIST = ChangeLog diff --git a/gamix/README b/gamix/README deleted file mode 100644 index 189a418..0000000 --- a/gamix/README +++ /dev/null @@ -1,10 +0,0 @@ -GTK ALSA audio mixer gamix ver. 1.09p4 - by Fumihiko Murata - DaiCom Software - -This is a mixer application for ALSA using GTK. - -If you want to use international version (supported Japanese only), -check original source - http://www1.tcnet.ne.jp/fmurata/linux/down/ -and download last gamix-*.tar.gz. * is version number. diff --git a/gamix/catch.c b/gamix/catch.c deleted file mode 100644 index 1fa847d..0000000 --- a/gamix/catch.c +++ /dev/null @@ -1,651 +0,0 @@ - -#include "gamix.h" - -typedef struct e_q_cell e_q_cell_t; -struct e_q_cell { - snd_mixer_eid_t eid; - e_q_cell_t *next; -}; -typedef struct g_q_cell g_q_cell_t; -struct g_q_cell { - snd_mixer_gid_t gid; - g_q_cell_t *next; -}; - -static snd_mixer_callbacks_t cb_mix; -static char *cmd_name[]={"rebuild","element value","element change", - "element route","element add","element remove", - "group value","group change","group add", - "group remove" -}; -static struct { - e_q_cell_t *q; - int q_n; -} e_q; -static struct { - g_q_cell_t *q; - int q_n; -} g_q; - -static void cb_rb(void *); -static void element_callback(void *,int,snd_mixer_eid_t *); -static void cb_gp(void *,int,snd_mixer_gid_t *); -static void search_obj_elem(s_obj_t **,s_element_t **,snd_mixer_eid_t *); -static void s_e_chk(s_element_t *); -static void rmw_elem(s_element_t *); -static int que_e( snd_mixer_eid_t * ); -static int que_g( snd_mixer_gid_t * ); -static int chk_group( s_mixer_t * ); -static void element_free(s_element_t *); -static gboolean chk_eid(s_obj_t *,snd_mixer_eid_t * ); - -extern GtkWidget *main_vbox; -extern GtkWidget *mixer_container; - -static void cb_rb(void *pd ) { - printf("cb rb hoe\n"); -} - -static void element_callback(void *pd,int cmd,snd_mixer_eid_t *eid) { - int i,j; - gint ccc; - s_group_t *group; - s_element_t *e; - s_eelements_t *ee; - s_mixer_t *mixer=(s_mixer_t *)pd; - s_obj_t *obj=mixer->obj; - - if( !is_etype(eid->type) ) return; - - search_obj_elem(&obj,&e,eid); - switch( cmd ) { - case SND_MIXER_READ_ELEMENT_VALUE: - if( obj == NULL || e == NULL ) break; - snd_mixer_element_read(mixer->handle,&e->e); - if( obj->enabled ) { - ccc=obj->chain; - obj->chain=FALSE; - s_e_chk(e); - obj->chain=ccc; - } - return; - break; - case SND_MIXER_READ_ELEMENT_REMOVE: - if( obj == NULL || e == NULL ) break; - if( obj->enabled ) rmw_elem(e); - return; - break; - case SND_MIXER_READ_ELEMENT_ADD: - if( obj && e ) { - return; - } else { - if( que_e(eid) == 0 ) return; - } - break; - case SND_MIXER_READ_ELEMENT_CHANGE: - case SND_MIXER_READ_ELEMENT_ROUTE: - default: - printf("eb el cmd %s eid '%s',%d,%d\n",cmd_name[cmd],eid->name,eid->index,eid->type); - return; - } - - printf("cb_el cmd %s %s %d %d\n",cmd_name[cmd],eid->name,eid->index, - eid->type); -} - -static void search_obj_elem( s_obj_t **objs,s_element_t **e_r, - snd_mixer_eid_t *eid) { - s_element_t *e; - s_eelements_t *ee; - s_group_t *group; - s_obj_t *obj; - int j; - - for( obj=*objs ; obj != NULL ; obj=obj->next ) { - if( obj->e ) { - ee=obj->e; - if( strcmp(ee->e.e.eid.name,eid->name)==0 && - ee->e.e.eid.index==eid->index ) { - *objs=obj; - *e_r=&ee->e; - return; - } - } - if( obj->g ) { - group=obj->g; - for( j=0 ; jg.elements ; j++ ) { - e=&group->e[j]; - if( strcmp(e->e.eid.name,eid->name) == 0 && - e->e.eid.index == eid->index && e->e.eid.type != 0 ) { - *objs=obj; - *e_r=e; - return; - } - } - } - } - *objs=NULL; - *e_r=NULL; -} - -static int que_e(snd_mixer_eid_t *eid ) { - e_q_cell_t *p; - - if( e_q.q == NULL ) { - e_q.q=(e_q_cell_t *)malloc(sizeof(e_q_cell_t)); - if( e_q.q == NULL ) { - fprintf(stderr,nomem_msg); - return -1; - } - p=e_q.q; - p->eid=*eid; - p->next=NULL; - e_q.q_n=1; - return 0; - } - p=e_q.q; - while( p->next != NULL ) { - if( strcmp(p->eid.name,eid->name) == 0 && p->eid.index == eid->index ) - return 0; - p=p->next; - } - if( strcmp(p->eid.name,eid->name) == 0 && p->eid.index == eid->index ) - return 0; - p->next=(e_q_cell_t *)malloc(sizeof(e_q_cell_t)); - if( p->next==NULL ) { - fprintf(stderr,nomem_msg); - return -1; - } - p=p->next; - p->eid=*eid; - p->next=NULL; - e_q.q_n++; - return 0; -} - -static void cb_gp(void *pd,int cmd,snd_mixer_gid_t *gid) { - s_mixer_t *mixer=(s_mixer_t *)pd; - s_obj_t *obj=mixer->obj,*o1; - s_group_t *g; - int i; - - for( ; obj != NULL ; obj=obj->next ) { - if( obj->g ) { - g=obj->g; - if( strcmp(g->g.gid.name,gid->name) == 0 && - g->g.gid.index == gid->index ) { - break; - } - } - } - - switch(cmd) { - case SND_MIXER_READ_GROUP_REMOVE: - if( obj ) { - if( obj->enabled ) { - gtk_widget_destroy(obj->v_frame); - } - obj->dyn_e=2; - obj->enabled=FALSE; - return; - } - break; - case SND_MIXER_READ_GROUP_CHANGE: - if( que_g(gid)== 0 ) return; - break; - case SND_MIXER_READ_GROUP_ADD: - if( obj ) { - obj->dyn_e=3; - return; - } - o1=NULL; - obj_ins_new_g(&mixer->obj,&o1,gid); - mixer->o_nums++; - o1->dyn_e=3; - break; - default: - } - printf("cb_gp cmd %s gid '%s',%d\n",cmd_name[cmd],gid->name,gid->index); -} - -static int que_g(snd_mixer_gid_t *gid ) { - g_q_cell_t *p; - - if( g_q.q == NULL ) { - g_q.q=(g_q_cell_t *)malloc(sizeof(g_q_cell_t)); - if( g_q.q == NULL ) { - fprintf(stderr,nomem_msg); - return -1; - } - p=g_q.q; - p->gid=*gid; - p->next=NULL; - g_q.q_n=1; - return 0; - } - p=g_q.q; - while( p->next != NULL ) { - if( strcmp(p->gid.name,gid->name) == 0 && p->gid.index == gid->index ) - return 0; - p=p->next; - } - - if( strcmp(p->gid.name,gid->name) == 0 && p->gid.index == gid->index ) - return 0; - p->next=(g_q_cell_t *)malloc(sizeof(g_q_cell_t)); - if( p->next==NULL ) { - fprintf(stderr,nomem_msg); - return -1; - } - p=p->next; - p->gid=*gid; - p->next=NULL; - g_q.q_n++; - return 0; -} - -void tc_init( void ) { - cb_mix.rebuild=*cb_rb; - cb_mix.element=*element_callback; - cb_mix.group=*cb_gp; -} -gint time_callback(gpointer data) { - GtkRequisition rq; - int i,j,k,err; - e_q_cell_t *eq; - g_q_cell_t *gq; - - k=0; - for( i=0 ; inext ) - printf("que eid '%s',%d,%d\n",eq->eid.name,eq->eid.index,eq->eid.type); - /* - for( gq=g_q.q ; gq != NULL ; gq=gq->next ) - printf("que gid '%s',%d\n",gq->gid.name,gq->gid.index); - */ - } - } - if( k ) { - gtk_container_remove(GTK_CONTAINER(main_vbox),mixer_container); - disp_mixer(); - } - - return 1; -} - -static int chk_group( s_mixer_t *mixer ) { - s_obj_t *obj; - s_group_t *group; - s_element_t *e; - g_q_cell_t *gq,*gq2; - snd_mixer_group_t m_g; - int i,j,k,l,err,rt=0; - - gq=g_q.q; - while( gq ) { - for( obj=mixer->obj ; obj != NULL ; obj=obj->next ) { - if( obj->g ) { - if( strcmp( obj->g->g.gid.name , gq->gid.name ) == 0 && - obj->g->g.gid.index == gq->gid.index ) break; - } - } - if( obj ) { - group=obj->g; - bzero(&m_g,sizeof(snd_mixer_group_t)); - m_g.gid=gq->gid; - if( (err=snd_mixer_group_read(mixer->handle,&m_g))<0 ) { - fprintf(stderr,_("Mixer group '%s',%d err 1: %s\n"), - m_g.gid.name,m_g.gid.index,snd_strerror(err)); - goto __next; - } - m_g.pelements = (snd_mixer_eid_t *)malloc(m_g.elements_over* - sizeof(snd_mixer_eid_t)); - if( m_g.pelements == NULL ) { - fprintf(stderr,nomem_msg); - goto __next; - } - m_g.elements_size=m_g.elements_over; - m_g.elements=m_g.elements_over=0; - if( (err=snd_mixer_group_read(mixer->handle,&m_g))<0 ) { - fprintf(stderr,_("Mixer group '%s',%d err 2: %s\n"), - m_g.gid.name,m_g.gid.index,snd_strerror(err)); - free(m_g.pelements); - goto __next; - } - j=0; - if( group->g.elements == 0 ) { - j=1; - } else if( group->g.elements != m_g.elements ) { - j=1; - } else { - k=0; - for( i=0 ; ig.pelements[l].name)==0 && - m_g.pelements[i].index == - group->g.pelements[l].index ) { - if( l=k ) k++; - break; - } - } - if( l==m_g.elements ) { - j=1; - break; - } - } - } - if( j ) { - for( i=0 ; ig.elements ; i++ ) { - element_free(&group->e[i]); - } - if( group->g.pelements ) free(group->g.pelements); - if( group->e ) free(group->e); - group->g=m_g; - group->e=(s_element_t *)g_malloc0(group->g.elements* - sizeof(s_element_t)); - if( group->e == NULL ) { - fprintf(stderr,nomem_msg); - goto __next; - } - for( i=0 ; ig.elements ; i++ ) { - if( chk_eid(mixer->obj,&m_g.pelements[i]) ) { - /* - printf("%d: build '%s',%d,%d\n",i, - m_g.pelements[i].name,m_g.pelements[i].index, - m_g.pelements[i].type); - */ - s_element_build(mixer->handle,&group->e[i],NULL, - group->g.pelements[i],mixer->c_dev, - mixer->m_dev); - } else { - group->g.pelements[i].type=0; - group->e[i].e.eid=group->g.pelements[i]; - group->e[i].info.eid=group->g.pelements[i]; - } - } - } else { - free(m_g.pelements); - } - if( obj->enable ) rt=1; - } else { - fprintf(stderr,_("not added gid before change.\n")); - } - __next: - gq2 = gq->next; - free(gq); - gq=gq2; - } - return rt; -} - -static void element_free(s_element_t *e) { - if( e->w ) g_free(e->w); - if( e->adj ) g_free(e->adj); - if( e->mux ) free(e->mux); - snd_mixer_element_free(&e->e); - snd_mixer_element_info_free(&e->info); -} - -static gboolean chk_eid(s_obj_t *obj,snd_mixer_eid_t *eid ) { - e_q_cell_t *eq,*ep; - s_element_t *e; - int i; - - if( !is_etype(eid->type) ) return FALSE; - for( eq=e_q.q; eq != NULL ; eq=eq->next ) { - if( strcmp(eq->eid.name,eid->name) == 0 && - eq->eid.index == eid->index && eq->eid.type == eq->eid.type ) { - if( eq == e_q.q ) { - e_q.q=e_q.q->next; - } else { - for(ep=e_q.q;ep->next !=eq ; ep=ep->next ); - ep->next=eq->next; - } - free(eq); - return TRUE; - } - } - for( ; obj != NULL ; obj=obj->next ) { - if(obj->g) { - for( i=0 ; obj->g->g.elements ; i++ ) { - e=&obj->g->e[i]; - if( strcmp( e->e.eid.name,eid->name ) == 0 && - e->e.eid.index == eid->index && - e->e.eid.type == eid->type ) return FALSE; - } - } - if(obj->e) { - e=&obj->e->e; - if( strcmp( e->e.eid.name,eid->name ) == 0 && - e->e.eid.index == eid->index && - e->e.eid.type == eid->type ) return FALSE; - - } - } - return TRUE; -} - -void s_e_chk( s_element_t *e ) { - int i,j; - switch( e->e.eid.type ) { - case SND_MIXER_ETYPE_VOLUME1: - for( i=0 ; ie.data.volume1.voices; i++ ) { - if( (e->info.data.volume1.prange[i].max- - e->info.data.volume1.prange[i].min) == 1 ) { - gtk_toggle_button_set_active( - GTK_TOGGLE_BUTTON(e->w[i]), - e->e.data.volume1.pvoices[i]); - } else { - e->adj[i]->value=(gfloat) - -e->e.data.volume1.pvoices[i]; - gtk_signal_emit_by_name(GTK_OBJECT(e->adj[i]),"value_changed"); - } - } - break; - case SND_MIXER_ETYPE_SWITCH1: - for( i=0 ; ie.data.switch1.sw; i++) { - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(e->w[i]), - snd_mixer_get_bit(e->e.data.switch1.psw,i) - ); - } - break; - case SND_MIXER_ETYPE_SWITCH2: - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(e->w[0]), - e->e.data.switch2.sw); - break; - case SND_MIXER_ETYPE_ACCU3: - for( i=0 ; ie.data.accu3.voices ; i++ ) { - e->adj[i]->value=(gfloat) - -e->e.data.volume1.pvoices[i]; - gtk_signal_emit_by_name(GTK_OBJECT(e->adj[i]),"value_changed"); - } - break; - case SND_MIXER_ETYPE_MUX1: - for( i=0 ; ie.data.mux1.output ; i++ ) { - for( j=0; jmux_n ; j++ ) { - if( strcmp(e->mux[j].name,e->e.data.mux1.poutput[i].name)==0 && - e->mux[j].index == e->e.data.mux1.poutput[i].index && - e->mux[j].type == e->e.data.mux1.poutput[i].type ) break; - } - if( j < e->mux_n ) - gtk_option_menu_set_history(GTK_OPTION_MENU(e->w[i]),j); - } - break; - case SND_MIXER_ETYPE_MUX2: - for( i=0; imux_n ; i++ ) { - if( strcmp(e->mux[i].name,e->e.data.mux2.output.name)==0 && - e->mux[i].index == e->e.data.mux2.output.index && - e->mux[i].type == e->e.data.mux2.output.type ) - break; - } - if( i < e->mux_n ) - gtk_option_menu_set_history(GTK_OPTION_MENU(e->w[0]),i); - break; - case SND_MIXER_ETYPE_3D_EFFECT1: - if( e->info.data.teffect1.effect & SND_MIXER_EFF1_SW ) { - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(e->w[0]), - e->e.data.teffect1.sw); - } - if( e->info.data.teffect1.effect & SND_MIXER_EFF1_MONO_SW ) { - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(e->w[1]), - e->e.data.teffect1.sw); - } - if( e->info.data.teffect1.effect & SND_MIXER_EFF1_WIDE ) { - e->adj[0]->value=(gfloat)e->e.data.teffect1.wide; - gtk_signal_emit_by_name(GTK_OBJECT(e->adj[0]),"value_changed"); - } - if( e->info.data.teffect1.effect & SND_MIXER_EFF1_VOLUME ) { - e->adj[1]->value=(gfloat)e->e.data.teffect1.volume; - gtk_signal_emit_by_name(GTK_OBJECT(e->adj[1]),"value_changed"); - } - if( e->info.data.teffect1.effect & SND_MIXER_EFF1_CENTER ) { - e->adj[2]->value=(gfloat)e->e.data.teffect1.center; - gtk_signal_emit_by_name(GTK_OBJECT(e->adj[2]), - "value_changed"); - } - if( e->info.data.teffect1.effect & SND_MIXER_EFF1_SPACE ) { - e->adj[3]->value=(gfloat)e->e.data.teffect1.space; - gtk_signal_emit_by_name(GTK_OBJECT(e->adj[3]),"value_changed"); - } - if( e->info.data.teffect1.effect & SND_MIXER_EFF1_DEPTH ) { - e->adj[4]->value=(gfloat)e->e.data.teffect1.depth; - gtk_signal_emit_by_name(GTK_OBJECT(e->adj[4]),"value_changed"); - } - if( e->info.data.teffect1.effect & SND_MIXER_EFF1_DELAY ) { - e->adj[5]->value=(gfloat)e->e.data.teffect1.delay; - gtk_signal_emit_by_name(GTK_OBJECT(e->adj[5]),"value_changed"); - } - if( e->info.data.teffect1.effect & SND_MIXER_EFF1_FEEDBACK ) { - e->adj[6]->value=(gfloat)e->e.data.teffect1.feedback; - gtk_signal_emit_by_name(GTK_OBJECT(e->adj[6]),"value_changed"); - } - if( e->info.data.teffect1.effect & SND_MIXER_EFF1_DEPTH_REAR ) { - e->adj[7]->value=(gfloat)e->e.data.teffect1.depth_rear; - gtk_signal_emit_by_name(GTK_OBJECT(e->adj[7]),"value_changed"); - } - break; - case SND_MIXER_ETYPE_TONE_CONTROL1: - if( e->info.data.tc1.tc & SND_MIXER_TC1_SW ) { - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(e->w[0]), - e->e.data.tc1.sw); - } - if( e->info.data.tc1.tc & SND_MIXER_TC1_BASS ) { - e->adj[0]->value=-(gfloat)e->e.data.tc1.bass; - gtk_signal_emit_by_name(GTK_OBJECT(e->adj[0]),"value_changed"); - } - if( e->info.data.tc1.tc & SND_MIXER_TC1_TREBLE ) { - e->adj[1]->value=-(gfloat)e->e.data.tc1.treble; - gtk_signal_emit_by_name(GTK_OBJECT(e->adj[1]),"value_changed"); - } - break; - case SND_MIXER_ETYPE_PAN_CONTROL1: - printf("catch pan "); - for( i=0 ; ie.data.pc1.pan ; i++ ) { - printf(" %d",e->e.data.pc1.ppan[i]); - e->adj[i]->value=(gfloat)e->e.data.pc1.ppan[i]; - gtk_signal_emit_by_name(GTK_OBJECT(e->adj[i]),"value_changed"); - } - printf("\n"); - break; - } -} - -static void rmw_elem(s_element_t *e) { - int i,j; - switch( e->e.eid.type ) { - case SND_MIXER_ETYPE_VOLUME1: - for( i=0 ; ie.data.volume1.voices; i++ ) { - if( (e->info.data.volume1.prange[i].max- - e->info.data.volume1.prange[i].min) == 1 ) { - gtk_widget_destroy( e->w[i] ); - } else { - //gtk_widget_destroy(e->adj[i]); - gtk_widget_destroy(e->w[i]); - } - } - break; - case SND_MIXER_ETYPE_SWITCH1: - for( i=0 ; ie.data.switch1.sw; i++) { - gtk_widget_destroy(e->w[i]); - } - break; - case SND_MIXER_ETYPE_SWITCH2: - gtk_widget_destroy(e->w[0]); - break; - case SND_MIXER_ETYPE_ACCU3: - for( i=0 ; ie.data.accu3.voices ; i++ ) { - gtk_widget_destroy(e->w[i]); - } - break; - case SND_MIXER_ETYPE_MUX1: - for( i=0 ; ie.data.mux1.output ; i++ ) { - gtk_widget_destroy(e->w[i]); - } - break; - case SND_MIXER_ETYPE_MUX2: - gtk_widget_destroy(e->w[0]); - break; - case SND_MIXER_ETYPE_3D_EFFECT1: - if( e->info.data.teffect1.effect & SND_MIXER_EFF1_SW ) { - gtk_widget_destroy(e->w[0]); - } - if( e->info.data.teffect1.effect & SND_MIXER_EFF1_MONO_SW ) { - gtk_widget_destroy(e->w[1]); - } - if( e->info.data.teffect1.effect & SND_MIXER_EFF1_WIDE ) { - gtk_widget_destroy(e->w[2]); - } - if( e->info.data.teffect1.effect & SND_MIXER_EFF1_VOLUME ) { - gtk_widget_destroy(e->w[3]); - } - if( e->info.data.teffect1.effect & SND_MIXER_EFF1_CENTER ) { - gtk_widget_destroy(e->w[4]); - } - if( e->info.data.teffect1.effect & SND_MIXER_EFF1_SPACE ) { - gtk_widget_destroy(e->w[5]); - } - if( e->info.data.teffect1.effect & SND_MIXER_EFF1_DEPTH ) { - gtk_widget_destroy(e->w[6]); - } - if( e->info.data.teffect1.effect & SND_MIXER_EFF1_DELAY ) { - gtk_widget_destroy(e->w[7]); - } - if( e->info.data.teffect1.effect & SND_MIXER_EFF1_FEEDBACK ) { - gtk_widget_destroy(e->w[8]); - } - if( e->info.data.teffect1.effect & SND_MIXER_EFF1_DEPTH_REAR ) { - gtk_widget_destroy(e->w[9]); - } - break; - case SND_MIXER_ETYPE_TONE_CONTROL1: - if( e->info.data.tc1.tc & SND_MIXER_TC1_SW ) { - gtk_widget_destroy(e->w[0]); - } - if( e->info.data.tc1.tc & SND_MIXER_TC1_BASS ) { - gtk_widget_destroy(e->w[1]); - } - if( e->info.data.tc1.tc & SND_MIXER_TC1_TREBLE ) { - gtk_widget_destroy(e->w[2]); - } - break; - case SND_MIXER_ETYPE_PAN_CONTROL1: - j=0; - for( i=0 ; ie.data.pc1.pan ; i++ ) { - gtk_widget_destroy(e->w[j++]); - gtk_widget_destroy(e->w[j++]); - gtk_widget_destroy(e->w[j++]); - gtk_widget_destroy(e->w[j++]); - } - break; - } -} diff --git a/gamix/conf_w.c b/gamix/conf_w.c deleted file mode 100644 index d11430a..0000000 --- a/gamix/conf_w.c +++ /dev/null @@ -1,850 +0,0 @@ - -#include "gamix.h" -#include -#include -#include -#include - -s_conf conf; - -static GtkWidget *c_win; - -typedef struct { - gboolean m_en; - gboolean *obj_en; - GSList *gp; - gboolean p_e; - gboolean p_f; - GtkCList *cl; - int *ord_l; - int o_nums; -} c_mixer; - -typedef struct { - c_mixer *m; -} c_card; - -static c_card *ccard; -static gboolean scrolled; -static gboolean ok_pushed; -static gboolean Esaved; -static gboolean Tosave; -static gboolean sv_wsized; - -static void close_win(GtkWidget *,gpointer); -static void cancel_b(GtkWidget *,gpointer); -static void ok_b(GtkWidget *,gpointer); -static void tb_callback(GtkToggleButton *,gint *); -static void sl1_callback(GtkWidget *,gint,gint,GdkEventButton *,gpointer); -static void sl2_callback(GtkWidget *,gint,gint,GdkEventButton *,gpointer); -static int sel_num(GtkCList *,gint); -static void cread_err(gchar *,int ); -static void chk_cfile(void); -static void swap_obj(s_obj_t **,s_obj_t *,s_obj_t *); -static s_obj_t *obj_new( s_obj_t **,s_obj_t *); - -static void close_win(GtkWidget *w,gpointer data) { - gtk_grab_remove(c_win); - gtk_main_quit(); -} - -static void cancel_b(GtkWidget *w,gpointer data) { - gtk_widget_destroy(c_win); -} -static void ok_b(GtkWidget *w,gpointer data) { - int i,j,k; - GSList *n; - GtkWidget *b; - gchar *s; - - Tosave=(gboolean)data; - - ok_pushed=TRUE; - - for( i=0 ; idata; - if( GTK_TOGGLE_BUTTON(b)->active ) break; - } - switch(k) { - case 2: - ccard[i].m[j].p_e=FALSE; - ccard[i].m[j].p_f=FALSE; - break; - case 1: - ccard[i].m[j].p_e=TRUE; - ccard[i].m[j].p_f=FALSE; - break; - case 0: - ccard[i].m[j].p_e=TRUE; - ccard[i].m[j].p_f=TRUE; - break; - } - for( k=0 ; kg ) { - if( obj->g->g.gid.index > 0 ) { - sprintf(gname,"%s %d", - obj->g->g.gid.name, - obj->g->g.gid.index); - } else { - strcpy(gname,obj->g->g.gid.name); - } - } - if( obj->e ) { - if( obj->e->e.e.eid.index > 0 ) { - sprintf(gname,"%s %d", - obj->e->e.e.eid.name, - obj->e->e.e.eid.index); - } else { - strcpy(gname,obj->e->e.e.eid.name); - } - } - cl_data[0]=cl_num; - if( obj->dyn_e ) { - cl_data[1]="D"; - } else { - cl_data[1]=" "; - } - cl_data[2]=gname; - gtk_clist_append(GTK_CLIST(clist),cl_data); - - ccard[i].m[j].obj_en[k]=obj->enable; - if( obj->enable ) { - gtk_clist_select_row(GTK_CLIST(clist),k,0); - } else { - gtk_clist_unselect_row(GTK_CLIST(clist),k,0); - } - - obj=obj->next; - } - ccard[i].m[j].cl=GTK_CLIST(clist); - gtk_clist_set_reorderable(GTK_CLIST(clist),TRUE); - gtk_signal_connect(GTK_OBJECT(clist),"select_row", - GTK_SIGNAL_FUNC(sl1_callback), - (gpointer)&ccard[i].m[j]); - gtk_signal_connect(GTK_OBJECT(clist),"unselect_row", - GTK_SIGNAL_FUNC(sl2_callback), - (gpointer)&ccard[i].m[j]); - gtk_widget_show(clist); - gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(hhbox), - clist); - gtk_container_set_border_width(GTK_CONTAINER(hhbox),8); - gtk_widget_size_request(hhbox,&rq); - gtk_widget_set_usize(hhbox,rq.width,rq.height*2); - gtk_box_pack_start(GTK_BOX(box),hhbox,FALSE,FALSE,0); - - gtk_widget_show(hhbox); - gtk_widget_show(box); - gtk_widget_show(frame); - gtk_clist_thaw(GTK_CLIST(clist)); - } - } - - gtk_widget_show(nb); - /* buttons */ - box=gtk_hbutton_box_new(); - gtk_button_box_set_layout(GTK_BUTTON_BOX(box),GTK_BUTTONBOX_END); - gtk_button_box_set_spacing(GTK_BUTTON_BOX(box),5); - gtk_box_pack_end(GTK_BOX(vbox),box,FALSE,FALSE,0); - - b=gtk_button_new_with_label(_("OK")); - gtk_box_pack_start(GTK_BOX(box),b,TRUE,TRUE,0); - gtk_signal_connect(GTK_OBJECT(b),"clicked",GTK_SIGNAL_FUNC(ok_b), - (gpointer)FALSE); - GTK_WIDGET_SET_FLAGS(b,GTK_CAN_DEFAULT); - gtk_widget_show(b); - gtk_widget_grab_default(b); - - Tosave=FALSE; - b=gtk_button_new_with_label(_("SAVE")); - gtk_box_pack_start(GTK_BOX(box),b,TRUE,TRUE,0); - gtk_signal_connect(GTK_OBJECT(b),"clicked",GTK_SIGNAL_FUNC(ok_b), - (gpointer)TRUE); - GTK_WIDGET_SET_FLAGS(b,GTK_CAN_DEFAULT); - gtk_widget_show(b); - - b=gtk_button_new_with_label(_("CANCEL")); - gtk_box_pack_start(GTK_BOX(box),b,TRUE,TRUE,0); - gtk_signal_connect(GTK_OBJECT(b),"clicked",GTK_SIGNAL_FUNC(cancel_b),NULL); - GTK_WIDGET_SET_FLAGS(b,GTK_CAN_DEFAULT); - gtk_widget_show(b); - - gtk_widget_show(box); - - gtk_widget_show(vbox); - gtk_widget_show(c_win); - - gtk_grab_add(c_win); - gtk_main(); - - changed=FALSE; - - if( ok_pushed ) { - if ( conf.scroll != scrolled ) changed=TRUE; - conf.scroll=scrolled; - conf.Esave = Esaved; - conf.sv_wsize=sv_wsized; - } - - for( i=0 ; inext ) { - if( !changed ) { - if( ccard[i].m[j].ord_l[k] != k ) changed=TRUE; - if( obj->enable != ccard[i].m[j].obj_en[ccard[i].m[j].ord_l[k]] ) { - changed = TRUE; - } - } - if( ccard[i].m[j].ord_l[k] != k ) sf=1; - obj->enable=ccard[i].m[j].obj_en[k]; - obj->enabled=FALSE; - k++; - } - if( sf ) { - o_l=(gint *)g_malloc(sizeof(gint)*ccard[i].m[j].o_nums); - if( o_l != NULL ) { - for( k=0 ; knext; - } - for( m=l ; m>k ; m-- ) o_l[m]=o_l[m-1]; - o_l[m]=k; - if( obj_b == NULL ) { - cards[i].mixer[j].obj=obj2; - } else { - obj_b->next=obj2; - } - obj2_b->next=obj2->next; - obj2->next=obj; - obj=obj2; - } - obj_b=obj; - obj=obj->next; - } - g_free(o_l); - } - } - /* - for( obj=cards[i].mixer[j].obj ; obj != NULL ; obj=obj->next) { - if( obj->g ) { - printf("G %s %d\n",obj->g->g.gid.name,obj->g->g.gid.index); - } - if( obj->e ) { - printf("E '$s',%d,%d\n",obj->e->e.e.eid.name, - obj->e->e.e.eid.index,obj->e->e.e.eid.type); - } - } - */ - } - g_free(ccard[i].m[j].obj_en); - g_free(ccard[i].m[j].ord_l); - } - g_free(ccard[i].m); - } - g_free(ccard); - if( Tosave ) { - conf_write(); - conf.F_save=FALSE; - } - - return changed; -} - -static void tb_callback(GtkToggleButton *b,gint *c) { - *c=b->active; -} -static void sl1_callback(GtkWidget *w,gint row,gint col, - GdkEventButton *ev,gpointer data) { - int i; - - c_mixer *m=(c_mixer *)data; - i=sel_num(GTK_CLIST(w),row); - m->obj_en[i]=TRUE; -} -static void sl2_callback(GtkWidget *w,gint row,gint col, - GdkEventButton *ev,gpointer data) { - int i; - - c_mixer *m=(c_mixer *)data; - i=sel_num(GTK_CLIST(w),row); - m->obj_en[i]=FALSE; -} - -static int sel_num(GtkCList *cl,gint row) { - int rt; - gchar *s; - - gtk_clist_get_text(cl,row,0,&s); - rt=atoi(s)-1; - return rt; -} - -void conf_read( void ) { - int i,j,k,err,ln; - FILE *fp; - gchar rbuf[256],*s; - s_mixer_t *m=NULL; - snd_mixer_gid_t gid; - snd_mixer_eid_t eid; - s_group_t *group; - s_eelements_t *ee; - s_obj_t *obj,*obj_n; - - fp=fopen(conf.fna,"rt"); - if( fp == NULL ) { - conf.F_save=TRUE; - return; - } - ln=1; - err=0; - while( !feof(fp) && err>-5 ) { - fgets(rbuf,255,fp); - rbuf[255]=0; - s=rbuf+2; - err=0; - switch( rbuf[0] ) { - case 'S': - conf.scroll=atoi(s)?TRUE:FALSE; - break; - case 'C': - i=atoi(s); - if( i<0 || i>2 ) { - err=-1; - } else conf.wmode=i; - break; - case 'Y': - conf.sv_wsize=atoi(s)?TRUE:FALSE; - break; - case 'W': - sscanf(s,"%d,%d\n",&conf.width,&conf.height); - break; - case 'A': - conf.Esave=atoi(s)?TRUE:FALSE; - break; - case 'M': - sscanf(s,"%d,%d=%d\n",&i,&j,&k); - if( i<0 || i>=card_num ) { - cread_err(_("Invalied card No."),ln); - err=-10; - break; - } - if( j<0 || j>=cards[i].info.mixerdevs ) { - cread_err(_("Invalied mixer device No."),ln); - err=-10; - } - m=&cards[i].mixer[j]; - m->enable=k?TRUE:FALSE; - obj_n=m->obj; - break; - case 'X': - if( m == NULL ) { - cread_err(_("No mixer selected"),ln); - err=-1; - } - switch(atoi(s)) { - case 0: - m->p_e=FALSE; - m->p_f=FALSE; - break; - case 1: - m->p_e=TRUE; - m->p_f=FALSE; - break; - case 2: - m->p_e=TRUE; - m->p_f=TRUE; - break; - default: - cread_err(_("Invalied value for X"),ln); - err=-1; - break; - } - break; - case 'G': - if( m == NULL ) { - cread_err(_("No mixer selected"),ln); - err=-1; - } - s++; - for( i=0 ; *s!='\'' && *s>0 ; i++ ) gid.name[i]=*(s++); - gid.name[i]=0; - if( *s == 0 ) { - cread_err(_("Invalied argument"),ln); - err=-1; - break; - } - s+=2; - sscanf(s,"%d=%d\n",&gid.index,&i); - for( obj=m->obj ; obj != NULL ; obj=obj->next ) { - if( obj->g ) { - group=obj->g; - if( strcmp(gid.name,group->g.gid.name) == 0 && - gid.index == group->g.gid.index ) { - obj->enable=i&1?TRUE:FALSE; - obj->dyn_e=i&2?3:0; - break; - } - } - } - if( obj ) { - if( obj != obj_n ) swap_obj(&m->obj,obj_n,obj); - obj_n=obj->next; - } else { - if( i&2 ) { - if( obj_ins_new_g(&m->obj,&obj_n,&gid) == 0 ) { - obj_n->enable=i&1?TRUE:FALSE; - obj_n->dyn_e=i&2?2:0; - obj_n=obj_n->next; - m->o_nums++; - } else { - err=-1; - } - } else { - cread_err(_("There is no such mixer group"),ln); - err=-1; - } - } - break; - case 'E': - if( m == NULL ) { - cread_err(_("No mixer selected"),ln); - err=-1; - } - s++; - for( i=0 ; *s!='\'' && *s>0 ; i++ ) eid.name[i]=*(s++); - eid.name[i]=0; - if( *s == 0 ) { - cread_err(_("Invalied argument"),ln); - err=-1; - break; - } - s+=2; - sscanf(s,"%d,%d=%d\n",&eid.index,&eid.type,&i); - for( obj=m->obj ; obj != NULL ; obj=obj->next ) { - if( obj->e ) { - ee=obj->e; - if( strcmp(eid.name,ee->e.e.eid.name) == 0 && - eid.index == ee->e.e.eid.index && - eid.type == ee->e.e.eid.type ) { - obj->enable=i&1?TRUE:FALSE; - obj->dyn_e=i&2?TRUE:FALSE; - break; - } - } - } - if( obj ) { - if( obj != obj_n ) swap_obj(&m->obj,obj_n,obj); - obj_n=obj->next; - } else { - if( i&2 ) { - } else { - cread_err(_("There is no such mixer element"),ln); - err=-1; - } - } - break; - } - if( err<0 ) conf.F_save=TRUE; - ln++; - } - fclose(fp); -} - -static void cread_err(gchar *s,int n ) { - fprintf(stderr,_("config %d:%s\n"),n,s); -} - -static void swap_obj( s_obj_t **obj,s_obj_t *o1,s_obj_t *o2 ) { - s_obj_t *p,*q; - - if( o1 == NULL ) return; - - q=o1; - while( q->next != o2 ) q=q->next; - q->next=o2->next; - if( *obj == o1 ) { - *obj=o2; - o2->next=o1; - } else { - p=*obj; - while( p->next != o1 ) p=p->next; - p->next=o2; - o2->next=o1; - } -} - -void conf_write(void) { - int i,j,k; - FILE *fp; - s_mixer_t *m; - s_group_t *g; - s_eelements_t *ee; - s_obj_t *obj; - - fp=fopen(conf.fna,"wt"); - if( fp == NULL ) { - chk_cfile(); - fp=fopen(conf.fna,"wt"); - } - if( fp == NULL ) { - fprintf(stderr,_("gamix: config file not saved.\n")); - return; - } - fprintf(fp,"# OPT\n"); - fprintf(fp,"S %d\n",conf.scroll); - fprintf(fp,"C %d\n",conf.wmode); - fprintf(fp,"A %d\n",conf.Esave); - gdk_window_get_size(window->window,&i,&j); - fprintf(fp,"Y %d\n",conf.sv_wsize); - if( conf.sv_wsize ) fprintf(fp,"W %d,%d\n",i,j); - for( i=0 ; iinfo.name); - fprintf(fp,"M %d,%d=%d\n",i,j,m->enable); - if( m->p_e ) { - if( m->p_f ) k=2; else k=1; - } else k=0; - fprintf(fp,"X %d\n",k); - for( obj=m->obj ; obj != NULL ; obj=obj->next ) { - if( obj->g ) { - g=obj->g; - fprintf(fp,"G '%s',%d=%d\n",g->g.gid.name,g->g.gid.index, - (obj->enable?1:0)|(obj->dyn_e?2:0)); - } - if( obj->e ) { - ee=obj->e; - fprintf(fp,"E '%s',%d,%d=%d\n", - ee->e.e.eid.name,ee->e.e.eid.index,ee->e.e.eid.type, - obj->enable); - } - } - } - } - fclose(fp); -} - -static void chk_cfile( void ) { - int i,j,k,err; - gchar *name; - - k=strlen(g_get_home_dir()); - name=g_strdup(conf.fna); - i=1; - j=strlen(name)-1; - err=-1; - while( i>0 ) { - if( err<0 ) { - while( name[j] != '/' ) j--; - name[j]=0; - if( j <= k ) { - fprintf(stderr,"Can not make dir ~/.gamix\n"); - g_free(name); - return; - } - } else { - while( name[j] != 0 ) j++; - name[j]='/'; - } - err=mkdir(name,S_IRUSR|S_IWUSR|S_IXUSR| - S_IRGRP|S_IXGRP| S_IROTH|S_IXOTH); - if( err<0 ) { - if( errno == ENOENT ) { - i++; - } else { - fprintf(stderr,"Can not make dir %s\n",name); - g_free(name); - return; - } - } else { - i--; - } - } -} - -static s_obj_t *obj_new( s_obj_t **objs,s_obj_t *o ) { - s_obj_t *p,*q; - - q=(s_obj_t *)g_malloc0(sizeof(s_obj_t)); - if( q == NULL ) { - fprintf(stderr,nomem_msg); - return NULL; - } - if( *objs == o ) { - q->next=*objs; - *objs=q; - } else { - p=*objs; - while( p->next != o ) p=p->next; - q->next=p->next; - p->next=q; - } - return q; -} - -gint obj_ins_new_g( s_obj_t **objs,s_obj_t **o1,snd_mixer_gid_t *gid ) { - s_obj_t *p; - s_group_t *g; - - p=obj_new(objs,*o1); - if( p == NULL ) return -1; - g=(s_group_t *)g_malloc0(sizeof(s_group_t)); - if( g == NULL ) { - fprintf(stderr,nomem_msg); - return -1; - } - g->g.gid=*gid; - p->g=g; - *o1=p; - return 0; -} - -gint obj_ins_new_e( s_obj_t **objs,s_obj_t **o1,snd_mixer_eid_t *eid ) { - s_obj_t *p; - s_eelements_t *e; - - p=obj_new(objs,*o1); - if( p == NULL ) return -1; - e=(s_eelements_t *)g_malloc0(sizeof(s_eelements_t)); - if( e == NULL ) { - fprintf(stderr,nomem_msg); - return -1; - } - e->e.e.eid=*eid; - p->e=e; - *o1=p; - return 0; -} - diff --git a/gamix/gamix.h b/gamix/gamix.h deleted file mode 100644 index ade18ce..0000000 --- a/gamix/gamix.h +++ /dev/null @@ -1,121 +0,0 @@ -#include -#include - -#include -#include -#include - -#include - -#ifdef ENABLE_NLS -# include -# undef _ -# undef N_ -# define _(String) dgettext(PACKAGE,String) -# ifdef gettext_noop -# define N_(String) gettext_noop(String) -# else -# define N_(String) (String) -# endif -#else -# define textdomain(String) (String) -# define gettext(String) (String) -# define dgettext(Domain,Message) (Message) -# define dcgettext(Domain,Message,Type) (Message) -# define bindtextdomain(Domain,Directory) (Domain) -# define _(String) (String) -# define N_(String) (String) -#endif - -#define preid(eid) printf("'%s',%d,%d\n",(eid).name,(eid).index,(eid).type) - -typedef struct { - snd_mixer_element_t e; - snd_mixer_element_info_t info; - GtkWidget **w; - GtkAdjustment **adj; - gint card,mdev; - gint *chain_en; - gint *chain; - gint mux_n; - snd_mixer_eid_t *mux; -} s_element_t; - -typedef struct s_eelements { - s_element_t e; -} s_eelements_t; - -typedef struct s_group { - snd_mixer_group_t g; - s_element_t *e; -} s_group_t; - -typedef struct s_obj s_obj_t; -struct s_obj { - s_group_t *g; - s_eelements_t *e; - GtkWidget *v_frame; - gint enable; - gint enabled; - gint chain; - gint chain_en; - gint dyn_e; - GtkWidget *cwb; - s_obj_t *next; -}; - -typedef struct { - snd_mixer_t *handle; - snd_mixer_info_t info; - int c_dev,m_dev; - gint o_nums; - s_obj_t *obj; - GtkWidget *w; - gboolean enable; - gboolean enabled; - gboolean p_e; - gboolean p_f; -} s_mixer_t; - -typedef struct { - snd_ctl_hw_info_t info; - s_mixer_t *mixer; -} s_card_t; - -typedef struct { - gint wmode; - gboolean scroll; - gchar *fna; - gboolean F_save; - gboolean Esave; - gboolean sv_wsize; - gint width; - gint height; -} s_conf; - -extern GtkWidget *window; -extern int card_num,mdev_num; -extern gint card,mdev; -extern s_card_t *cards; -extern s_conf conf; -extern unsigned char *nomem_msg; - -/* probe.c */ -gint probe_mixer( void ); -gboolean is_etype( int ); -int s_element_build(snd_mixer_t *,s_element_t *,snd_mixer_elements_t *, - snd_mixer_eid_t ,int , int); - -/* mkmixer.c */ -GtkWidget *make_mixer( gint , gint ); - -/* catch.c */ -void tc_init(void); -gint time_callback(gpointer); - -/* conf_w.c */ -gint conf_win( void ); -void conf_read( void ); -void conf_write( void ); -gint obj_ins_new_g( s_obj_t **,s_obj_t **,snd_mixer_gid_t *); -gint obj_ins_new_e( s_obj_t **,s_obj_t **,snd_mixer_eid_t *); diff --git a/gamix/main.c b/gamix/main.c deleted file mode 100644 index d13a605..0000000 --- a/gamix/main.c +++ /dev/null @@ -1,293 +0,0 @@ - -#include "gamix.h" - -GtkWidget *window; -GtkWidget *main_vbox; -GtkWidget *mixer_container; -GtkWidget *exit_item; -unsigned char *nomem_msg = N_("No enough memory.\n"); - -int main(int , char **); -int disp_mixer( void ); -void disp_toolbar(void); -static void exit_gtk(GtkWidget *,gpointer); -static void sel_mctype(GtkWidget *,gpointer); -static void conf_callback(GtkWidget *,gpointer); - -static void exit_gtk(GtkWidget *w,gpointer data) { - gtk_main_quit(); -} - -int main( int argc , char **argv ) { - int h,i; - gchar *dirname,*filename,*cname=NULL; - - i=probe_mixer(); - if( i < 0 ) { - fprintf(stderr,_("Can not make mixer.\n")); - return -1; - } - -#ifdef ENABLE_NLS - bindtextdomain (PACKAGE, LOCALEDIR); - textdomain(PACKAGE); -#endif - gtk_set_locale(); - gtk_init( &argc,&argv); - - h=0; - while( (i=getopt(argc,argv,"c:h")) != -1 ) { - switch(i) { - case 'c': - cname = g_strdup(optarg); - break; - case 'h': - h=1; - break; - case ':': - fprintf(stderr,"hoe?\n"); - break; - case '?': - //fprintf(stderr,_("unknown option: %c\n"),optopt); - h=1; - break; - } - } - - if( h ) { - printf("gamix "); - if( strcmp(PACKAGE,"alsa-utils") == 0 ) { - printf(" alsa utils version."); - } else if( strcmp(PACKAGE,"gamix") == 0 ) { - printf("%s original version.",VERSION); - } - putchar('\n'); - printf(_("Usage: gamix [OPTION]\n")); - printf(_(" -h print this help.\n")); - printf(_(" -c [file] change config file.\n")); - exit(0); - } - - dirname = g_strconcat(g_get_home_dir(),"/.gamix",NULL); - filename = g_strconcat(dirname, "/gtkrc", NULL); - gtk_rc_init(); - gtk_rc_parse(filename); - g_free(filename); - - conf.scroll=TRUE; - conf.wmode=1; - conf.F_save=FALSE; - conf.Esave=FALSE; - if( cname ) { - if( cname[0] == '/' ) { - conf.fna = g_strdup(cname); - } else { - conf.fna = g_strconcat(dirname,"/",cname,NULL); - } - } else { - conf.fna = g_strconcat(dirname,"/Config",NULL); - } - conf.sv_wsize=TRUE; - conf.width=0; - conf.height=0; - - g_free(dirname); - - conf_read(); - - window = gtk_window_new(GTK_WINDOW_TOPLEVEL); - gtk_signal_connect(GTK_OBJECT(window),"destroy", - GTK_SIGNAL_FUNC(gtk_main_quit),NULL); - main_vbox=gtk_vbox_new(FALSE,0); - gtk_container_add(GTK_CONTAINER(window),main_vbox); - - disp_toolbar(); - - tc_init(); - gtk_timeout_add(100,(GtkFunction)time_callback,NULL); - - gtk_widget_show(main_vbox); - gtk_widget_show(window); - if( disp_mixer()<0 ) return 0; - - gtk_main(); - if( conf.F_save || conf.Esave ) { - conf_write(); - } - g_free(conf.fna); - return 0; -} - -void disp_toolbar(void) { - GtkWidget *menu,*sub_menu,*sub_item; - GtkWidget *frame; - - frame=gtk_frame_new(NULL); - gtk_frame_set_shadow_type(GTK_FRAME(frame),GTK_SHADOW_OUT); - gtk_box_pack_start(GTK_BOX(main_vbox),frame,FALSE,FALSE,0); - gtk_widget_show(frame); - - menu=gtk_menu_bar_new(); - gtk_container_add(GTK_CONTAINER(frame),menu); - gtk_widget_show(menu); - - /* Prg menu */ - sub_menu=gtk_menu_new(); - - sub_item=gtk_menu_item_new_with_label(_("config")); - exit_item=sub_item; - gtk_menu_append(GTK_MENU(sub_menu),sub_item); - gtk_signal_connect(GTK_OBJECT(sub_item),"activate", - GTK_SIGNAL_FUNC(conf_callback),NULL); - gtk_widget_show(sub_item); - - sub_item=gtk_menu_item_new_with_label(_("exit")); - exit_item=sub_item; - gtk_menu_append(GTK_MENU(sub_menu),sub_item); - gtk_signal_connect(GTK_OBJECT(sub_item),"activate", - GTK_SIGNAL_FUNC(exit_gtk),NULL); - gtk_widget_show(sub_item); - - sub_item=gtk_menu_item_new_with_label(_("Prog")); - gtk_widget_show(sub_item); - gtk_menu_item_set_submenu(GTK_MENU_ITEM(sub_item),sub_menu); - gtk_menu_bar_append(GTK_MENU_BAR(menu),sub_item); - - /* mixer container type menu*/ - if( mdev_num > 1 ) { - sub_menu=gtk_menu_new(); - - sub_item=gtk_menu_item_new_with_label(_("Horizontal")); - gtk_menu_append(GTK_MENU(sub_menu),sub_item); - gtk_signal_connect(GTK_OBJECT(sub_item),"activate", - GTK_SIGNAL_FUNC(sel_mctype),0); - gtk_widget_show(sub_item); - - sub_item=gtk_menu_item_new_with_label(_("Vertical")); - gtk_menu_append(GTK_MENU(sub_menu),sub_item); - gtk_signal_connect(GTK_OBJECT(sub_item),"activate", - GTK_SIGNAL_FUNC(sel_mctype),(gpointer)1); - gtk_widget_show(sub_item); - - sub_item=gtk_menu_item_new_with_label(_("note book")); - gtk_menu_append(GTK_MENU(sub_menu),sub_item); - gtk_signal_connect(GTK_OBJECT(sub_item),"activate", - GTK_SIGNAL_FUNC(sel_mctype),(gpointer)2); - gtk_widget_show(sub_item); - - sub_item=gtk_menu_item_new_with_label(_("C-type")); - gtk_widget_show(sub_item); - gtk_menu_item_set_submenu(GTK_MENU_ITEM(sub_item),sub_menu); - gtk_menu_bar_append(GTK_MENU_BAR(menu),sub_item); - } -} - -static void sel_mctype(GtkWidget *w,gpointer n) { - int i; - - i=(int)n; - if( i == conf.wmode ) return; - conf.wmode=i; - conf.width=0; - conf.height=0; - gtk_container_remove(GTK_CONTAINER(main_vbox),mixer_container); - if( (i=disp_mixer()) < 0 ) gtk_signal_emit_by_name(GTK_OBJECT(exit_item), - "activate"); -} - -int disp_mixer( void ) { - int i,j; - GtkWidget *n_label; - GtkWidget *frame; - GtkRequisition rq; - - switch( conf.wmode ) { - case 0: /* H */ - if( conf.scroll ) { - mixer_container=gtk_hbox_new(TRUE,0); - } else { - mixer_container=gtk_hbox_new(FALSE,0); - } - for( i=0 ; i 0 && rq.height > 0 ) - gdk_window_resize(window->window,rq.width,rq.height); - gtk_box_pack_start(GTK_BOX(main_vbox),mixer_container,TRUE,TRUE,0); - /* - gtk_widget_size_request(window,&rq); - printf("WINDOW X %3d Y %3d\n",rq.width,rq.height); - */ - - if( conf.width>0 && conf.height >0 && !conf.F_save ) { - gtk_widget_size_request(window,&rq); - gdk_window_resize(window->window,conf.width,conf.height); - //conf.width=0; - //conf.height=0; - } - - return 0; -} - -static void conf_callback(GtkWidget *w ,gpointer data) { - gint err; - GtkRequisition rq; - - err=conf_win(); - if( err < 0 ) gtk_signal_emit_by_name(GTK_OBJECT(exit_item),"activate"); - if( err ) { - gtk_container_remove(GTK_CONTAINER(main_vbox),mixer_container); - if( disp_mixer() < 0 ) gtk_signal_emit_by_name( - GTK_OBJECT(exit_item),"activate"); - gtk_widget_size_request(window,&rq); - gdk_window_resize(window->window,rq.width,rq.height); - } -} diff --git a/gamix/mkmixer.c b/gamix/mkmixer.c deleted file mode 100644 index 8b0b2cd..0000000 --- a/gamix/mkmixer.c +++ /dev/null @@ -1,942 +0,0 @@ - -#include "gamix.h" - -static gchar *label_3d[]={ - "wide","volume","center","space","depth","delay","feedback","depth rear"}; -static gchar *label_tone[]={"B","T"}; -static gchar *pc1_ptc1[]={"L","F","B"}; -static gchar *pc1_ptc2[]={"R","R","U"}; - -static void close_callback(GtkWidget *,s_mixer_t *); -static void volume1_callback(GtkAdjustment *,s_element_t *); -static void volume1_sw_callback(GtkToggleButton *,s_element_t *); -static void switch1_callback(GtkToggleButton *,s_element_t *); -static void switch2_callback(GtkToggleButton *,s_element_t *); -static void chain_callback(GtkToggleButton *,s_obj_t *); -static void accu3_callback(GtkAdjustment *,s_element_t *); -static void mux1_callback(GtkItem *,s_element_t *); -static void mux2_callback(GtkItem *,s_element_t *); -static void sw_3d_callback(GtkToggleButton *,s_element_t *); -static void vol_3d_callback(GtkAdjustment *,s_element_t *); -static void sw_tone_callback(GtkToggleButton *,s_element_t *); -static void vol_tone_callback(GtkAdjustment *,s_element_t *); -static void pc1_callback(GtkAdjustment *,s_element_t *); -static void pc1_ss_callback(GtkWidget *,s_element_t *); -static gint mk_element(s_element_t *,GtkBox *); - -static void close_callback(GtkWidget *w,s_mixer_t *mixer) { - int i; - s_obj_t *obj; - - /* - for( i=0 ; igroups.groups ; i++ ) { - g=&mixer->group[i]; - g->enabled=FALSE; - } - for( i=0 ; iee_n ; i++ ) { - ee=&mixer->ee[i]; - ee->enabled=FALSE; - } - for( g=mixer->group; g != NULL ; g=g->next ) g->enabled=FALSE; - for( ee=mixer->ee; ee != NULL ; ee=ee->next ) ee->enabled=FALSE; - */ - for( obj=mixer->obj ; obj != NULL ; obj=obj->next ) obj->enabled=FALSE; - - snd_mixer_close(mixer->handle); - mixer->handle=NULL; -} - -static void volume1_sw_callback(GtkToggleButton *b,s_element_t *e) { - int i,j,value,err; - - for( i=0 ; ie.data.volume1.voices; i++ ) { - if( b == GTK_TOGGLE_BUTTON(e->w[i]) ) break; - } - value=b->active?1:0; - if( e->e.data.volume1.pvoices[i] == value ) return; - if( e->e.data.volume1.voices > 1 && *e->chain ) { - for( j=0 ; je.data.volume1.voices; j++ ) { - e->e.data.volume1.pvoices[j]=value; - if( j!= i ) { - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(e->w[j]),b->active); - } - } - } else { - e->e.data.volume1.pvoices[i]=value; - } - err=snd_mixer_element_write(cards[e->card].mixer[e->mdev].handle,&e->e); - if( err < 0 ) { - fprintf(stderr,_("mixer element write error: %s\n"),snd_strerror(err)); - } -} - -static void volume1_callback(GtkAdjustment *adj,s_element_t *e) { - int i,j,value,err; - - for( i=0 ; ie.data.volume1.voices; i++ ) { - if( adj == e->adj[i] ) break; - } - value=-(int)adj->value; - if( e->e.data.volume1.pvoices[i] == value ) return; - if( e->e.data.volume1.voices > 1 && *e->chain ) { - for( j=0 ; je.data.volume1.voices; j++ ) { - e->e.data.volume1.pvoices[j]=value; - if( j!= i ) { - e->adj[j]->value=adj->value; - gtk_signal_emit_by_name(GTK_OBJECT(e->adj[j]),"value_changed"); - } - } - } else { - e->e.data.volume1.pvoices[i]=value; - } - err=snd_mixer_element_write(cards[e->card].mixer[e->mdev].handle,&e->e); - if( err < 0 ) { - fprintf(stderr,_("mixer element write error: %s\n"),snd_strerror(err)); - } -} - -static void switch1_callback(GtkToggleButton *b,s_element_t *e ) { - int i,j; - - for( i=0 ; ie.data.switch1.sw; i++ ) { - if( b == (GtkToggleButton *)e->w[i] ) break; - } - if( (snd_mixer_get_bit(e->e.data.switch1.psw,i)?TRUE:FALSE) == b->active ) - return; - if( e->e.data.switch1.sw > 1 && *e->chain ) { - for( j=0 ; je.data.switch1.sw; j++ ) { - snd_mixer_set_bit(e->e.data.switch1.psw,j,b->active); - if( j != i ) - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(e->w[j]),b->active); - } - } else { - snd_mixer_set_bit(e->e.data.switch1.psw,i,b->active); - } - snd_mixer_element_write(cards[e->card].mixer[e->mdev].handle,&e->e); -} - -static void switch2_callback(GtkToggleButton *b,s_element_t *e ) { - int err; - - e->e.data.switch2.sw=b->active; - err=snd_mixer_element_write(cards[e->card].mixer[e->mdev].handle,&e->e); -} - -static void chain_callback(GtkToggleButton *b,s_obj_t *obj ) { - obj->chain = b->active; - /* - printf("obj "); - if( obj->g ) printf("gid '%s',%d ",obj->g->g.gid.name,obj->g->g.gid.index); - if( obj->e ) printf("eid '%s',%d,%d ",obj->e->e.e.eid.name, - obj->e->e.e.eid.index,obj->e->e.e.eid.type); - printf(" %s\n",obj->chain?"TRUE":"FALSE"); - */ -} - -static void accu3_callback(GtkAdjustment *adj,s_element_t *e) { - int i,j,value,err; - - for( i=0 ; ie.data.accu3.voices; i++ ) { - if( adj == e->adj[i] ) break; - } - value=-(int)adj->value; - if( e->e.data.accu3.pvoices[i] == value ) return; - if( e->e.data.accu3.voices > 1 && *e->chain ) { - for( j=0 ; je.data.accu3.voices; j++ ) { - e->e.data.accu3.pvoices[j]=value; - if( j!= i ) { - e->adj[j]->value=adj->value; - gtk_signal_emit_by_name(GTK_OBJECT(e->adj[j]),"value_changed"); - } - } - } else { - e->e.data.accu3.pvoices[i]=value; - } - err=snd_mixer_element_write(cards[e->card].mixer[e->mdev].handle,&e->e); - if( err < 0 ) { - fprintf(stderr,_("mixer element write error: %s\n"),snd_strerror(err)); - } -} - -static void mux1_callback(GtkItem *item,s_element_t *e ) { - int i,ch,no,err; - - ch=(int)gtk_object_get_data(GTK_OBJECT(item),"ch"); - no=(int)gtk_object_get_data(GTK_OBJECT(item),"no"); - - if( strcmp(e->mux[no].name,e->e.data.mux1.poutput[ch].name) == 0 && - e->mux[no].index == e->e.data.mux1.poutput[ch].index && - e->mux[no].type == e->e.data.mux1.poutput[ch].type ) return; - - if( *e->chain ) { - for( i=0 ; ie.data.mux1.output ; i++ ) { - e->e.data.mux1.poutput[i]=e->mux[no]; - if( ch != i ) gtk_option_menu_set_history( - GTK_OPTION_MENU(e->w[i]),no); - } - } else { - e->e.data.mux1.poutput[ch]=e->mux[no]; - } - err=snd_mixer_element_write(cards[e->card].mixer[e->mdev].handle,&e->e); - if( err< 0 ) { - fprintf(stderr,_("mixer mux1 element write error: %s\n"),snd_strerror(err)); - } -} - -static void mux2_callback(GtkItem *item,s_element_t *e ) { - int no,err; - - no=(int)gtk_object_get_data(GTK_OBJECT(item),"no"); - - if( strcmp(e->mux[no].name,e->e.data.mux2.output.name) == 0 && - e->mux[no].index == e->e.data.mux2.output.index && - e->mux[no].type == e->e.data.mux2.output.type ) return; - - e->e.data.mux2.output=e->mux[no]; - err=snd_mixer_element_write(cards[e->card].mixer[e->mdev].handle,&e->e); - if( err< 0 ) { - fprintf(stderr,_("mixer mux1 element write error: %s\n"),snd_strerror(err)); - } -} - -static void sw_3d_callback(GtkToggleButton *b,s_element_t *e ) { - int err; - - if( b == (GtkToggleButton *)e->w[0] ) { - e->e.data.teffect1.sw = b->active; - } else { - e->e.data.teffect1.mono_sw = b->active; - } - err=snd_mixer_element_write(cards[e->card].mixer[e->mdev].handle,&e->e); -} - -static void vol_3d_callback(GtkAdjustment *adj,s_element_t *e) { - int i,err,*v,value; - - for( i=0 ; i<7 ; i++ ) { - if( adj == e->adj[i] ) break; - } - v=NULL; - switch( i ) { - case 0: - v=&e->e.data.teffect1.wide; - break; - case 1: - v=&e->e.data.teffect1.volume; - break; - case 2: - v=&e->e.data.teffect1.center; - break; - case 3: - v=&e->e.data.teffect1.space; - break; - case 4: - v=&e->e.data.teffect1.depth; - break; - case 5: - v=&e->e.data.teffect1.delay; - break; - case 6: - v=&e->e.data.teffect1.feedback; - break; - case 7: - v=&e->e.data.teffect1.depth_rear; - break; - } - value=(int)adj->value; - if( v ) { - if( value == *v ) return; - *v=value; - } else return; - err=snd_mixer_element_write(cards[e->card].mixer[e->mdev].handle,&e->e); - if( err<0 ) { - fprintf(stderr,_("3D effect write error: %s\n"),snd_strerror(err)); - } -} - -static void sw_tone_callback(GtkToggleButton *b,s_element_t *e ) { - int err; - - e->e.data.tc1.sw = b->active; - e->e.data.tc1.tc=SND_MIXER_TC1_SW; - err=snd_mixer_element_write(cards[e->card].mixer[e->mdev].handle,&e->e); -} - -static void vol_tone_callback(GtkAdjustment *adj,s_element_t *e) { - int i,err,*v,value; - - for( i=0 ; i<2 ; i++ ) { - if( adj == e->adj[i] ) break; - } - v=NULL; - switch( i ) { - case 0: - v=&e->e.data.tc1.bass; - e->e.data.tc1.tc=SND_MIXER_TC1_BASS; - break; - case 1: - v=&e->e.data.tc1.treble; - e->e.data.tc1.tc=SND_MIXER_TC1_TREBLE; - break; - } - value=-(int)adj->value; - if( v ) { - if( value == *v ) return; - *v=value; - } else return; - err=snd_mixer_element_write(cards[e->card].mixer[e->mdev].handle,&e->e); - if( err<0 ) { - fprintf(stderr,_("Tone controll write error: %s\n"),snd_strerror(err)); - } -} - -static void pc1_callback(GtkAdjustment *adj,s_element_t *e) { - int i,err,value; - - value=(int)adj->value; - for( i=0 ; ie.data.pc1.pan; i++ ) { - if( adj == e->adj[i] ) break; - } - if( i==e->e.data.pc1.pan ) { - fprintf(stderr,"Pan err.\n"); - return; - } - if( e->e.data.pc1.ppan[i]==value ) return; - - e->e.data.pc1.ppan[i]=value; - err=snd_mixer_element_write(cards[e->card].mixer[e->mdev].handle,&e->e); - if( err<0 ) { - fprintf(stderr,_("PAN controll write error: %s\n"),snd_strerror(err)); - } -} - -static void pc1_ss_callback(GtkWidget *w,s_element_t *e) { - int i,j,k,err; - gfloat v=0; - - j=1; - for( i=0 ; ie.data.pc1.pan; i++ ) { - if( w == e->w[j] ) { - k=e->info.data.pc1.prange[i].min; - break; - } - j++; - if( w == e->w[j] ) { - k=(e->info.data.pc1.prange[i].min+e->info.data.pc1.prange[i].max)/2; - break; - } - j++; - if( w == e->w[j] ) { - k=e->info.data.pc1.prange[i].max; - break; - } - j+=2; - } - if( ie.data.pc1.pan ) { - if( e->e.data.pc1.ppan[i] == k ) return; - e->adj[i]->value=(gfloat)k; - gtk_signal_emit_by_name(GTK_OBJECT(e->adj[i]),"value_changed"); - } -} - -GtkWidget *make_mixer( gint c_n , gint m_n ) { - int i,j,k,err; - GtkWidget *mv_box,*m_name; - GtkWidget *s_win; - GtkWidget *mh_box; - GtkWidget *frame; - GtkWidget *iv_box; - GtkWidget *ih_box; - GtkWidget *c_l; - char gname[128]; - s_mixer_t *mixer; - s_group_t *group=NULL; - s_element_t *e; - s_eelements_t *ee; - s_obj_t *obj; - - if( cards[c_n].mixer[m_n].handle ) { - snd_mixer_close(cards[c_n].mixer[m_n].handle); - } - if( (err=snd_mixer_open(&cards[c_n].mixer[m_n].handle,c_n,m_n)) < 0 ) { - return NULL; - } - - mixer = &cards[c_n].mixer[m_n]; - - mv_box=gtk_vbox_new(FALSE,0); - gtk_widget_show(mv_box); - - sprintf(gname,"%s:%s",cards[c_n].info.name, - cards[c_n].mixer[m_n].info.name); - m_name=gtk_label_new(gname); - gtk_box_pack_start(GTK_BOX(mv_box),m_name,FALSE,FALSE,0); - gtk_widget_show(m_name); - - mh_box=gtk_hbox_new(FALSE,2); - if( conf.scroll ) { - s_win=gtk_scrolled_window_new(NULL,NULL); - gtk_box_pack_start(GTK_BOX(mv_box),s_win,TRUE,TRUE,0); - gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(s_win), - GTK_POLICY_AUTOMATIC, - GTK_POLICY_NEVER); - gtk_widget_show(s_win); - gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(s_win), - mh_box); - //gtk_container_add(GTK_CONTAINER(s_win),mh_box); - } else { - gtk_box_pack_start(GTK_BOX(mv_box),mh_box,TRUE,TRUE,4); - } - gtk_widget_show(mh_box); - - for( obj=mixer->obj ; obj != NULL ; obj=obj->next ) { - if( obj->g ) { - group=obj->g; - k=0; - for( j=0 ; jg.elements ; j++ ) { - if( group->e[j].e.eid.type ) k++; - } - if( k==0 && obj->dyn_e == 0) obj->enable=FALSE; - if( obj->enable && (obj->dyn_e == 0 || obj->dyn_e == 3) ) { - obj->v_frame=frame=gtk_frame_new(NULL); - gtk_frame_set_shadow_type(GTK_FRAME(frame),GTK_SHADOW_OUT); - gtk_box_pack_start(GTK_BOX(mh_box),frame, - mixer->p_e,mixer->p_f,0); - iv_box=gtk_vbox_new(FALSE,0); - gtk_container_add(GTK_CONTAINER(frame),iv_box); - obj->chain_en=FALSE; - for( j=0 ; jg.elements ; j++ ) { - e=&group->e[j]; - e->chain = &obj->chain; - e->chain_en = &obj->chain_en; - if( mk_element(e,GTK_BOX(iv_box))<0 ) return NULL; - } - if( group->g.gid.index > 0 ) { - sprintf(gname,"%s %d",group->g.gid.name, - group->g.gid.index); - } else { - sprintf(gname,"%s",group->g.gid.name); - } - ih_box=gtk_hbox_new(FALSE,2); - gtk_box_pack_start(GTK_BOX(iv_box),ih_box,FALSE,FALSE,0); - if( obj->chain_en ) { - obj->cwb=gtk_toggle_button_new(); - gtk_box_pack_start(GTK_BOX(ih_box),obj->cwb, - FALSE,FALSE,4); - gtk_widget_set_usize(obj->cwb,10,10); - gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(obj->cwb) - ,obj->chain); - gtk_widget_show(obj->cwb); - gtk_signal_connect(GTK_OBJECT(obj->cwb),"toggled", - GTK_SIGNAL_FUNC(chain_callback), - (gpointer)obj); - c_l=gtk_label_new(_("Lock")); - gtk_box_pack_start(GTK_BOX(ih_box),c_l,FALSE,FALSE,0); - gtk_widget_show(c_l); - gtk_widget_show(ih_box); - if( strlen(gname) > 10 ) { - j=0; - while( gname[j]!=' ' && gname[j]!=0 ) j++; - if( gname[j]!=0 ) { - gname[j+3]=0; - } - if( group->g.gid.index > 0 ) - sprintf(gname,"%s %d",gname,group->g.gid.index); - } - } else { - c_l=gtk_label_new(" "); - gtk_box_pack_start(GTK_BOX(ih_box),c_l,FALSE,FALSE,0); - gtk_widget_show(c_l); - if( strlen(gname) > 5 ) { - j=0; - while( gname[j]!=' ' && gname[j]!=0 ) j++; - if( gname[j]!=0 ) { - gname[j+3]=0; - } - if( group->g.gid.index > 0 ) - sprintf(gname,"%s %d",gname,group->g.gid.index); - } - } - gtk_frame_set_label(GTK_FRAME(frame),gname); - gtk_widget_show(ih_box); - gtk_widget_show(iv_box); - gtk_widget_show(frame); - obj->enabled=TRUE; - } else { - obj->enabled=FALSE; - } - } - if( obj->e ) { - if( obj->enable && (obj->dyn_e == 0 || obj->dyn_e == 3)) { - ee=obj->e; - e=&ee->e; - obj->v_frame=frame=gtk_frame_new(NULL); - gtk_frame_set_shadow_type(GTK_FRAME(frame),GTK_SHADOW_OUT); - gtk_box_pack_start(GTK_BOX(mh_box),frame, - mixer->p_e,mixer->p_f,0); - iv_box=gtk_vbox_new(FALSE,0); - gtk_container_add(GTK_CONTAINER(frame),iv_box); - obj->chain_en=FALSE; - e->chain=&obj->chain; - e->chain_en=&obj->chain_en; - if( mk_element(e,GTK_BOX(iv_box))<0 ) return NULL; - ih_box=gtk_hbox_new(FALSE,2); - gtk_box_pack_start(GTK_BOX(iv_box),ih_box,FALSE,FALSE,0); - if( e->e.eid.index > 0 ) { - sprintf(gname,"%s%d",e->e.eid.name,e->e.eid.index); - } else { - sprintf(gname,"%s",e->e.eid.name); - } - if( obj->chain_en ) { - obj->cwb=gtk_toggle_button_new(); - gtk_box_pack_start(GTK_BOX(ih_box),obj->cwb,FALSE,FALSE,4); - gtk_widget_set_usize(obj->cwb,10,10); - gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(obj->cwb) - ,obj->chain); - gtk_widget_show(obj->cwb); - gtk_signal_connect(GTK_OBJECT(obj->cwb),"toggled", - GTK_SIGNAL_FUNC(chain_callback), - (gpointer)obj); - c_l=gtk_label_new(_("Lock")); - gtk_box_pack_start(GTK_BOX(ih_box),c_l,FALSE,FALSE,0); - gtk_widget_show(c_l); - gtk_widget_show(ih_box); - if( strlen(gname) > 10 ) { - j=0; - while( gname[j]!=' ' && gname[j]!=0 ) j++; - if( gname[j]!=0 ) { - gname[j+3]=0; - } - } - } else { - c_l=gtk_label_new(" "); - gtk_box_pack_start(GTK_BOX(ih_box),c_l,FALSE,FALSE,0); - gtk_widget_show(c_l); - } - gtk_frame_set_label(GTK_FRAME(frame),gname); - gtk_widget_show(ih_box); - gtk_widget_show(iv_box); - gtk_widget_show(frame); - obj->enabled=TRUE; - } else { - obj->enabled=FALSE; - } - } - } - gtk_signal_connect(GTK_OBJECT(mv_box),"destroy", - GTK_SIGNAL_FUNC(close_callback),(gpointer)mixer); - mixer->enabled=TRUE; - return mv_box; -} - -#define MIX_3D_VOL(NO,name,min_name,max_name,sname) \ - if( e->info.data.teffect1.effect & sname ) { \ - ih_box=gtk_hbox_new(FALSE,2); \ - gtk_box_pack_start(iv_box,ih_box,FALSE,FALSE,0); \ - c_l=gtk_label_new(label_3d[NO]); \ - gtk_box_pack_start(GTK_BOX(ih_box),c_l,FALSE,FALSE,0); \ - gtk_widget_show(c_l); \ - gtk_widget_show(ih_box); \ - e->adj[NO]=(GtkAdjustment *)gtk_adjustment_new( \ - (gfloat)e->e.data.teffect1.name, \ - (gfloat)e->info.data.teffect1.min_name-0.5, \ - (gfloat)e->info.data.teffect1.max_name+1.0, \ - 1.0,1.0,1.0); \ - gtk_signal_connect(GTK_OBJECT(e->adj[NO]), \ - "value_changed",GTK_SIGNAL_FUNC(vol_3d_callback),(gpointer)e);\ - e->w[NO+2]=gtk_hscale_new(GTK_ADJUSTMENT(e->adj[NO])); \ - gtk_scale_set_draw_value(GTK_SCALE(e->w[NO+2]),FALSE); \ - gtk_box_pack_start(GTK_BOX(iv_box), e->w[NO+2],FALSE,FALSE,4); \ - gtk_widget_show(e->w[NO+2]); \ - } else { ;\ - e->w[NO+2]=NULL; \ - e->adj[NO]=NULL; \ - } -#define MIX_TONE_VOL(NO,name,min_name,max_name,sname) \ - if( e->info.data.tc1.tc & sname ) { \ - tv_box = gtk_vbox_new(FALSE,2); \ - gtk_box_pack_start(GTK_BOX(ih_box),tv_box,TRUE,TRUE,0); \ - c_l=gtk_label_new(label_tone[NO]); \ - gtk_box_pack_start(GTK_BOX(tv_box),c_l,FALSE,FALSE,0); \ - gtk_widget_show(c_l); \ - e->adj[NO]=(GtkAdjustment *)gtk_adjustment_new( \ - -(gfloat)e->e.data.tc1.name, \ - -(gfloat)e->info.data.tc1.max_name-0.5, \ - -(gfloat)e->info.data.tc1.min_name+0.5, \ - 1.0,4.0,1.0); \ - gtk_signal_connect(GTK_OBJECT(e->adj[NO]), \ - "value_changed",GTK_SIGNAL_FUNC(vol_tone_callback),(gpointer)e);\ - e->w[NO+1]=gtk_vscale_new(GTK_ADJUSTMENT(e->adj[NO])); \ - gtk_scale_set_draw_value(GTK_SCALE(e->w[NO+1]),FALSE); \ - gtk_box_pack_start(GTK_BOX(tv_box), e->w[NO+1],FALSE,FALSE,4); \ - gtk_widget_show(e->w[NO+1]); \ - gtk_widget_show(tv_box); \ - } else { ;\ - e->w[NO+1]=NULL; \ - e->adj[NO]=NULL; \ - } - -gint mk_element(s_element_t *e,GtkBox *iv_box) { - int i,j,k; - GtkWidget *ih_box,*tv_box; - GtkWidget *menu,*c_l,*item; - - ih_box=gtk_hbox_new(TRUE,0); - switch( e->e.eid.type) { - case SND_MIXER_ETYPE_VOLUME1: - if( (e->info.data.volume1.prange[0].max- - e->info.data.volume1.prange[0].min) == 1 ) { - gtk_box_pack_start(iv_box,ih_box,FALSE,FALSE,0); - } else - gtk_box_pack_start(iv_box,ih_box,TRUE,TRUE,0); - if( e->e.data.volume1.voices > 1 ) { - *e->chain_en=TRUE; - *e->chain=TRUE; - } - if( e->w == NULL ) { - e->w = (GtkWidget **)g_malloc( e->e.data.volume1.voices * - sizeof(GtkWidget *)); - } - if( e->w == NULL ) { - fprintf(stderr,nomem_msg); - return -1; - } - if( e->adj == NULL ) { - e->adj=(GtkAdjustment **)g_malloc(e->e.data.volume1.voices* - sizeof(GtkAdjustment *)); - } - if( e->adj==NULL ) { - fprintf(stderr,nomem_msg); - return -1; - } - for( i=0 ; ie.data.volume1.voices ; i++ ) { - if( (e->info.data.volume1.prange[i].max- - e->info.data.volume1.prange[i].min) == 1 ) { - e->adj[i]=NULL; - e->w[i]=gtk_toggle_button_new_with_label("V"); - gtk_box_pack_start(GTK_BOX(ih_box),e->w[i], - FALSE,FALSE,0); - gtk_toggle_button_set_state( - GTK_TOGGLE_BUTTON(e->w[i]), - e->e.data.volume1.pvoices[i]); - gtk_signal_connect(GTK_OBJECT(e->w[i]),"toggled", - GTK_SIGNAL_FUNC(volume1_sw_callback), - (gpointer)e); - gtk_widget_show(e->w[i]); - } else { - e->adj[i]=(GtkAdjustment *)gtk_adjustment_new( - -(gfloat)e->e.data.volume1.pvoices[i], - -(gfloat)e->info.data.volume1.prange[i].max-0.5, - -(gfloat)e->info.data.volume1.prange[i].min+0.5, - 1.0,4.0,1.0); - gtk_signal_connect(GTK_OBJECT(e->adj[i]),"value_changed", - GTK_SIGNAL_FUNC(volume1_callback), - (gpointer)e); - e->w[i]=gtk_vscale_new(GTK_ADJUSTMENT(e->adj[i])); - gtk_scale_set_draw_value(GTK_SCALE(e->w[i]),FALSE); - gtk_box_pack_start(GTK_BOX(ih_box),e->w[i],FALSE,FALSE,4); - gtk_widget_show(e->w[i]); - } - } - break; - case SND_MIXER_ETYPE_SWITCH1: - gtk_box_pack_start(iv_box,ih_box,FALSE,FALSE,4); - if( e->e.data.switch1.sw > 1 ) { - *e->chain_en=TRUE; - *e->chain=TRUE; - } - if( e->w == NULL ) { - e->w = (GtkWidget **)g_malloc( e->e.data.switch1.sw * - sizeof(GtkWidget *)); - } - if( e->w == NULL ) { - fprintf(stderr,nomem_msg); - return -1; - } - for( i=0 ; ie.data.switch1.sw ; i++ ) { - e->w[i]=gtk_toggle_button_new(); - gtk_box_pack_start(GTK_BOX(ih_box),e->w[i],FALSE,FALSE,0); - gtk_widget_set_usize(e->w[i],10,10); - gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(e->w[i]), - snd_mixer_get_bit(e->e.data.switch1.psw,i) - ); - gtk_signal_connect(GTK_OBJECT(e->w[i]),"toggled", - GTK_SIGNAL_FUNC(switch1_callback),(gpointer)e); - gtk_widget_show(e->w[i]); - } - break; - case SND_MIXER_ETYPE_SWITCH2: - gtk_box_pack_start(iv_box,ih_box,FALSE,FALSE,4); - if( e->w == NULL ) { - e->w = (GtkWidget **)g_malloc(sizeof(GtkWidget *)); - } - if( e->w == NULL ) { - fprintf(stderr,nomem_msg); - return -1; - } - e->w[0]=gtk_toggle_button_new(); - gtk_box_pack_start(GTK_BOX(ih_box),e->w[0],FALSE,FALSE,0); - gtk_widget_set_usize(e->w[0],10,10); - gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(e->w[0]), - e->e.data.switch2.sw); - gtk_signal_connect(GTK_OBJECT(e->w[0]),"toggled", - GTK_SIGNAL_FUNC(switch2_callback), - (gpointer)e); - gtk_widget_show(e->w[0]); - break; - case SND_MIXER_ETYPE_ACCU3: - gtk_box_pack_start(iv_box,ih_box,FALSE,FALSE,0); - if( e->e.data.accu3.voices > 1 ) { - *e->chain_en=TRUE; - *e->chain=TRUE; - } - if( e->w == NULL ) { - e->w = (GtkWidget **)g_malloc(e->e.data.accu3.voices * - sizeof(GtkWidget *)); - } - if( e->w == NULL ) { - fprintf(stderr,nomem_msg); - return -1; - } - if( e->adj == NULL ) { - e->adj=(GtkAdjustment **)g_malloc(e->e.data.accu3.voices* - sizeof(GtkAdjustment *)); - } - if( e->adj==NULL ) { - printf(nomem_msg); - return -1; - } - for( i=0 ; ie.data.accu3.voices ; i++ ) { - e->adj[i]=(GtkAdjustment *)gtk_adjustment_new( - -(gfloat)e->e.data.accu3.pvoices[i], - -(gfloat)e->info.data.accu3.prange[i].max-0.5, - -(gfloat)e->info.data.accu3.prange[i].min+0.5, - 1.0,1.0,1.0); - gtk_signal_connect(GTK_OBJECT(e->adj[i]),"value_changed", - GTK_SIGNAL_FUNC(accu3_callback),(gpointer)e); - e->w[i]=gtk_vscale_new(GTK_ADJUSTMENT(e->adj[i])); - gtk_scale_set_draw_value(GTK_SCALE(e->w[i]),FALSE); - gtk_box_pack_start(GTK_BOX(ih_box),e->w[i],FALSE,FALSE,4); - gtk_widget_show(e->w[i]); - } - break; - case SND_MIXER_ETYPE_MUX1: - if( e->e.data.mux1.output > 1 ) { - *e->chain_en=TRUE; - *e->chain=TRUE; - } - if( e->w == NULL ) { - e->w = (GtkWidget **)g_malloc(e->e.data.mux1.output * - sizeof(GtkWidget *)); - } - if( e->w == NULL ) { - fprintf(stderr,nomem_msg); - return -1; - } - for( i=0 ; ie.data.mux1.output ; i++ ) { - e->w[i]=gtk_option_menu_new(); - menu=gtk_menu_new(); - k=0; - for( j=0 ; jmux_n; j++ ) { - if( strcmp(e->mux[j].name,e->e.data.mux1.poutput[i].name)==0 && - e->mux[j].index == e->e.data.mux1.poutput[i].index && - e->mux[j].type == e->e.data.mux1.poutput[i].type ) k=j; - item=gtk_menu_item_new_with_label(e->mux[j].name); - gtk_object_set_data(GTK_OBJECT(item),"ch",(gpointer)i); - gtk_object_set_data(GTK_OBJECT(item),"no",(gpointer)j); - gtk_signal_connect(GTK_OBJECT(item),"activate", - GTK_SIGNAL_FUNC(mux1_callback),(gpointer)e); - gtk_menu_append(GTK_MENU(menu),item); - gtk_widget_show(item); - } - gtk_option_menu_set_menu(GTK_OPTION_MENU(e->w[i]),menu); - gtk_box_pack_start(iv_box,e->w[i],FALSE,FALSE,4); - gtk_widget_show(e->w[i]); - gtk_option_menu_set_history(GTK_OPTION_MENU(e->w[i]),k); - } - break; - case SND_MIXER_ETYPE_MUX2: - if( e->w == NULL ) { - e->w = (GtkWidget **)g_malloc(sizeof(GtkWidget *)); - } - if( e->w == NULL ) { - fprintf(stderr,nomem_msg); - return -1; - } - e->w[0]=gtk_option_menu_new(); - menu=gtk_menu_new(); - k=0; - for( j=0 ; jmux_n; j++ ) { - if( strcmp(e->mux[j].name,e->e.data.mux2.output.name)==0 && - e->mux[j].index == e->e.data.mux2.output.index && - e->mux[j].type == e->e.data.mux2.output.type ) k=j; - item=gtk_menu_item_new_with_label(e->mux[j].name); - gtk_object_set_data(GTK_OBJECT(item),"no",(gpointer)j); - gtk_signal_connect(GTK_OBJECT(item),"activate", - GTK_SIGNAL_FUNC(mux2_callback),(gpointer)e); - gtk_menu_append(GTK_MENU(menu),item); - gtk_widget_show(item); - } - gtk_option_menu_set_menu(GTK_OPTION_MENU(e->w[0]),menu); - gtk_box_pack_start(iv_box,e->w[0],FALSE,FALSE,4); - gtk_widget_show(e->w[0]); - gtk_option_menu_set_history(GTK_OPTION_MENU(e->w[0]),k); - break; - case SND_MIXER_ETYPE_3D_EFFECT1: - if( e->w == NULL ) { - e->w = (GtkWidget **)g_malloc(10*sizeof(GtkWidget *)); - } - if( e->w == NULL ) { - fprintf(stderr,nomem_msg); - return -1; - } - if( e->adj == NULL ) { - e->adj=(GtkAdjustment **)g_malloc(8*sizeof(GtkAdjustment *)); - } - if( e->adj==NULL ) { - printf(nomem_msg); - return -1; - } - if( e->info.data.teffect1.effect & SND_MIXER_EFF1_SW ) { - ih_box=gtk_hbox_new(FALSE,2); - gtk_box_pack_start(iv_box,ih_box,FALSE,FALSE,0); - e->w[0]=gtk_toggle_button_new(); - gtk_box_pack_start(GTK_BOX(ih_box),e->w[0],FALSE,FALSE,4); - gtk_widget_set_usize(e->w[0],10,10); - gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(e->w[0]) - ,e->e.data.teffect1.sw); - gtk_widget_show(e->w[0]); - gtk_signal_connect(GTK_OBJECT(e->w[0]),"toggled", - GTK_SIGNAL_FUNC(sw_3d_callback),(gpointer)e); - c_l=gtk_label_new(_("Enable")); - gtk_box_pack_start(GTK_BOX(ih_box),c_l,FALSE,FALSE,0); - gtk_widget_show(c_l); - gtk_widget_show(ih_box); - } else { - e->w[0]=NULL; - } - if( e->info.data.teffect1.effect & SND_MIXER_EFF1_MONO_SW ) { - ih_box=gtk_hbox_new(FALSE,2); - gtk_box_pack_start(iv_box,ih_box,FALSE,FALSE,0); - e->w[1]=gtk_toggle_button_new(); - gtk_box_pack_start(GTK_BOX(ih_box),e->w[1],FALSE,FALSE,4); - gtk_widget_set_usize(e->w[1],10,10); - gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(e->w[1]) - ,e->e.data.teffect1.mono_sw); - gtk_widget_show(e->w[1]); - gtk_signal_connect(GTK_OBJECT(e->w[1]),"toggled", - GTK_SIGNAL_FUNC(sw_3d_callback),(gpointer)e); - c_l=gtk_label_new(_("MONO")); - gtk_box_pack_start(GTK_BOX(ih_box),c_l,FALSE,FALSE,0); - gtk_widget_show(c_l); - gtk_widget_show(ih_box); - } else { - e->w[1]=NULL; - } - MIX_3D_VOL(0,wide,min_wide,max_wide,SND_MIXER_EFF1_WIDE); - MIX_3D_VOL(1,volume,min_volume,max_volume,SND_MIXER_EFF1_VOLUME); - MIX_3D_VOL(2,center,min_center,max_center,SND_MIXER_EFF1_CENTER); - MIX_3D_VOL(3,space,min_space,max_space,SND_MIXER_EFF1_SPACE); - MIX_3D_VOL(4,depth,min_depth,max_depth,SND_MIXER_EFF1_DEPTH); - MIX_3D_VOL(5,delay,min_delay,max_delay,SND_MIXER_EFF1_DELAY); - MIX_3D_VOL(6,feedback,min_feedback,max_feedback,SND_MIXER_EFF1_FEEDBACK); - MIX_3D_VOL(7,depth_rear,min_depth_rear,max_depth_rear,SND_MIXER_EFF1_DEPTH_REAR); - break; - case SND_MIXER_ETYPE_TONE_CONTROL1: - if( e->w == NULL ) { - e->w = (GtkWidget **)g_malloc(3*sizeof(GtkWidget *)); - } - if( e->w == NULL ) { - fprintf(stderr,nomem_msg); - return -1; - } - if( e->adj == NULL ) { - e->adj=(GtkAdjustment **)g_malloc(2*sizeof(GtkAdjustment *)); - } - if( e->adj==NULL ) { - printf(nomem_msg); - return -1; - } - e->e.data.tc1.tc=e->info.data.tc1.tc; - snd_mixer_element_read(cards[e->card].mixer[e->mdev].handle,&e->e); - if( e->info.data.tc1.tc & - (SND_MIXER_TC1_BASS | SND_MIXER_TC1_TREBLE ) ) { - gtk_box_pack_start(iv_box,ih_box,TRUE,TRUE,0); - MIX_TONE_VOL(0,bass,min_bass,max_bass,SND_MIXER_TC1_BASS); - MIX_TONE_VOL(1,treble,min_treble,max_treble,SND_MIXER_TC1_TREBLE); - } - if( e->info.data.tc1.tc & SND_MIXER_TC1_SW ) { - if( e->info.data.tc1.tc & - (SND_MIXER_TC1_BASS | SND_MIXER_TC1_TREBLE ) ) - ih_box=gtk_hbox_new(FALSE,2); - gtk_box_pack_start(iv_box,ih_box,FALSE,FALSE,0); - e->w[0]=gtk_toggle_button_new(); - gtk_box_pack_start(GTK_BOX(ih_box),e->w[0],FALSE,FALSE,4); - gtk_widget_set_usize(e->w[0],10,10); - gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(e->w[0]) - ,e->e.data.tc1.sw); - gtk_widget_show(e->w[0]); - gtk_signal_connect(GTK_OBJECT(e->w[0]),"toggled", - GTK_SIGNAL_FUNC(sw_tone_callback),(gpointer)e); - c_l=gtk_label_new(_("Enable")); - gtk_box_pack_start(GTK_BOX(ih_box),c_l,FALSE,FALSE,0); - gtk_widget_show(c_l); - gtk_widget_show(ih_box); - } else { - e->w[0]=NULL; - } - break; - case SND_MIXER_ETYPE_PAN_CONTROL1: - if( e->w == NULL ) { - e->w = (GtkWidget **)g_malloc(e->e.data.pc1.pan*4* - sizeof(GtkWidget *)); - } - if( e->w == NULL ) { - fprintf(stderr,nomem_msg); - return -1; - } - if( e->adj == NULL ) { - e->adj=(GtkAdjustment **)g_malloc(e->e.data.pc1.pan* - sizeof(GtkAdjustment *)); - } - if( e->adj==NULL ) { - fprintf(stderr,nomem_msg); - return -1; - } - for( i=0 ; ie.data.pc1.pan ; i++ ) { - j=i*4; - e->adj[i]=(GtkAdjustment *)gtk_adjustment_new( - (gfloat)e->e.data.pc1.ppan[i], - (gfloat)e->info.data.pc1.prange[i].min-0.5, - (gfloat)e->info.data.pc1.prange[i].max+1.5, - 1.0,4.0,1.0); - gtk_signal_connect(GTK_OBJECT(e->adj[i]),"value_changed", - GTK_SIGNAL_FUNC(pc1_callback),(gpointer)e); - e->w[j]=gtk_hscale_new(GTK_ADJUSTMENT(e->adj[i])); - gtk_scale_set_draw_value(GTK_SCALE(e->w[j]),FALSE); - gtk_box_pack_start(iv_box,e->w[j],FALSE,FALSE,4); - gtk_widget_show(e->w[j]); - - gtk_box_pack_start(iv_box,ih_box,FALSE,FALSE,4); - j++; - e->w[j]=gtk_button_new_with_label(pc1_ptc1[e->info.data.pc1.prange[i].pan_type]); - gtk_signal_connect(GTK_OBJECT(e->w[j]),"clicked", - GTK_SIGNAL_FUNC(pc1_ss_callback),(gpointer)e); - gtk_box_pack_start(GTK_BOX(ih_box),e->w[j],FALSE,FALSE,2); - gtk_widget_show(e->w[j++]); - e->w[j]=gtk_button_new_with_label("C"); - gtk_signal_connect(GTK_OBJECT(e->w[j]),"clicked", - GTK_SIGNAL_FUNC(pc1_ss_callback),(gpointer)e); - gtk_box_pack_start(GTK_BOX(ih_box),e->w[j],FALSE,FALSE,2); - gtk_widget_show(e->w[j++]); - e->w[j]=gtk_button_new_with_label(pc1_ptc2[e->info.data.pc1.prange[i].pan_type]); - gtk_signal_connect(GTK_OBJECT(e->w[j]),"clicked", - GTK_SIGNAL_FUNC(pc1_ss_callback),(gpointer)e); - gtk_box_pack_start(GTK_BOX(ih_box),e->w[j],FALSE,FALSE,2); - gtk_widget_show(e->w[j]); - } - break; - } - gtk_widget_show(ih_box); - return 0; -} diff --git a/gamix/probe.c b/gamix/probe.c deleted file mode 100644 index 86c72a9..0000000 --- a/gamix/probe.c +++ /dev/null @@ -1,441 +0,0 @@ - -#include "gamix.h" - -int card_num,mdev_num; -s_card_t *cards; - -static int search_es(snd_mixer_eid_t *,snd_mixer_elements_t *); -static gint ab_chk( s_mixer_t *,snd_mixer_eid_t * ); -/* -static int s_element_build(snd_mixer_t *,s_element_t *,snd_mixer_elements_t *, - snd_mixer_eid_t ,int , int); -*/ -static gint mk_mux_lst(snd_mixer_t *,snd_mixer_elements_t *,snd_mixer_element_info_t *,snd_mixer_eid_t **); - -gint probe_mixer( void ) { - int err,i,j,k,l,m; - snd_ctl_t *p_handle; - snd_mixer_t *m_handle; - snd_mixer_groups_t groups; - snd_mixer_elements_t es; - s_mixer_t *mixer; - s_group_t *group; - s_eelements_t *ee; - s_obj_t *obj; - int *es_nums; - - card_num=snd_cards(); - cards=(s_card_t *)g_malloc(sizeof(s_card_t)*card_num); - if( cards == NULL ) { - fprintf(stderr,nomem_msg); - return -1; - } - mdev_num=0; - for( i = 0 ; ihandle=NULL; - //mixer->obj=NULL; - mixer->c_dev=i; - mixer->m_dev=j; - mixer->o_nums=0; - mixer->enable=TRUE; - mixer->enabled=FALSE; - mixer->p_e=TRUE; - mixer->p_f=TRUE; - if((err=snd_mixer_open(&m_handle,i,j))<0 ) { - fprintf(stderr,_("mixer %d/%d open error: %s\n"),i,j, - snd_strerror(err)); - snd_ctl_close(p_handle); - return -1; - } - if((err=snd_ctl_mixer_info(p_handle,j,&mixer->info))<0) { - fprintf(stderr,_("Mixer info failed: %s\n"),snd_strerror(err)); - snd_ctl_close(p_handle); - snd_mixer_close(m_handle); - return -1; - } - bzero(&groups,sizeof(snd_mixer_groups_t)); - if((err=snd_mixer_groups(m_handle,&groups))<0 ) { - fprintf(stderr,_("Mixer %d/%d groups error: %s\n"),i,i, - snd_strerror(err)); - snd_mixer_close(m_handle); - snd_ctl_close(p_handle); - return -1; - } - groups.pgroups = (snd_mixer_gid_t *)g_malloc(groups.groups_over - *sizeof(snd_mixer_eid_t)); - if( groups.pgroups == NULL && groups.groups_over) { - fprintf(stderr,nomem_msg); - snd_ctl_close(p_handle); - snd_mixer_close(m_handle); - } - groups.groups_size = groups.groups_over; - groups.groups_over = groups.groups = 0; - if((err=snd_mixer_groups(m_handle,&groups))<0 ) { - fprintf(stderr,_("Mixer %d/%d groups (2) error: %s\n"), - i,j,snd_strerror(err)); - snd_ctl_close(p_handle); - snd_mixer_close(m_handle); - return -1; - } - bzero(&es, sizeof(snd_mixer_elements_t)); - if( (err=snd_mixer_elements(m_handle,&es))<0 ) { - fprintf(stderr,_("mixer elements read failed: %s"), - snd_strerror(err)); - snd_ctl_close(p_handle); - snd_mixer_close(m_handle); - return -1; - } - es.pelements = (snd_mixer_eid_t *)g_malloc( - es.elements_over * sizeof(snd_mixer_eid_t)); - if( es.pelements == NULL && es.elements_over) { - fprintf(stderr,nomem_msg); - snd_ctl_close(p_handle); - snd_mixer_close(m_handle); - return -1; - } - es.elements_size = es.elements_over; - es.elements_over = es.elements = 0; - if( (err=snd_mixer_elements(m_handle,&es))<0 ) { - fprintf(stderr,_("mixer elements read failed(2): %s"), - snd_strerror(err)); - snd_ctl_close(p_handle); - snd_mixer_close(m_handle); - return -1; - } - es_nums = (int *)g_malloc(es.elements * sizeof(int)); - if( es_nums == NULL && es.elements) { - fprintf(stderr,nomem_msg); - snd_ctl_close(p_handle); - snd_mixer_close(m_handle); - return -1; - } - bzero(es_nums,es.elements * sizeof(int)); - //printf("Card %d mixer %d\n",i,j); - mixer->o_nums=groups.groups; - obj=NULL; - for( k=0 ; knext=(s_obj_t *)malloc(sizeof(s_obj_t)); - if( obj->next == NULL ) { - fprintf(stderr,nomem_msg); - snd_ctl_close(p_handle); - snd_mixer_close(m_handle); - return -1; - } - obj=obj->next; - } else { - mixer->obj=(s_obj_t *)malloc(sizeof(s_obj_t)); - if( mixer->obj == NULL ) { - fprintf(stderr,nomem_msg); - snd_ctl_close(p_handle); - snd_mixer_close(m_handle); - return -1; - } - obj=mixer->obj; - - } - bzero(obj,sizeof(s_obj_t)); - obj->enable=TRUE; - obj->enabled=FALSE; - obj->g=(s_group_t *)malloc(sizeof(s_group_t)); - if( obj->g == NULL ) { - fprintf(stderr,nomem_msg); - snd_ctl_close(p_handle); - snd_mixer_close(m_handle); - return -1; - } - group=obj->g; - bzero(group,sizeof(s_group_t)); - group->g.gid=groups.pgroups[k]; - if((err=snd_mixer_group_read(m_handle,&group->g)) <0 ) { - fprintf(stderr,_("Mixer %d/%d group error: %s\n"),i,j, - snd_strerror(err)); - snd_ctl_close(p_handle); - snd_mixer_close(m_handle); - return -1; - } - group->g.pelements = (snd_mixer_eid_t *)g_malloc( - group->g.elements_over*sizeof(snd_mixer_eid_t)); - if( group->g.pelements == NULL && group->g.elements_over) { - snd_ctl_close(p_handle); - fprintf(stderr,nomem_msg); - snd_mixer_close(m_handle); - return -1; - } - group->g.elements_size = group->g.elements_over; - group->g.elements = group->g.elements_over = 0; - if((err=snd_mixer_group_read(m_handle,&group->g)) <0 ) { - fprintf(stderr,_("Mixer %d/%d group error (2): %s\n"),i,j, - snd_strerror(err)); - snd_ctl_close(p_handle); - snd_mixer_close(m_handle); - return -1; - } - group->e=(s_element_t *)g_malloc(group->g.elements_size* - sizeof(s_element_t)); - if( group->e == NULL && group->g.elements_size) { - fprintf(stderr,nomem_msg); - snd_ctl_close(p_handle); - snd_mixer_close(m_handle); - return -1; - } - for( l=0 ; lg.elements ; l++ ) { - m=search_es( &group->g.pelements[l],&es ); - if( m>-1 ) { - if( es_nums[m] ) group->g.pelements[l].type=0; - es_nums[m]++; - } - err=s_element_build(m_handle,&group->e[l],&es, - group->g.pelements[l],i,j); - if( err<0 ) { - snd_ctl_close(p_handle); - snd_mixer_close(m_handle); - return -1; - } - } - } - for( k=0 ; k 1 ) { - //for( l=0 ; lobj ; obj != NULL && l==0 ; - obj=obj->next ) { - group=obj->g; - for( m=0 ; mg.elements; m++ ) { - if( strcmp( es.pelements[k].name,group->g.pelements[m].name)==0 && - es.pelements[k].index == group->g.pelements[m].index && - es.pelements[k].type == group->g.pelements[m].type ) { - group->e[m].e.eid.type=0; - group->e[m].info.eid.type=0; - if( group->e[m].mux ) free(group->e[m].mux); - l=1; - break; - } - } - } - } - } - /* - delete null object? - */ - l=0; - for( k=0 ; k1 ) { - if( ab_chk(mixer,&es.pelements[k]) ) { - l++; - } else es_nums[k]=1; - } - } - mixer->o_nums+=l; - if( l>0 ) { - obj=mixer->obj; - if( obj ) while( obj->next ) obj=obj->next; - k=0; - while(l>0) { - l--; - while( es_nums[k]==1 ) k++; - if( obj ) { - obj->next=(s_obj_t *)g_malloc0(sizeof(s_obj_t)); - if( obj == NULL ) { - fprintf(stderr,nomem_msg); - snd_ctl_close(p_handle); - snd_mixer_close(m_handle); - return -1; - } - obj=obj->next; - } else { - obj=(s_obj_t *)g_malloc0(sizeof(s_obj_t)); - if( obj == NULL ) { - fprintf(stderr,nomem_msg); - snd_ctl_close(p_handle); - snd_mixer_close(m_handle); - return -1; - } - mixer->obj=obj; - } - bzero(obj,sizeof(s_obj_t)); - obj->e=(s_eelements_t *)malloc(sizeof(s_eelements_t)); - if( obj->e == NULL ) { - fprintf(stderr,nomem_msg); - snd_ctl_close(p_handle); - snd_mixer_close(m_handle); - return -1; - } - ee=obj->e; - bzero(ee,sizeof(s_eelements_t)); - - err=s_element_build(m_handle,&ee->e,&es,es.pelements[k], - i,j); - obj->enable=TRUE; - obj->enabled=FALSE; - k++; - } - } - g_free(groups.pgroups); - g_free(es.pelements); - g_free(es_nums); - snd_mixer_close(m_handle); - } - snd_ctl_close(p_handle); - } - return 0; -} - -static int search_es(snd_mixer_eid_t *eid,snd_mixer_elements_t *es) { - int i; - for( i=0 ; ielements ; i++ ) { - if( strcmp( es->pelements[i].name , eid->name ) == 0 && - es->pelements[i].index == eid->index && - es->pelements[i].type == eid->type ) return i; - } - return -1; -} - -gboolean is_etype(int etype ) { - switch( etype ) { - case SND_MIXER_ETYPE_SWITCH1: - case SND_MIXER_ETYPE_SWITCH2: - case SND_MIXER_ETYPE_SWITCH3: - case SND_MIXER_ETYPE_MUX1: - case SND_MIXER_ETYPE_MUX2: - case SND_MIXER_ETYPE_ACCU3: - case SND_MIXER_ETYPE_VOLUME1: - case SND_MIXER_ETYPE_VOLUME2: - case SND_MIXER_ETYPE_3D_EFFECT1: - case SND_MIXER_ETYPE_TONE_CONTROL1: - case SND_MIXER_ETYPE_PAN_CONTROL1: - return TRUE; - break; - } - return FALSE; -} - -static gint ab_chk( s_mixer_t *mixer,snd_mixer_eid_t *eid ) { - if( !is_etype(eid->type) ) return FALSE; - return TRUE; -} - -int s_element_build(snd_mixer_t *handle,s_element_t *e, - snd_mixer_elements_t *es, snd_mixer_eid_t eid, - int c,int m) { - int err; - bzero(&e->info,sizeof(snd_mixer_element_info_t)); - bzero(&e->e,sizeof(snd_mixer_element_t)); - e->e.eid = eid; - e->info.eid = eid; - if( eid.type != SND_MIXER_ETYPE_SWITCH1 && - eid.type != SND_MIXER_ETYPE_SWITCH2 && - eid.type > 0 ) { - err=snd_mixer_element_info_build(handle,&e->info); - if( err<0 ) { - preid(eid); - fprintf(stderr,_("Mixer element info build failed: %s\n"), - snd_strerror(err)); - } - } - e->w=NULL; - e->adj=NULL; - e->card=c; - e->mdev=m; - e->mux_n=0; - e->mux=NULL; - if( !is_etype(e->e.eid.type) ) return 0; - - err=snd_mixer_element_build(handle,&e->e); - if( err<0 ) { - preid(eid); - fprintf(stderr,_("Mixer element build failed: %s\n"),snd_strerror(err)); - } - if( e->info.eid.type == SND_MIXER_ETYPE_MUX1 || - e->info.eid.type == SND_MIXER_ETYPE_MUX2 ) { - e->mux_n=mk_mux_lst(handle,es,&e->info,&e->mux); - if( e->mux_n < 0 ) { - snd_mixer_close(handle); - return -1; - } - } - return 0; -} - -static gint mk_mux_lst(snd_mixer_t *handle,snd_mixer_elements_t *es, - snd_mixer_element_info_t *info, - snd_mixer_eid_t **eids) { - int i,j,err,n=0; - snd_mixer_routes_t rt; - int *ee_lst; - snd_mixer_eid_t *eid_l; - - ee_lst=(int *)g_malloc(es->elements*sizeof(int)); - if( ee_lst == NULL ) { - fprintf(stderr,nomem_msg); - return -1; - } - for( i=0 ; ielements ; i++ ) { - bzero(&rt,sizeof(rt)); - rt.eid=es->pelements[i]; - if(( err=snd_mixer_routes(handle,&rt))<0 ) { - fprintf(stderr,_("Mixer route error: %s\n"),snd_strerror(err)); - g_free(ee_lst); - return -1; - } - if (!rt.routes_over) continue; - rt.proutes=(snd_mixer_eid_t *)g_malloc(rt.routes_over * - sizeof(snd_mixer_eid_t)); - if( rt.proutes == NULL ) { - fprintf(stderr,nomem_msg); - g_free(ee_lst); - return -1; - } - rt.routes_size=rt.routes_over; - rt.routes=rt.routes_over=0; - if( (err=snd_mixer_routes(handle,&rt)) < 0 ) { - fprintf(stderr,_("Mixer route (2) error: %s\n"),snd_strerror(err)); - g_free(ee_lst); - return -1; - } - for( j=0 ; jeid.name) == 0 && - rt.proutes[j].index == info->eid.index && - rt.proutes[j].type == info->eid.type ) { - ee_lst[n++]=i; - break; - } - } - g_free(rt.proutes); - } - if( n == 0 ) { - *eids = NULL; - return 0; - } - eid_l = *eids = (snd_mixer_eid_t *)g_malloc(n*sizeof(snd_mixer_eid_t)); - if( *eids == NULL ) { - fprintf(stderr,nomem_msg); - g_free(ee_lst); - return -1; - } - for( i=0 ; ipelements[ee_lst[i]]; - } - g_free(ee_lst); - return n; -} diff --git a/xamixer2/AUTHORS b/xamixer2/AUTHORS deleted file mode 100644 index e69de29..0000000 diff --git a/xamixer2/COPYING b/xamixer2/COPYING deleted file mode 100644 index 9392a19..0000000 --- a/xamixer2/COPYING +++ /dev/null @@ -1,282 +0,0 @@ -GNU GENERAL PUBLIC LICENSE - -Version 2, June 1991 - -Copyright (C) 1989, 1991 Free Software Foundation, Inc. -59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - -Everyone is permitted to copy and distribute verbatim copies -of this license document, but changing it is not allowed. - -Preamble - -The licenses for most software are designed to take away your freedom to -share and change it. By contrast, the GNU General Public License is -intended to guarantee your freedom to share and change free software--to -make sure the software is free for all its users. This General Public -License applies to most of the Free Software Foundation's software and to -any other program whose authors commit to using it. (Some other -Free Software Foundation software is covered by the GNU Library General -Public License instead.) You can apply it to your programs, too. - -When we speak of free software, we are referring to freedom, not price. Our -General Public Licenses are designed to make sure that you have the -freedom to distribute copies of free software (and charge for this service -if you wish), that you receive source code or can get it if you want it, -that you can change the software or use pieces of it in new free programs; -and that you know you can do these things. - -To protect your rights, we need to make restrictions that forbid anyone to -deny you these rights or to ask you to surrender the rights. These -restrictions translate to certain responsibilities for you if you distribute -copies of the software, or if you modify it. - -For example, if you distribute copies of such a program, whether gratis or -for a fee, you must give the recipients all the rights that you have. You -must make sure that they, too, receive or can get the source code. And you -must show them these terms so they know their rights. - -We protect your rights with two steps: (1) copyright the software, and (2) -offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - -Also, for each author's protection and ours, we want to make certain that -everyone understands that there is no warranty for this free software. -If the software is modified by someone else and passed on, we want its -recipients to know that what they have is not the original, so that any -problems introduced by others will not reflect on the original authors' -reputations. - -Finally, any free program is threatened constantly by software patents. We -wish to avoid the danger that redistributors of a free program will -individually obtain patent licenses, in effect making the program -proprietary. To prevent this, we have made it clear that any patent must be -licensed for everyone's free use or not licensed at all. - -The precise terms and conditions for copying, distribution and modification -follow. - -TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - -0. This License applies to any program or other work which contains a notice -placed by the copyright holder saying it may be distributed under -the terms of this General Public License. The "Program", below, refers to -any such program or work, and a "work based on the Program" means -either the Program or any derivative work under copyright law: that is to -say, a work containing the Program or a portion of it, either verbatim -or with modifications and/or translated into another language. (Hereinafter, -translation is included without limitation in the term -"modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not covered -by this License; they are outside its scope. The act of running the -Program is not restricted, and the output from the Program is covered only -if its contents constitute a work based on the Program (independent -of having been made by running the Program). Whether that is true depends on -what the Program does. - -1. You may copy and distribute verbatim copies of the Program's source code -as you receive it, in any medium, provided that you conspicuously -and appropriately publish on each copy an appropriate copyright notice and -disclaimer of warranty; keep intact all the notices that refer to this -License and to the absence of any warranty; and give any other recipients of -the Program a copy of this License along with the Program. - -You may charge a fee for the physical act of transferring a copy, and you -may at your option offer warranty protection in exchange for a fee. - -2. You may modify your copy or copies of the Program or any portion of it, -thus forming a work based on the Program, and copy and distribute -such modifications or work under the terms of Section 1 above, provided that -you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices stating -that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in whole -or in part contains or is derived from the Program or any part - thereof, to be licensed as a whole at no charge to all third parties -under the terms of this License. - - c) If the modified program normally reads commands interactively when -run, you must cause it, when started running for such interactive - use in the most ordinary way, to print or display an announcement -including an appropriate copyright notice and a notice that there is no - warranty (or else, saying that you provide a warranty) and that users -may redistribute the program under these conditions, and telling the - user how to view a copy of this License. (Exception: if the Program -itself is interactive but does not normally print such an announcement, - your work based on the Program is not required to print an -announcement.) - -These requirements apply to the modified work as a whole. If identifiable -sections of that work are not derived from the Program, and can be -reasonably considered independent and separate works in themselves, then -this License, and its terms, do not apply to those sections when you -distribute them as separate works. But when you distribute the same sections -as part of a whole which is a work based on the Program, the -distribution of the whole must be on the terms of this License, whose -permissions for other licensees extend to the entire whole, and thus to each -and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest your -rights to work written entirely by you; rather, the intent is to exercise -the -right to control the distribution of derivative or collective works based on -the Program. - -In addition, mere aggregation of another work not based on the Program with -the Program (or with a work based on the Program) on a volume -of a storage or distribution medium does not bring the other work under the -scope of this License. - -3. You may copy and distribute the Program (or a work based on it, under -Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable source -code, which must be distributed under the terms of Sections 1 - and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three years, to -give any third party, for a charge no more than your cost of physically - performing source distribution, a complete machine-readable copy of the -corresponding source code, to be distributed under the terms of - Sections 1 and 2 above on a medium customarily used for software -interchange; or, - - c) Accompany it with the information you received as to the offer to -distribute corresponding source code. (This alternative is allowed only - for noncommercial distribution and only if you received the program in -object code or executable form with such an offer, in accord with - Subsection b above.) - -The source code for a work means the preferred form of the work for making -modifications to it. For an executable work, complete source code -means all the source code for all modules it contains, plus any associated -interface definition files, plus the scripts used to control compilation and -installation of the executable. However, as a special exception, the source -code distributed need not include anything that is normally distributed -(in either source or binary form) with the major components (compiler, -kernel, and so on) of the operating system on which the executable runs, -unless that component itself accompanies the executable. - -If distribution of executable or object code is made by offering access to -copy from a designated place, then offering equivalent access to copy the -source code from the same place counts as distribution of the source code, -even though third parties are not compelled to copy the source along -with the object code. - -4. You may not copy, modify, sublicense, or distribute the Program except as -expressly provided under this License. Any attempt otherwise to -copy, modify, sublicense or distribute the Program is void, and will -automatically terminate your rights under this License. However, parties who -have received copies, or rights, from you under this License will not have -their licenses terminated so long as such parties remain in full -compliance. - -5. You are not required to accept this License, since you have not signed -it. However, nothing else grants you permission to modify or distribute -the Program or its derivative works. These actions are prohibited by law if -you do not accept this License. Therefore, by modifying or distributing -the Program (or any work based on the Program), you indicate your acceptance -of this License to do so, and all its terms and conditions for -copying, distributing or modifying the Program or works based on it. - -6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the original -licensor to copy, distribute or modify the Program subject to these terms -and conditions. You may not impose any further restrictions on the -recipients' exercise of the rights granted herein. You are not responsible -for enforcing compliance by third parties to this License. - -7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions -are imposed on you (whether by court order, agreement or otherwise) that -contradict the conditions of this License, they do not excuse you from -the conditions of this License. If you cannot distribute so as to satisfy -simultaneously your obligations under this License and any other pertinent -obligations, then as a consequence you may not distribute the Program at -all. For example, if a patent license would not permit royalty-free -redistribution of the Program by all those who receive copies directly or -indirectly through you, then the only way you could satisfy both it and -this License would be to refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under any -particular circumstance, the balance of the section is intended to apply -and the section as a whole is intended to apply in other circumstances. - -It is not the purpose of this section to induce you to infringe any patents -or other property right claims or to contest validity of any such claims; -this section has the sole purpose of protecting the integrity of the free -software distribution system, which is implemented by public license -practices. Many people have made generous contributions to the wide range of -software distributed through that system in reliance on consistent -application of that system; it is up to the author/donor to decide if he or -she is willing to distribute software through any other system and a -licensee cannot impose that choice. - -This section is intended to make thoroughly clear what is believed to be a -consequence of the rest of this License. - -8. If the distribution and/or use of the Program is restricted in certain -countries either by patents or by copyrighted interfaces, the original -copyright holder who places the Program under this License may add an -explicit geographical distribution limitation excluding those countries, so -that distribution is permitted only in or among countries not thus excluded. -In such case, this License incorporates the limitation as if written in -the body of this License. - -9. The Free Software Foundation may publish revised and/or new versions of -the General Public License from time to time. Such new versions -will be similar in spirit to the present version, but may differ in detail -to address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free -Software Foundation. - -10. If you wish to incorporate parts of the Program into other free programs -whose distribution conditions are different, write to the author to -ask for permission. For software which is copyrighted by the Free Software -Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals of -preserving the free status of all derivatives of our free software and of -promoting the sharing and reuse of software generally. - -NO WARRANTY - -11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR -THE PROGRAM, TO THE -EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING -THE COPYRIGHT HOLDERS -AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY -KIND, EITHER EXPRESSED OR -IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A -PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE -PROGRAM IS WITH YOU. -SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY -SERVICING, REPAIR OR -CORRECTION. - -12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, -OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS -PERMITTED ABOVE, BE LIABLE -TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR -CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO -LOSS OF DATA OR DATA -BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A -FAILURE OF THE PROGRAM -TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS -BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - -END OF TERMS AND CONDITIONS \ No newline at end of file diff --git a/xamixer2/ChangeLog b/xamixer2/ChangeLog deleted file mode 100644 index e69de29..0000000 diff --git a/xamixer2/INSTALL b/xamixer2/INSTALL deleted file mode 100644 index b42a17a..0000000 --- a/xamixer2/INSTALL +++ /dev/null @@ -1,182 +0,0 @@ -Basic Installation -================== - - These are generic installation instructions. - - The `configure' shell script attempts to guess correct values for -various system-dependent variables used during compilation. It uses -those values to create a `Makefile' in each directory of the package. -It may also create one or more `.h' files containing system-dependent -definitions. Finally, it creates a shell script `config.status' that -you can run in the future to recreate the current configuration, a file -`config.cache' that saves the results of its tests to speed up -reconfiguring, and a file `config.log' containing compiler output -(useful mainly for debugging `configure'). - - If you need to do unusual things to compile the package, please try -to figure out how `configure' could check whether to do them, and mail -diffs or instructions to the address given in the `README' so they can -be considered for the next release. If at some point `config.cache' -contains results you don't want to keep, you may remove or edit it. - - The file `configure.in' is used to create `configure' by a program -called `autoconf'. You only need `configure.in' if you want to change -it or regenerate `configure' using a newer version of `autoconf'. - -The simplest way to compile this package is: - - 1. `cd' to the directory containing the package's source code and type - `./configure' to configure the package for your system. If you're - using `csh' on an old version of System V, you might need to type - `sh ./configure' instead to prevent `csh' from trying to execute - `configure' itself. - - Running `configure' takes awhile. While running, it prints some - messages telling which features it is checking for. - - 2. Type `make' to compile the package. - - 3. Optionally, type `make check' to run any self-tests that come with - the package. - - 4. Type `make install' to install the programs and any data files and - documentation. - - 5. You can remove the program binaries and object files from the - source code directory by typing `make clean'. To also remove the - files that `configure' created (so you can compile the package for - a different kind of computer), type `make distclean'. There is - also a `make maintainer-clean' target, but that is intended mainly - for the package's developers. If you use it, you may have to get - all sorts of other programs in order to regenerate files that came - with the distribution. - -Compilers and Options -===================== - - Some systems require unusual options for compilation or linking that -the `configure' script does not know about. You can give `configure' -initial values for variables by setting them in the environment. Using -a Bourne-compatible shell, you can do that on the command line like -this: - CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure - -Or on systems that have the `env' program, you can do it like this: - env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure - -Compiling For Multiple Architectures -==================================== - - You can compile the package for more than one kind of computer at the -same time, by placing the object files for each architecture in their -own directory. To do this, you must use a version of `make' that -supports the `VPATH' variable, such as GNU `make'. `cd' to the -directory where you want the object files and executables to go and run -the `configure' script. `configure' automatically checks for the -source code in the directory that `configure' is in and in `..'. - - If you have to use a `make' that does not supports the `VPATH' -variable, you have to compile the package for one architecture at a time -in the source code directory. After you have installed the package for -one architecture, use `make distclean' before reconfiguring for another -architecture. - -Installation Names -================== - - By default, `make install' will install the package's files in -`/usr/local/bin', `/usr/local/man', etc. You can specify an -installation prefix other than `/usr/local' by giving `configure' the -option `--prefix=PATH'. - - You can specify separate installation prefixes for -architecture-specific files and architecture-independent files. If you -give `configure' the option `--exec-prefix=PATH', the package will use -PATH as the prefix for installing programs and libraries. -Documentation and other data files will still use the regular prefix. - - In addition, if you use an unusual directory layout you can give -options like `--bindir=PATH' to specify different values for particular -kinds of files. Run `configure --help' for a list of the directories -you can set and what kinds of files go in them. - - If the package supports it, you can cause programs to be installed -with an extra prefix or suffix on their names by giving `configure' the -option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. - -Optional Features -================= - - Some packages pay attention to `--enable-FEATURE' options to -`configure', where FEATURE indicates an optional part of the package. -They may also pay attention to `--with-PACKAGE' options, where PACKAGE -is something like `gnu-as' or `x' (for the X Window System). The -`README' should mention any `--enable-' and `--with-' options that the -package recognizes. - - For packages that use the X Window System, `configure' can usually -find the X include and library files automatically, but if it doesn't, -you can use the `configure' options `--x-includes=DIR' and -`--x-libraries=DIR' to specify their locations. - -Specifying the System Type -========================== - - There may be some features `configure' can not figure out -automatically, but needs to determine by the type of host the package -will run on. Usually `configure' can figure that out, but if it prints -a message saying it can not guess the host type, give it the -`--host=TYPE' option. TYPE can either be a short name for the system -type, such as `sun4', or a canonical name with three fields: - CPU-COMPANY-SYSTEM - -See the file `config.sub' for the possible values of each field. If -`config.sub' isn't included in this package, then this package doesn't -need to know the host type. - - If you are building compiler tools for cross-compiling, you can also -use the `--target=TYPE' option to select the type of system they will -produce code for and the `--build=TYPE' option to select the type of -system on which you are compiling the package. - -Sharing Defaults -================ - - If you want to set default values for `configure' scripts to share, -you can create a site shell script called `config.site' that gives -default values for variables like `CC', `cache_file', and `prefix'. -`configure' looks for `PREFIX/share/config.site' if it exists, then -`PREFIX/etc/config.site' if it exists. Or, you can set the -`CONFIG_SITE' environment variable to the location of the site script. -A warning: not all `configure' scripts look for a site script. - -Operation Controls -================== - - `configure' recognizes the following options to control how it -operates. - -`--cache-file=FILE' - Use and save the results of the tests in FILE instead of - `./config.cache'. Set FILE to `/dev/null' to disable caching, for - debugging `configure'. - -`--help' - Print a summary of the options to `configure', and exit. - -`--quiet' -`--silent' -`-q' - Do not print messages saying which checks are being made. To - suppress all normal output, redirect it to `/dev/null' (any error - messages will still be shown). - -`--srcdir=DIR' - Look for the package's source code in directory DIR. Usually - `configure' can determine that directory automatically. - -`--version' - Print the version of Autoconf used to generate the `configure' - script, and exit. - -`configure' also accepts some other, not widely useful, options. diff --git a/xamixer2/Makefile.am b/xamixer2/Makefile.am deleted file mode 100644 index 5130041..0000000 --- a/xamixer2/Makefile.am +++ /dev/null @@ -1,5 +0,0 @@ -bin_PROGRAMS = xamixer2 -xamixer2_SOURCES = main.h structs.h xamixer2.c xamixer2.h callbacks.c callbacks.h cinit.c cinit.h display.c display.h util.c util.h config.c config.h switches.c switches.h options.c options.h -xamixer2_LDFLAGS = $(GTK_LIBS) -sysconf_DATA = xamixer.conf -EXTRA_DIST = README COPYING INSTALL AUTHORS NEWS TODO xamixer.home xamixer.conf diff --git a/xamixer2/NEWS b/xamixer2/NEWS deleted file mode 100644 index e69de29..0000000 diff --git a/xamixer2/README b/xamixer2/README deleted file mode 100644 index e69de29..0000000 diff --git a/xamixer2/TODO b/xamixer2/TODO deleted file mode 100644 index e69de29..0000000 diff --git a/xamixer2/callbacks.c b/xamixer2/callbacks.c deleted file mode 100644 index 917a661..0000000 --- a/xamixer2/callbacks.c +++ /dev/null @@ -1,225 +0,0 @@ -/***************************************************************************** - callbacks.c - an Alsa based gtk mixer - Written by Raistlinn (lansdoct@cs.alfred.edu) - Copyright (C) 1998 by Christopher Lansdown - - This program is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License - as published by the Free Software Foundation; either version 2 - of the License, or (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -******************************************************************************/ - -/*****************************************************************************/ -/* Begin #include's */ - -#include "main.h" - -/* End #include's */ -/*****************************************************************************/ - -/*****************************************************************************/ -/* Begin Global Variables */ - -extern GtkWidget *window; -extern Card *card; /* And array of the cards */ -extern int cards; /* The number of cards in the system. */ -extern Config config; /* The system config */ - -/* End Global Variables */ -/*****************************************************************************/ - -void mixer_rebuild_cb(void *data) -{ - -/* printf("A rebuild event happened.\n"); */ -/* fflush(NULL); */ - - return; -} - -void mixer_element_cb(void *data, int cmd, snd_mixer_eid_t *eid) -{ - -/* printf("An element event happened.\n"); */ -/* fflush(NULL); */ - - return; -} - -void mixer_group_cb(void *data, int cmd, snd_mixer_gid_t *gid) -{ - -/* printf("A group event happened.\n"); */ -/* fflush(NULL); */ - - return; -} - -void mixer_change_cb(gpointer data, gint source, GdkInputCondition condition) -{ - snd_mixer_callbacks_t callbacks; - - /* Set up the callback structure */ - callbacks.private_data = data; - callbacks.rebuild = mixer_rebuild_cb; - callbacks.element = mixer_element_cb; - callbacks.group = mixer_group_cb; - bzero(callbacks.reserved, sizeof(void *) * 28); - - - /* Actually deal with the event. */ - snd_mixer_read(MIXER(data)->handle, &callbacks); - - return; -} - -void adjust_teffect1(GtkWidget *widget, CBData *data) -{ - int i, j, err; - Group *group; - - i = data->element; - j = data->index; - group = data->group; - - switch(j) { - case TYPE_SW: - if(GTK_TOGGLE_BUTTON(widget)->active) - group->element[i].data.teffect1.sw = 1; - else - group->element[i].data.teffect1.sw = 0; - break; - case TYPE_MONO_SW: - if(GTK_TOGGLE_BUTTON(widget)->active) - group->element[i].data.teffect1.mono_sw = 1; - else - group->element[i].data.teffect1.mono_sw = 0; - break; - case TYPE_WIDE: - group->element[i].data.teffect1.wide = - (int)GTK_ADJUSTMENT(widget)->value; - break; - case TYPE_VOLUME: - group->element[i].data.teffect1.volume = - (int)GTK_ADJUSTMENT(widget)->value; - break; - case TYPE_CENTER: - group->element[i].data.teffect1.center = - (int)GTK_ADJUSTMENT(widget)->value; - break; - case TYPE_SPACE: - group->element[i].data.teffect1.space = - (int)GTK_ADJUSTMENT(widget)->value; - break; - case TYPE_DEPTH: - group->element[i].data.teffect1.depth = - (int)GTK_ADJUSTMENT(widget)->value; - break; - case TYPE_DELAY: - group->element[i].data.teffect1.delay = - (int)GTK_ADJUSTMENT(widget)->value; - break; - case TYPE_FEEDBACK: - group->element[i].data.teffect1.feedback = - (int)GTK_ADJUSTMENT(widget)->value; - break; - default: - printf("Hit the default in adjust_teffect1 - this is bad.\n"); - break; - } - - /* Now let's write the new value to the card */ - if ((err = snd_mixer_element_write(data->handle, &group->element[i])) < 0) { - printf("3D Effect Mixer element write error: %s\n", snd_strerror(err)); - } - - return; -} -void adjust_switch1(GtkWidget *widget, CBData *data) -{ - int i, j, err; - - i = data->element; - j = data->index; - - if(GTK_TOGGLE_BUTTON(widget)->active) - data->group->element[i].data.switch1.psw[j / sizeof(unsigned int)] |= - (1 << (j % sizeof(unsigned int))); - else - data->group->element[i].data.switch1.psw[j / sizeof(unsigned int)] &= - ~(1 << (j % sizeof(unsigned int))); - - /* Now let's write the new value to the card */ - if ((err = snd_mixer_element_write(data->handle, &data->group->element[i])) < 0) { - printf("Mixer element write error: %s\n", snd_strerror(err)); - } - - return; -} - -void adjust_volume1(GtkWidget *widget, CBData *data) -{ - register int volume; - int i, j, err; - - i = data->element; - j = data->index; - - volume = (int)GTK_ADJUSTMENT(data->group->gtk[i].adjust[j])->value; - data->group->element[i].data.volume1.pvoices[j] = volume; - - /* Now let's write the new value to the card */ - if ((err = snd_mixer_element_write(data->handle, &data->group->element[i])) < 0) { - printf("Mixer element write error: %s\n", snd_strerror(err)); - } - - - return; -} - - -void adjust_switch2(GtkWidget *widget, CBData *data) -{ - int i, j, err; - - i = data->element; - j = data->index; - - if(GTK_TOGGLE_BUTTON(data->group->gtk[i].interface[j])->active) { - data->group->element[i].data.switch2.sw = 1; - } else { - data->group->element[i].data.switch2.sw = 0; - } - - /* Now let's write the new value to the card */ - if ((err = snd_mixer_element_write(data->handle, &data->group->element[i])) < 0) { - printf("Mixer element write error: %s\n", snd_strerror(err)); - } - - return; -} - - - - - - - - - - - - - - - - diff --git a/xamixer2/callbacks.h b/xamixer2/callbacks.h deleted file mode 100644 index 1575e80..0000000 --- a/xamixer2/callbacks.h +++ /dev/null @@ -1,28 +0,0 @@ -/*****************************************************************************/ -/* Begin #include statements */ - - - -/* End #include statements */ -/*****************************************************************************/ - - -/*****************************************************************************/ -/* Begin function prototypes */ - -void adjust_volume1(GtkWidget *widget, CBData *data); -void adjust_switch1(GtkWidget *widget, CBData *data); -void adjust_switch2(GtkWidget *widget, CBData *data); -void adjust_teffect1(GtkWidget *widget, CBData *data); -void mixer_change_cb(gpointer data, gint source, GdkInputCondition condition); - -/* End function prototypes */ -/*****************************************************************************/ - -/*****************************************************************************/ -/* Begin #define statements */ - - - -/* End #define statements */ -/*****************************************************************************/ diff --git a/xamixer2/cinit.c b/xamixer2/cinit.c deleted file mode 100644 index d8a1a63..0000000 --- a/xamixer2/cinit.c +++ /dev/null @@ -1,386 +0,0 @@ -/***************************************************************************** - cinit.c - routines to initialize the mixer devices - Written by Raistlinn (lansdoct@cs.alfred.edu) - Copyright (C) 1998 by Christopher Lansdown - - This program is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License - as published by the Free Software Foundation; either version 2 - of the License, or (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -******************************************************************************/ - - -/*****************************************************************************/ -/* Begin #include's */ - -#include "main.h" - -/* End #include's */ -/*****************************************************************************/ - -/*****************************************************************************/ -/* Begin Global Variables */ - -extern Card *card; /* And array of the cards */ -extern int cards; /* The number of cards in the system. */ -extern Config config; /* The system config */ - -/* End Global Variables */ -/*****************************************************************************/ - -/*****************************************************************************/ -/* Begin function prototypes */ - -int init_group(void *handle, Group *group); -int init_element_route(void *handle, snd_mixer_routes_t *routes, snd_mixer_eid_t *eid); -int misc_group_hack(Mixer *mixer, int index); - -/* End function prototypes */ -/*****************************************************************************/ - -int init_cards() -{ - int i,j,k; - int err; - snd_ctl_t *handle; - - cards = snd_cards(); - card = calloc(cards, sizeof(Card)); - for(i = 0; i < cards; i++) { - /* Open the hardware */ - if((err = snd_ctl_open(&handle, i)) < 0) { - printf("Unable to open card #%i!\nError: %s\n", i, snd_strerror(err)); - card[i].mixer = NULL; - card[i].number = -1; - continue; - } else { - card[i].number = i; - } - - - /* Get the hardware info - the primary use of this is to find out how many - mixer devices the card has, but it's also useful to find out the human-readable - name of the card. */ - if((err = snd_ctl_hw_info(handle, &card[i].hw_info)) < 0) { - printf("Unable to get hardware information about card #%i!\nError: %s\n", - i, snd_strerror(err)); - printf("Trying to guess the appropriate values.\n"); - card[i].hw_info.mixerdevs = 1; - } - - card[i].nmixers = card[i].hw_info.mixerdevs; - - /* Allocate out the mixer array */ - card[i].mixer = calloc(card[i].hw_info.mixerdevs, sizeof(Mixer)); - - for(j = 0; j < card[i].hw_info.mixerdevs; j++) { - /* Open the mixer to begin with. Isn't it funny how there's all this - nice generalized code that can handle nearly any situation, and it - will be necessary in only a very small percentage of the situations. - Oh well, I guess that that's what distinguishes us from windows. :-) */ - if((err = snd_mixer_open(&card[i].mixer[j].handle, i, j)) < 0) { - printf("Unable to open mixer #%i on card #%i~\nError: %s\n", - j, i, snd_strerror(err)); - card[i].mixer[j].number = -1; - } else { - card[i].mixer[j].number = j; - } - - /* Get the mixer info */ - if((err = snd_mixer_info(card[i].mixer[j].handle, &card[i].mixer[j].info)) < 0) { - printf("Unable to get the info for mixer #%i on card %i! Error: %s\n", j, i, snd_strerror(err)); - printf("There's not much more I can do on this mixer."); - printf(" Shutting it down.\n"); - if((err = snd_mixer_close(card[i].mixer[j].handle)) < 0) { - printf("Oh well. I couldn't even close the mixer. I suspect that something is seriously wrong here. Good luck.\n"); - } - card[i].mixer[j].number = -1; - continue; - } - - bzero(&card[i].mixer[j].groups, sizeof(snd_mixer_groups_t)); - - if ((err = snd_mixer_groups(card[i].mixer[j].handle, - &card[i].mixer[j].groups)) < 0) { - printf("Mixer %i/%i groups error: %s", - i, j, snd_strerror(err)); - return -1; - } - - /* Allocate the space for the group array */ - card[i].mixer[j].groups.pgroups = (snd_mixer_gid_t *) - calloc(card[i].mixer[j].groups.groups_over, - sizeof(snd_mixer_gid_t)); - - if (!card[i].mixer[j].groups.pgroups) { - printf("No enough memory"); - return -1; - } - - card[i].mixer[j].groups.groups_size = card[i].mixer[j].info.groups; - card[i].mixer[j].groups.groups_over = card[i].mixer[j].groups.groups = 0; - if ((err = snd_mixer_groups(card[i].mixer[j].handle, - &card[i].mixer[j].groups)) < 0) { - printf("Mixer %i/%i groups (2) error: %s", - i, j, snd_strerror(err)); - return -1; - } - - /* Allocate the space for the array of the groups - this is more than - just their gid's, it's got group-specific info in it */ - card[i].mixer[j].group = calloc(card[i].mixer[j].info.groups + 1, - sizeof(Group)); - - /* get the group structures filled out */ - for(k = 0; k < card[i].mixer[j].info.groups; k++) { - card[i].mixer[j].group[k].group.gid = - card[i].mixer[j].groups.pgroups[k]; - - init_group(card[i].mixer[j].handle, - &card[i].mixer[j].group[k]); - - } - misc_group_hack(&card[i].mixer[j], k); - - } - - - if((err = snd_ctl_close(handle)) < 0) { - printf("strange, there was an error closing card #%i!\nError: %s\n", - i, snd_strerror(err)); - printf("Oh well.\n"); - } - } - - - /* return a successful execution. */ - return 0; -} - -int misc_group_hack(Mixer *mixer, int index) -{ - /* This code is largely copied straight from amixer. - God I love the GPL. */ - snd_mixer_elements_t elements; - snd_mixer_eid_t *element; - snd_mixer_group_t *group; - int err, idx, gdx, idx2; - int flag; - int count=0; /* The count of elements not in any group */ - snd_mixer_eid_t **array; - - bzero(&elements, sizeof(elements)); - if ((err = snd_mixer_elements(mixer->handle, &elements)) < 0) { - printf("Mixer elements error: %s", snd_strerror(err)); - return -1; - } - elements.pelements = (snd_mixer_eid_t *)malloc(elements.elements_over * - sizeof(snd_mixer_eid_t)); - if (!elements.pelements) { - printf("Not enough memory"); - return -1; - } - elements.elements_size = elements.elements_over; - elements.elements_over = elements.elements = 0; - if ((err = snd_mixer_elements(mixer->handle, &elements)) < 0) { - printf("Mixer elements (2) error: %s", snd_strerror(err)); - return -1; - } - - /* Allocate the temporary array to hold the mixer ID structs */ - array = malloc(elements.elements * sizeof(snd_mixer_eid_t *)); - if(!array) - printf("Not enough memory.\n"); - - - for (idx = 0; idx < elements.elements; idx++) { - element = &elements.pelements[idx]; - flag = 0; /* The flag will be set if the same element name & type - is encountered */ - for(gdx = 0; gdx < mixer->info.groups; gdx++) { - group = &mixer->group[gdx].group; - for(idx2 = 0; idx2 < group->elements; idx2++) { - if(group && element) - if(group->pelements[idx2].type == element->type && - is_same(group->pelements[idx2].name, element->name)) - flag = 1; - } - } - if(!flag) { - /* We found a mixer element that's not in a group */ - array[count] = element; - count++; - if(count > elements.elements) - printf("Houston, we have a problem.\n"); - } - } - - /* Set up the group member */ - strncpy(mixer->group[index].group.gid.name, "Miscellaneous\0", 24); - mixer->group[index].group.gid.index = 0; - mixer->group[index].group.elements_size = 0; /* I hope that this doesn't matter */ - mixer->group[index].group.elements = count; - mixer->group[index].group.elements_over = 0; /* I hope tha this doesn't matter */ - - - mixer->group[index].group.pelements = (snd_mixer_eid_t *)malloc(count * - sizeof(snd_mixer_eid_t)); - mixer->group[index].routes = calloc(mixer->group[index].group.elements, - sizeof(snd_mixer_routes_t)); - mixer->group[index].element = calloc(mixer->group[index].group.elements, - sizeof(snd_mixer_element_t)); - mixer->group[index].einfo = calloc(mixer->group[index].group.elements, - sizeof(snd_mixer_element_info_t)); - mixer->group[index].gtk = calloc(mixer->group[index].group.elements, - sizeof(Gtk_Channel)); - /* Copy the snd_mixer_eid_t structures into the new group structure and init the routes */ - - for(idx = 0; idx < count; idx++) { - mixer->group[index].group.pelements[idx] = *array[idx]; - - mixer->group[index].einfo[idx].eid = mixer->group[index].group.pelements[idx]; - if(snd_mixer_element_has_info(&mixer->group[index].group.pelements[idx]) == 1) - if((err = - snd_mixer_element_info_build(mixer->handle, - &mixer->group[index].einfo[idx])) < 0) { - printf("Unable to get element information for element %s! ", - mixer->group[index].group.pelements[idx].name); - printf("Error: %s.\n", snd_strerror(err)); - } - - mixer->group[index].element[idx].eid = mixer->group[index].group.pelements[idx]; - if(snd_mixer_element_has_control(&mixer->group[index].element[idx].eid)) - if((err = snd_mixer_element_build(mixer->handle, - &mixer->group[index].element[idx])) < 0) { - printf("Unable to read element %s! ", - mixer->group[index].group.pelements[idx].name); - printf("Error: %s.\n", snd_strerror(err)); - } - - init_element_route(mixer->handle, - &mixer->group[index].routes[idx], - &mixer->group[index].group.pelements[idx]); - } - - - - - - /* Increase the number of groups to include the new group */ - mixer->info.groups++; - - if(elements.pelements) - free(elements.pelements); - if(array) - free(array); - - return 1; -} - - -int init_group(void *handle, Group *group) -{ - /* This is largely a mess copied from amixer that gets the group info in a very strange - way, I wish that I knew how it really worked. Anyhow, once we get the group into - and the info about the elements in the group, we'll set up the element array. */ - int idx, err; - - if((err = snd_mixer_group_read(handle, - &group->group)) < 0) { - printf("Unable to get info for group %s! ", group->group.gid.name); - printf("Error: %s\n", snd_strerror(err)); - printf("elements_size = %i, elements_over=%i, elements=%i\n", - group->group.elements_size, - group->group.elements_over, - group->group.elements); - return 0; - } - group->group.pelements = (snd_mixer_eid_t *)calloc(group->group.elements_over, - sizeof(snd_mixer_eid_t)); - if (!group->group.pelements) { - printf("Not enough memory..."); - return 0; - } - group->group.elements_size = group->group.elements_over; - group->group.elements = group->group.elements_over = 0; - if ((err = snd_mixer_group_read(handle, &group->group)) < 0) { - printf("Unable to get second group info for group %s. Error: %s\n", - group->group.gid.name, snd_strerror(err)); - printf("elements_size = %i, elements_over=%i, elements=%i\n", - group->group.elements_size, - group->group.elements_over, - group->group.elements); - return 0; - } - - - /* Allocate out the arrays for the elements and element info */ - group->element = calloc(group->group.elements, sizeof(snd_mixer_element_t)); - group->einfo = calloc(group->group.elements, sizeof(snd_mixer_element_info_t)); - group->routes = calloc(group->group.elements, sizeof(snd_mixer_routes_t)); - group->gtk = calloc(group->group.elements, sizeof(Gtk_Channel)); - - /* Now go through and get that info */ - for (idx = 0; idx < group->group.elements; idx++) { - group->einfo[idx].eid = group->group.pelements[idx]; - if(snd_mixer_element_has_info(&group->group.pelements[idx]) == 1) - if((err = snd_mixer_element_info_build(handle, &group->einfo[idx])) < 0) { - printf("Unable to get element information for element %s! ", - group->group.pelements[idx].name); - printf("Error: %s.\n", snd_strerror(err)); - } - - group->element[idx].eid = group->group.pelements[idx]; - if((err = snd_mixer_element_build(handle, &group->element[idx])) < 0) { - printf("Unable to read element %s! ", - group->group.pelements[idx].name); - printf("Error: %s.\n", snd_strerror(err)); - } - - init_element_route(handle, &group->routes[idx], &group->group.pelements[idx]); - - } - - - return 1; -} - - -int init_element_route(void *handle, snd_mixer_routes_t *routes, snd_mixer_eid_t *eid) -{ - int err, idx; - /* Most of this code is taken straight from amixer as well. */ - /* This just gets the routes for the mixer element and stores them. */ - - bzero(routes, sizeof(snd_mixer_routes_t)); - routes->eid = *eid; - if ((err = snd_mixer_routes(handle, routes)) < 0) { - printf("Element %s route error: %s", eid->name, snd_strerror(err)); - return -1; - } - if (!routes->routes_over) - return 0; - routes->proutes = (snd_mixer_eid_t *)malloc(routes->routes_over * - sizeof(snd_mixer_eid_t)); - if (!routes->proutes) { - printf("No enough memory..."); - return -1; - } - routes->routes_size = routes->routes_over; - routes->routes = routes->routes_over = 0; - if ((err = snd_mixer_routes(handle, routes)) < 0) { - printf("Element (2) %s route error: %s", eid->name, snd_strerror(err)); - return -1; - } - - return 1; -} - diff --git a/xamixer2/cinit.h b/xamixer2/cinit.h deleted file mode 100644 index 17f5fa9..0000000 --- a/xamixer2/cinit.h +++ /dev/null @@ -1,25 +0,0 @@ -/*****************************************************************************/ -/* Begin #include statements */ - -/* End #include statements */ -/*****************************************************************************/ - -/*****************************************************************************/ -/* Begin function prototypes */ - -int init_cards(); - -/* End function prototypes */ -/*****************************************************************************/ - - - -/*****************************************************************************/ -/* Begin #define statements */ - - -/* End #define statements */ -/*****************************************************************************/ - - - diff --git a/xamixer2/config.c b/xamixer2/config.c deleted file mode 100644 index 30b5412..0000000 --- a/xamixer2/config.c +++ /dev/null @@ -1,483 +0,0 @@ -/***************************************************************************** - config.c - parses the config file - Written by Raistlinn (lansdoct@cs.alfred.edu) - Copyright (C) 1998 by Christopher Lansdown - - This program is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License - as published by the Free Software Foundation; either version 2 - of the License, or (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -******************************************************************************/ - -/*****************************************************************************/ -/* Begin #include's */ - -#include "main.h" - -/* End #include's */ -/*****************************************************************************/ - -/*****************************************************************************/ -/* Begin #define's */ - -#define CHANNEL_SIZE 64 -#define LABEL_SIZE 1024 - -/* End #define's */ -/*****************************************************************************/ - -/*****************************************************************************/ -/* Begin Global Variables */ - -extern Card *card; /* And array of the cards */ -extern int cards; /* The number of cards in the system. */ -Config config; /* The global config */ - -/* End Global Variables */ -/*****************************************************************************/ - -int config_init() -{ - /* Initialize the values to some reasonable defaults */ - config.flags &= 0; - config.labels = NULL; - config.xpm = NULL; - config.icon = NULL; - config.mute = "M"; - config.unmute = NULL; - config.simul = "|-|"; - config.unsimul = NULL; - config.rec = "Rec"; - config.unrec = NULL; - config.scale = 100; - config.x_pos = -1; - config.y_pos = -1; - config.padding = 5; - config.cdisplay = NULL; - - return 1; -} - -int config_read(const char *file) -{ - char *home_dir, *home_env; - FILE *stream; - char line[1025], *chr; - int state = 0; /* 0 = general config; 1 = history */ - unsigned int i = 0; - int linelen = 0; - char channel[CHANNEL_SIZE]; /* The name of the channel */ - char label[LABEL_SIZE]; /* The label or xpm name */ - int linenum = 0; - - stream = fopen(file, "r"); - - /* If there is no initialized value */ - if(stream == NULL) - return TRUE; - - while(fgets(line, 1024, stream)){ - linenum++; - /* Get wrid of comments */ - if(is_comment(line)) - continue; - strip_comment(line); - - /* Convert the line to upper case so that matches aren't case - sensitive (if not in history)*/ - linelen = strlen(line); - - if(strstr(line, "Position")) { - if(sscanf(line, "Position %i %i", &config.x_pos, &config.y_pos) < 2) - config.x_pos = config.y_pos = -1; - } - else if(strstr(line, "ShowCardName")) - config.flags |= CONFIG_SHOW_CARD_NAME; - else if(strstr(line, "ShowMixerNumber")) - config.flags |= CONFIG_SHOW_MIXER_NUMBER; - else if(strstr(line, "ShowMixerName")) - config.flags |= CONFIG_SHOW_MIXER_NAME; - else if(strstr(line, "IconXpm")) - if(sscanf(line, "IconXpm %s", label) < 1) - printf("Bad IconXpm entry at line %i.\n", linenum); - else { - config.icon = calloc(strlen(label) + 1, sizeof(char)); - strcpy(config.icon, label); - config.flags |= CONFIG_ICON_XPM; - } - else if(strstr(line, "IgnoreXpms")) - config.flags &= ~CONFIG_USE_XPMS; - else if(strstr(line, "UseXpms")) - config.flags |= CONFIG_USE_XPMS; - else if(strstr(line, "unMuteXpmLeft")) - if(sscanf(line, "unMuteXpmLeft %s", label) < 1) - printf("Bad unMuteXpmLeft entry at line %i.\n", linenum); - else { - config.unmute_l = calloc(strlen(label) + 1, sizeof(char)); - strcpy(config.unmute_l, label); - config.flags |= CONFIG_UNMUTE_XPM_L; - } - else if(strstr(line, "unMuteXpm")) - if(sscanf(line, "unMuteXpm %s", label) < 1) - printf("Bad unMuteXpm entry at line %i.\n", linenum); - else { - config.unmute = calloc(strlen(label) + 1, sizeof(char)); - strcpy(config.unmute, label); - config.flags |= CONFIG_UNMUTE_XPM; - } - else if(strstr(line, "unRecXpm")) - if(sscanf(line, "unRecXpm %s", label) < 1) - printf("Bad unRecXpm entry at line %i.\n", linenum); - else { - config.unrec = calloc(strlen(label) + 1, sizeof(char)); - strcpy(config.unrec, label); - config.flags |= CONFIG_UNREC_XPM; - } - else if(strstr(line, "unSimulXpm")) - if(sscanf(line, "unSimulXpm %s", label) < 1) - printf("Bad unSimulXpm entry at line %i.\n", linenum); - else { - config.unsimul = calloc(strlen(label) + 1, sizeof(char)); - strcpy(config.unsimul, label); - config.flags |= CONFIG_UNSIMUL_XPM; - } - else if(strstr(line, "MuteLabel")) - if(sscanf(line, "MuteLabel %s", label) < 1) - printf("Bad MuteLabel entry at line %i.\n", linenum); - else { - config.mute = calloc(strlen(label) + 1, sizeof(char)); - strcpy(config.mute, label); - config.flags &= ~CONFIG_MUTE_XPM; - } - else if(strstr(line, "SimulLabel")) - if(sscanf(line, "SimulLabel %s", label) < 1) - printf("Bad SimulLabel entry at line %i.\n", linenum); - else { - config.simul = calloc(strlen(label) + 1, sizeof(char)); - strcpy(config.simul, label); - config.flags &= ~CONFIG_SIMUL_XPM; - } - else if(strstr(line, "RecLabel")) - if(sscanf(line, "RecLabel %s", label) < 1) - printf("Bad RecLabel entry at line %i.\n", linenum); - else { - config.rec = calloc(strlen(label) + 1, sizeof(char)); - strcpy(config.rec, label); - config.flags &= ~CONFIG_REC_XPM; - } - else if(strstr(line, "MuteXpmLeft")) - if(sscanf(line, "MuteXpmLeft %s", label) < 1) - printf("Bad MuteXpmLeft entry at line %i.\n", linenum); - else { - config.mute_l = calloc(strlen(label) + 1, sizeof(char)); - strcpy(config.mute_l, label); - config.flags |= CONFIG_MUTE_XPM_L; - } - else if(strstr(line, "MuteXpm")) - if(sscanf(line, "MuteXpm %s", label) < 1) - printf("Bad MuteXpm entry at line %i.\n", linenum); - else { - config.mute = calloc(strlen(label) + 1, sizeof(char)); - strcpy(config.mute, label); - config.flags |= CONFIG_MUTE_XPM; - } - else if(strstr(line, "RecXpm")) - if(sscanf(line, "RecXpm %s", label) < 1) - printf("Bad RecXpm entry at line %i.\n", linenum); - else { - config.rec = calloc(strlen(label) + 1, sizeof(char)); - strcpy(config.rec, label); - config.flags |= CONFIG_REC_XPM; - } - else if(strstr(line, "SimulXpm")) - if(sscanf(line, "SimulXpm %s", label) < 1) - printf("Bad SimulXpm entry at line %i.\n", linenum); - else { - config.simul = calloc(strlen(label) + 1, sizeof(char)); - strcpy(config.simul, label); - config.flags |= CONFIG_SIMUL_XPM; - } - else if(strstr(line, "BackgroundXpm")) - if(sscanf(line, "BackgroundXpm %s", label) < 1) - printf("Bad BackgroundXpm entry at line %i.\n", linenum); - else { - config.background = calloc(strlen(label) + 1, sizeof(char)); - strcpy(config.background, label); - config.flags |= CONFIG_BACKGROUND_XPM; - } - else if(strstr(line, "Label")){ - if(get_label(line, "Label", channel, CHANNEL_SIZE, - label, LABEL_SIZE, '[', ']')){ - config.labels = channel_label_append(config.labels, channel, label); - } - else - printf("Bad Label entry found on line %i.\n", linenum); - } - else if(strstr(line, "Xpm")){ - if(get_label(line, "Xpm", channel, CHANNEL_SIZE, - label, LABEL_SIZE, '[', ']')){ - config.xpm = channel_label_append(config.xpm, channel, label); - } - else - printf("Bad Xpm entry found on line %i.\n", linenum); - } - else if(strstr(line, "ScaleSize")) - if(sscanf(line, "ScaleSize %i", &i) == 1) - config.scale = i; - else - printf("Bad ScaleSize entry at line %i.\n", linenum); - if(strstr(line, "ChannelPadding")) - if(sscanf(line, "ChannelPadding %i", &i) == 1) - config.padding = i; - else - printf("Bad ChannelPadding entry at line %i.\n", linenum); - - - } /* End of config loop */ - - /* Close the file */ - fclose(stream); - - return TRUE; -} - - -int setup_pixmaps(GtkWidget *xpmparent) -{ - GtkStyle *style; - int fd; - - if(!(config.flags & CONFIG_USE_XPMS)) { - config.mute = "M"; - config.simul = "|-|"; - config.rec = "Rec"; - return; - } - - - - if(config.flags & CONFIG_ICON_XPM){ - fd = open(config.icon, O_RDONLY); - if(fd != -1) { - close(fd); - style = gtk_widget_get_style(xpmparent); - config.icon_xpm = - gdk_pixmap_create_from_xpm(xpmparent->window, - &config.icon_mask, - &style->bg[GTK_STATE_NORMAL], - config.icon); - } - else { - printf("Unable to open pixmap %s.\n", config.icon); - config.flags &= ~CONFIG_ICON_XPM; - config.icon_xpm = NULL; - free(config.icon); - config.icon = NULL; - } - } - - - if(config.flags & CONFIG_MUTE_XPM_L){ - fd=open(config.mute_l, O_RDONLY); - if(fd != -1) { - close(fd); - style = gtk_widget_get_style(xpmparent); - config.mute_xpm_l = - gdk_pixmap_create_from_xpm(xpmparent->window, - &config.mute_mask_l, - &style->bg[GTK_STATE_NORMAL], - config.mute_l); - } - else { - printf("Unable to open pixmap %s.\n", config.mute_l); - config.flags &= ~CONFIG_MUTE_XPM_L; - config.mute_xpm_l = NULL; - free(config.mute_l); - config.mute_l = NULL; - } - } - - - if(config.flags & CONFIG_MUTE_XPM){ - fd=open(config.mute, O_RDONLY); - if(fd != -1) { - close(fd); - style = gtk_widget_get_style(xpmparent); - config.mute_xpm = - gdk_pixmap_create_from_xpm(xpmparent->window, - &config.mute_mask, - &style->bg[GTK_STATE_NORMAL], - config.mute); - if(!(config.flags & CONFIG_MUTE_XPM_L)) { - config.mute_xpm_l = config.mute_xpm; - config.mute_mask_l = config.mute_mask; - config.flags |= CONFIG_MUTE_XPM_L; - } - } - else { - printf("Unable to open pixmap %s.\n", config.mute); - config.flags &= ~CONFIG_MUTE_XPM; - config.mute_xpm = NULL; - free(config.mute); - config.mute = "M"; - } - } - - - - if(config.flags & CONFIG_UNMUTE_XPM_L) { - fd=open(config.unmute_l, O_RDONLY); - if(fd != -1) { - close(fd); - style = gtk_widget_get_style(xpmparent); - config.unmute_xpm_l = - gdk_pixmap_create_from_xpm(xpmparent->window, - &config.unmute_mask_l, - &style->bg[GTK_STATE_NORMAL], - config.unmute_l); - } - else { - printf("Unable to open pixmap %s.\n", config.unmute_l); - config.flags &= ~CONFIG_UNMUTE_XPM_L; - free(config.unmute_l); - config.unmute_l=NULL; - } - } - - - - if(config.flags & CONFIG_UNMUTE_XPM) { - fd=open(config.unmute, O_RDONLY); - if(fd != -1) { - close(fd); - style = gtk_widget_get_style(xpmparent); - config.unmute_xpm = - gdk_pixmap_create_from_xpm(xpmparent->window, - &config.unmute_mask, - &style->bg[GTK_STATE_NORMAL], - config.unmute); - if(!(config.flags & CONFIG_UNMUTE_XPM_L)) { - printf("Invoked!\n"); - config.unmute_xpm_l = config.unmute_xpm; - config.unmute_mask_l = config.unmute_mask; - config.flags |= CONFIG_UNMUTE_XPM_L; - } - } - else { - printf("Unable to open pixmap %s.\n", config.unmute); - config.flags &= ~CONFIG_UNMUTE_XPM; - free(config.unmute); - config.unmute=NULL; - } - } - - - - if(config.flags & CONFIG_REC_XPM) { - fd=open(config.rec, O_RDONLY); - if(fd != -1) { - close(fd); - style = gtk_widget_get_style(xpmparent); - config.rec_xpm = - gdk_pixmap_create_from_xpm(xpmparent->window, - &config.rec_mask, - &style->bg[GTK_STATE_NORMAL], - config.rec); - } - else { - printf("Unable to open pixmap %s.\n", config.rec); - config.flags &= ~CONFIG_REC_XPM; - free(config.rec); - config.rec = "Rec"; - } - } - - if(config.flags & CONFIG_UNREC_XPM) { - fd=open(config.unrec, O_RDONLY); - if(fd != -1) { - close(fd); - style = gtk_widget_get_style(xpmparent); - config.unrec_xpm = - gdk_pixmap_create_from_xpm(xpmparent->window, - &config.unrec_mask, - &style->bg[GTK_STATE_NORMAL], - config.unrec); - } - else { - printf("Unable to open pixmap %s.\n", config.unrec); - config.flags &= ~CONFIG_UNREC_XPM; - free(config.unrec); - config.unrec=NULL; - } - } - - if(config.flags & CONFIG_SIMUL_XPM) { - fd = open(config.simul, O_RDONLY); - if(fd != -1) { - close(fd); - style = gtk_widget_get_style(xpmparent); - config.simul_xpm = - gdk_pixmap_create_from_xpm(xpmparent->window, - &config.simul_mask, - &style->bg[GTK_STATE_NORMAL], - config.simul); - } - else { - printf("Unable to open pixmap %s.\n", config.simul); - config.flags &= ~CONFIG_SIMUL_XPM; - free(config.simul); - config.simul="|-|"; - } - } - - if(config.flags & CONFIG_UNSIMUL_XPM) { - fd = open(config.unsimul, O_RDONLY); - if(fd != -1) { - close(fd); - style = gtk_widget_get_style(xpmparent); - config.unsimul_xpm = - gdk_pixmap_create_from_xpm(xpmparent->window, - &config.unsimul_mask, - &style->bg[GTK_STATE_NORMAL], - config.unsimul); - } - else { - printf("Unable to open pixmap %s.\n", config.unsimul); - config.flags &= ~CONFIG_UNSIMUL_XPM; - free(config.unsimul); - config.unsimul=NULL; - } - } - - if(config.flags & CONFIG_BACKGROUND_XPM) { - fd = open(config.background, O_RDONLY); - if(fd != -1) { - close(fd); - style = gtk_widget_get_style(xpmparent); - config.background_xpm = - gdk_pixmap_create_from_xpm(xpmparent->window, - &config.background_mask, - &style->bg[GTK_STATE_NORMAL], - config.background); - } - else { - printf("Unable to open pixmap %s.\n", config.background); - config.flags &= ~CONFIG_BACKGROUND_XPM; - free(config.background); - config.background=NULL; - } - } - - return TRUE; -} - - diff --git a/xamixer2/config.h b/xamixer2/config.h deleted file mode 100644 index 5ded34f..0000000 --- a/xamixer2/config.h +++ /dev/null @@ -1,24 +0,0 @@ -/*****************************************************************************/ -/* Begin #include statements */ - -/* End #include statements */ -/*****************************************************************************/ - - -/*****************************************************************************/ -/* Begin function prototypes */ - -int config_init(); -int config_read(const char *file); -int setup_pixmaps(GtkWidget *xpmparent); - -/* End function prototypes */ -/*****************************************************************************/ - -/*****************************************************************************/ -/* Begin #define statements */ - -#define HOME_FILE ".xamixer" - -/* End #define statements */ -/*****************************************************************************/ diff --git a/xamixer2/configure.in b/xamixer2/configure.in deleted file mode 100644 index ecc7766..0000000 --- a/xamixer2/configure.in +++ /dev/null @@ -1,11 +0,0 @@ -AC_INIT(xamixer2.c) -AM_INIT_AUTOMAKE(xamixer2,0.1.3) -AC_PROG_CC -AC_PROG_INSTALL -AC_HEADER_STDC -AM_PATH_GTK(1.0.1) -AM_PATH_ALSA(0.1.3) -CFLAGS="$CFLAGS $GTK_CFLAGS $ALSA_FLAGS" -LDFLAGS="$LDFLAGS $GTK_LIBS $ALSA_LIBS" - -AC_OUTPUT(Makefile) diff --git a/xamixer2/display.c b/xamixer2/display.c deleted file mode 100644 index afbee9e..0000000 --- a/xamixer2/display.c +++ /dev/null @@ -1,592 +0,0 @@ -/***************************************************************************** - xamixer.c - an Alsa based gtk mixer - Written by Raistlinn (lansdoct@cs.alfred.edu) - Copyright (C) 1998 by Christopher Lansdown - - This program is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License - as published by the Free Software Foundation; either version 2 - of the License, or (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -******************************************************************************/ - -/*****************************************************************************/ -/* Begin #include's */ - -#include "main.h" - -/* End #include's */ -/*****************************************************************************/ - -/*****************************************************************************/ -/* Begin Global Variables */ - -extern GtkWidget *window; -extern Card *card; /* And array of the cards */ -extern int cards; /* The number of cards in the system. */ -extern Config config; /* The system config */ - -/* End Global Variables */ -/*****************************************************************************/ - -/*****************************************************************************/ -/* Begin function prototypes */ - -GtkWidget *group_elements(int card, int mixer, Group *group); -GtkWidget *display_volume1(Group *group, int element, void *handle, char *route); -GtkWidget *display_switch2(Group *group, int element, void *handle, char *route); -GtkWidget *display_switch1(Group *group, int element, void *handle, char *route); -GtkWidget *display_3deffect1(Group *group, int element, void *handle, char *route); - -/* End function protoypes */ -/*****************************************************************************/ - -GtkWidget *create_mixer_page(int card_num, int mixer_num) -{ - GtkWidget *vbox; - GtkWidget *hbox; - GtkWidget *frame; - int i=card_num, j=mixer_num, k=0, l, m; - int w=1, col; - - /* Compute the number of culumns to use */ - // w = (int)sqrt((double)card[i].mixer[j].info.elements); - w = (int)(1.5 * - (float)card[i].mixer[j].info.elements / - (float)card[i].mixer[j].info.groups); - if (w == 0) - col = 0; - else - /* Compute the number of groups in a column */ - col = (card[i].mixer[j].info.groups + w - 1)/ w; - - /* Create the main bounding box */ - hbox = gtk_hbox_new(FALSE, 0); - gtk_widget_show(hbox); - - - /* Make a vertical box for each column, then put that column's worth - of mixer groups into the column */ - for(l = 0; l < w; l++) { - /* Make the vertical box to pack it in */ - vbox = gtk_vbox_new(FALSE, 0); - gtk_widget_show(vbox); - gtk_box_pack_start(GTK_BOX(hbox), vbox, FALSE, FALSE, 0); - - for(m = 0; m < col && k < card[i].mixer[j].info.groups; m++) { - /* Make the group frame */ - frame = gtk_frame_new(card[i].mixer[j].group[k].group.gid.name); - gtk_widget_show(frame); - gtk_box_pack_start(GTK_BOX(vbox), frame, FALSE, FALSE, 0); - - gtk_container_add(GTK_CONTAINER(frame), - group_elements(card_num, - mixer_num, - &card[i].mixer[j].group[k])); - - - /* Now increment the count of which mixer group we're on */ - k++; - } - } - - return hbox; -} - - -GtkWidget *group_elements(int card_num, int mixer, Group *group) -{ - GtkWidget *vbox; - GtkWidget *hbox; - GtkWidget *label; - GtkWidget *box; - GtkWidget *widget; - char thor[128]; - int i, j; - snd_mixer_element_t test; - - vbox = gtk_vbox_new(FALSE, 0); - gtk_widget_show(vbox); - - for(i = 0; i < group->group.elements; i++) { - /* Each element gets its own horizontal box */ - hbox=gtk_hbox_new(FALSE, 0); - gtk_widget_show(hbox); - gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); - - snprintf(thor, 128, "%s routed to the %s", - group->group.pelements[i].name, - group->routes[i].proutes[0].name); - -/* label = gtk_label_new(thor); */ -/* gtk_widget_show(label); */ -/* gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); */ - - - switch(group->group.pelements[i].type){ - - case SND_MIXER_ETYPE_VOLUME1: - gtk_box_pack_end(GTK_BOX(hbox), - display_volume1(group, i, - card[card_num].mixer[mixer].handle, - thor), - FALSE, FALSE, 0); - break; - - case SND_MIXER_ETYPE_SWITCH1: - gtk_box_pack_end(GTK_BOX(hbox), - display_switch1(group, i, - card[card_num].mixer[mixer].handle, - thor), - FALSE, FALSE, 0); - break; - - case SND_MIXER_ETYPE_SWITCH2: - gtk_box_pack_end(GTK_BOX(hbox), - display_switch2(group, i, - card[card_num].mixer[mixer].handle, - thor), - FALSE, FALSE, 0); - break; - - case SND_MIXER_ETYPE_3D_EFFECT1: - gtk_box_pack_end(GTK_BOX(hbox), - display_3deffect1(group, i, - card[card_num].mixer[mixer].handle, - thor), - FALSE, FALSE, 0); - break; - } - } - - - - return vbox; -} - -GtkWidget *display_3deffect1(Group *group, int element, void *handle, char *route) -{ - GtkWidget *vbox; - GtkWidget *box; - GtkTooltips *tooltips; - GtkWidget *widget; - GtkWidget *label; - int i=element; - GtkObject *adj; - - vbox = gtk_vbox_new(FALSE, 0); - gtk_widget_show(vbox); - - group->gtk[i].interface = calloc(10, sizeof(GtkWidget *)); - group->gtk[i].adjust = calloc(10, sizeof(GtkWidget *)); - - /* The on/off switch */ - if(group->einfo[i].data.teffect1.effect & SND_MIXER_EFF1_SW) { - box = gtk_hbox_new(FALSE, 0); - gtk_widget_show(box); - gtk_box_pack_start(GTK_BOX(vbox), box, FALSE, FALSE, 0); - - label = gtk_label_new("3D Effect"); - gtk_widget_show(label); - gtk_box_pack_start(GTK_BOX(box), label, FALSE, FALSE, 0); - - widget = gtk_check_button_new(); - if(group->element[i].data.teffect1.sw) - gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(widget), TRUE); - - gtk_widget_show(widget); - gtk_box_pack_end(GTK_BOX(box), widget, FALSE, FALSE, 0); - /* Connect it to the callback */ - gtk_signal_connect(GTK_OBJECT(widget), "toggled", - GTK_SIGNAL_FUNC(adjust_teffect1), - create_cb_data(group, handle, i, TYPE_SW)); - } - - - - /* The mono switch */ - if(group->einfo[i].data.teffect1.effect & SND_MIXER_EFF1_MONO_SW) { - box = gtk_hbox_new(FALSE, 0); - gtk_widget_show(box); - gtk_box_pack_start(GTK_BOX(vbox), box, FALSE, FALSE, 0); - - label = gtk_label_new("3D Effect Mono"); - gtk_widget_show(label); - gtk_box_pack_start(GTK_BOX(box), label, FALSE, FALSE, 0); - - widget = gtk_check_button_new(); - if(group->element[i].data.teffect1.sw) - gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(widget), TRUE); - gtk_widget_show(widget); - gtk_box_pack_end(GTK_BOX(box), widget, FALSE, FALSE, 0); - /* Connect it to the callback */ - gtk_signal_connect(GTK_OBJECT(widget), "toggled", - GTK_SIGNAL_FUNC(adjust_teffect1), - create_cb_data(group, handle, i, TYPE_MONO_SW)); - } - - - /* the wide control */ - if(group->einfo[i].data.teffect1.effect & SND_MIXER_EFF1_WIDE) { - box = gtk_hbox_new(FALSE, 0); - gtk_widget_show(box); - gtk_box_pack_start(GTK_BOX(vbox), box, FALSE, FALSE, 0); - - label = gtk_label_new("3D Effect Width"); - gtk_widget_show(label); - gtk_box_pack_start(GTK_BOX(box), label, FALSE, FALSE, 0); - - - adj = gtk_adjustment_new(group->element[i].data.teffect1.wide, - group->einfo[i].data.teffect1.min_wide, - group->einfo[i].data.teffect1.max_wide, - 1.0, - 3.0, - 0.0); - widget = gtk_hscale_new(GTK_ADJUSTMENT(adj)); - gtk_scale_set_value_pos(GTK_SCALE(widget), - GTK_POS_RIGHT); - gtk_widget_set_usize(widget, 100, -1); - gtk_widget_show(widget); - gtk_box_pack_end(GTK_BOX(box), widget, FALSE, FALSE, 0); - - /* connect the signal */ - gtk_signal_connect(GTK_OBJECT(adj), - "value_changed", - GTK_SIGNAL_FUNC (adjust_teffect1), - create_cb_data(group, handle, i, TYPE_WIDE)); - } - - /* the volume widget */ - if(group->einfo[i].data.teffect1.effect & SND_MIXER_EFF1_VOLUME) { - box = gtk_hbox_new(FALSE, 0); - gtk_widget_show(box); - gtk_box_pack_start(GTK_BOX(vbox), box, FALSE, FALSE, 0); - - label = gtk_label_new("3D Effect Volume"); - gtk_widget_show(label); - gtk_box_pack_start(GTK_BOX(box), label, FALSE, FALSE, 0); - - - adj = gtk_adjustment_new(group->element[i].data.teffect1.volume, - group->einfo[i].data.teffect1.min_volume, - group->einfo[i].data.teffect1.max_volume, - 1.0, - 3.0, - 0.0); - widget = gtk_hscale_new(GTK_ADJUSTMENT(adj)); - gtk_scale_set_value_pos(GTK_SCALE(widget), - GTK_POS_RIGHT); - gtk_widget_set_usize(widget, 100, -1); - gtk_widget_show(widget); - gtk_box_pack_end(GTK_BOX(box), widget, FALSE, FALSE, 0); - /* connect the signal */ - gtk_signal_connect(GTK_OBJECT(adj), - "value_changed", - GTK_SIGNAL_FUNC (adjust_teffect1), - create_cb_data(group, handle, i, TYPE_VOLUME)); - } - - - /* The center widget */ - if(group->einfo[i].data.teffect1.effect & SND_MIXER_EFF1_CENTER) { - box = gtk_hbox_new(FALSE, 0); - gtk_widget_show(box); - gtk_box_pack_start(GTK_BOX(vbox), box, FALSE, FALSE, 0); - - label = gtk_label_new("3D Effect Center"); - gtk_widget_show(label); - gtk_box_pack_start(GTK_BOX(box), label, FALSE, FALSE, 0); - - - adj = gtk_adjustment_new(group->element[i].data.teffect1.center, - group->einfo[i].data.teffect1.min_center, - group->einfo[i].data.teffect1.max_center, - 1.0, - 3.0, - 0.0); - widget = gtk_hscale_new(GTK_ADJUSTMENT(adj)); - gtk_scale_set_value_pos(GTK_SCALE(widget), - GTK_POS_RIGHT); - gtk_widget_set_usize(widget, 100, -1); - gtk_widget_show(widget); - gtk_box_pack_end(GTK_BOX(box), widget, FALSE, FALSE, 0); - gtk_signal_connect(GTK_OBJECT(adj), - "value_changed", - GTK_SIGNAL_FUNC (adjust_teffect1), - create_cb_data(group, handle, i, TYPE_CENTER)); - } - - - /* The Space widget */ - if(group->einfo[i].data.teffect1.effect & SND_MIXER_EFF1_SPACE) { - box = gtk_hbox_new(FALSE, 0); - gtk_widget_show(box); - gtk_box_pack_start(GTK_BOX(vbox), box, FALSE, FALSE, 0); - - label = gtk_label_new("3D Effect Space"); - gtk_widget_show(label); - gtk_box_pack_start(GTK_BOX(box), label, FALSE, FALSE, 0); - - - adj = gtk_adjustment_new(group->element[i].data.teffect1.space, - group->einfo[i].data.teffect1.min_space, - group->einfo[i].data.teffect1.max_space, - 1.0, - 3.0, - 0.0); - widget = gtk_hscale_new(GTK_ADJUSTMENT(adj)); - gtk_scale_set_value_pos(GTK_SCALE(widget), - GTK_POS_RIGHT); - gtk_widget_set_usize(widget, 100, -1); - gtk_widget_show(widget); - gtk_box_pack_end(GTK_BOX(box), widget, FALSE, FALSE, 0); - gtk_signal_connect(GTK_OBJECT(adj), - "value_changed", - GTK_SIGNAL_FUNC (adjust_teffect1), - create_cb_data(group, handle, i, TYPE_SPACE)); - } - - /* The depth widget */ - if(group->einfo[i].data.teffect1.effect & SND_MIXER_EFF1_DEPTH) { - box = gtk_hbox_new(FALSE, 0); - gtk_widget_show(box); - gtk_box_pack_start(GTK_BOX(vbox), box, FALSE, FALSE, 0); - - label = gtk_label_new("3D Effect Depth"); - gtk_widget_show(label); - gtk_box_pack_start(GTK_BOX(box), label, FALSE, FALSE, 0); - - - adj = gtk_adjustment_new(group->element[i].data.teffect1.depth, - group->einfo[i].data.teffect1.min_depth, - group->einfo[i].data.teffect1.max_depth, - 1.0, - 3.0, - 0.0); - widget = gtk_hscale_new(GTK_ADJUSTMENT(adj)); - gtk_scale_set_value_pos(GTK_SCALE(widget), - GTK_POS_RIGHT); - gtk_widget_set_usize(widget, 100, -1); - gtk_widget_show(widget); - gtk_box_pack_end(GTK_BOX(box), widget, FALSE, FALSE, 0); - gtk_signal_connect(GTK_OBJECT(adj), - "value_changed", - GTK_SIGNAL_FUNC (adjust_teffect1), - create_cb_data(group, handle, i, TYPE_DEPTH)); - } - - /* The delay widget */ - if(group->einfo[i].data.teffect1.effect & SND_MIXER_EFF1_DELAY) { - box = gtk_hbox_new(FALSE, 0); - gtk_widget_show(box); - gtk_box_pack_start(GTK_BOX(vbox), box, FALSE, FALSE, 0); - - label = gtk_label_new("3D Effect Delay"); - gtk_widget_show(label); - gtk_box_pack_start(GTK_BOX(box), label, FALSE, FALSE, 0); - - - adj = gtk_adjustment_new(group->element[i].data.teffect1.delay, - group->einfo[i].data.teffect1.min_delay, - group->einfo[i].data.teffect1.max_delay, - 1.0, - 3.0, - 0.0); - widget = gtk_hscale_new(GTK_ADJUSTMENT(adj)); - gtk_scale_set_value_pos(GTK_SCALE(widget), - GTK_POS_RIGHT); - gtk_widget_set_usize(widget, 100, -1); - gtk_widget_show(widget); - gtk_box_pack_end(GTK_BOX(box), widget, FALSE, FALSE, 0); - gtk_signal_connect(GTK_OBJECT(adj), - "value_changed", - GTK_SIGNAL_FUNC (adjust_teffect1), - create_cb_data(group, handle, i, TYPE_DELAY)); - } - - - /* The feedback widget */ - if(group->einfo[i].data.teffect1.effect & SND_MIXER_EFF1_FEEDBACK) { - box = gtk_hbox_new(FALSE, 0); - gtk_widget_show(box); - gtk_box_pack_start(GTK_BOX(vbox), box, FALSE, FALSE, 0); - - label = gtk_label_new("3D Effect Feedback"); - gtk_widget_show(label); - gtk_box_pack_start(GTK_BOX(box), label, FALSE, FALSE, 0); - - - adj = gtk_adjustment_new(group->element[i].data.teffect1.feedback, - group->einfo[i].data.teffect1.min_feedback, - group->einfo[i].data.teffect1.max_feedback, - 1.0, - 3.0, - 0.0); - widget = gtk_hscale_new(GTK_ADJUSTMENT(adj)); - gtk_scale_set_value_pos(GTK_SCALE(widget), - GTK_POS_RIGHT); - gtk_widget_set_usize(widget, 100, -1); - gtk_widget_show(widget); - gtk_box_pack_end(GTK_BOX(box), widget, FALSE, FALSE, 0); - gtk_signal_connect(GTK_OBJECT(adj), - "value_changed", - GTK_SIGNAL_FUNC (adjust_teffect1), - create_cb_data(group, handle, i, TYPE_FEEDBACK)); - } - - - - return vbox; -} - -GtkWidget *display_switch1(Group *group, int element, void *handle, char *route) -{ - GtkWidget *box; - GtkTooltips *tooltips; - GtkWidget *button; - int i, j; - - i = element; - - box = gtk_hbox_new(FALSE, 0); - gtk_widget_show(box); - - /* Allocate the widget array */ - group->gtk[i].interface = calloc(group->element[i].data.switch1.sw, sizeof(GtkWidget *)); - - for(j = 0; j < group->element[i].data.switch1.sw; j++) { - button = gtk_check_button_new(); - /* looks painful, doesn't it? It's checking the state of the appropriate bit */ - if(group->element[i].data.switch1.psw[j / sizeof(unsigned int)] & - (1 << (j % sizeof(unsigned int)))) - gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON (button), TRUE); - gtk_widget_show(button); - - /* Set up the tooltips */ - tooltips = gtk_tooltips_new(); - gtk_tooltips_set_tip (tooltips, button, route, NULL); - - - gtk_box_pack_start(GTK_BOX (box), button, FALSE, FALSE, 0); - - /* Connect it to the callback */ - gtk_signal_connect(GTK_OBJECT(button), "toggled", - GTK_SIGNAL_FUNC(adjust_switch1), - create_cb_data(group, handle, i, j)); - - /* Store the widget */ - group->gtk[i].interface[j] = button; - } - - - return box; -} - - -GtkWidget *display_switch2(Group *group, int element, void *handle, char *route) -{ - GtkWidget *button; - GtkTooltips *tooltips; - int i, j=0; - - i = element; - - if(!group) { - printf("Group isn't initialized!\n"); - return NULL; - } - - button = gtk_check_button_new(); - - if(group->element) - if(group->element[i].data.switch2.sw) { - gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(button), TRUE); - } - - gtk_widget_show(button); - - /* Set up the tooltip */ - tooltips = gtk_tooltips_new(); - gtk_tooltips_set_tip (tooltips, button, route, NULL); - - if(group->gtk) { - group->gtk[i].interface = calloc(1, sizeof(GtkWidget *)); - group->gtk[i].interface[j] = button; - } else { - printf("Something wasn't initialized properly.\n"); - } - - /* Connect it to the callback */ - gtk_signal_connect(GTK_OBJECT(group->gtk[i].interface[j]), - "toggled", - GTK_SIGNAL_FUNC (adjust_switch2), - create_cb_data(group, handle, element, j)); - - return button; -} - -GtkWidget *display_volume1(Group *group, int element, void *handle, char *route) -{ - GtkWidget *box; - GtkTooltips *tooltips; - int i,j; - - i = element; - - box = gtk_vbox_new(FALSE, 0); - gtk_widget_show(box); - - group->gtk[i].adjust = calloc(group->element[i].data.volume1.voices, - sizeof(GtkObject *)); - group->gtk[i].interface = calloc(group->element[i].data.volume1.voices, - sizeof(GtkWidget *)); - - for(j=0; j < group->element[i].data.volume1.voices; j++) { - group->gtk[i].adjust[j] = - gtk_adjustment_new(group->element[i].data.volume1.pvoices[j], - group->einfo[i].data.volume1.prange[0].min, - group->einfo[i].data.volume1.prange[0].max, - 1.0, - 3.0, - 0.0); - - group->gtk[i].interface[j] = - gtk_hscale_new(GTK_ADJUSTMENT(group->gtk[i].adjust[j])); - - gtk_signal_connect(GTK_OBJECT(group->gtk[i].adjust[j]), - "value_changed", - GTK_SIGNAL_FUNC (adjust_volume1), - create_cb_data(group, handle, element, j)); - -/* gtk_scale_set_draw_value(GTK_SCALE(group->gtk[i].interface[j]), */ -/* FALSE); */ - - gtk_scale_set_value_pos(GTK_SCALE(group->gtk[i].interface[j]), - GTK_POS_RIGHT); - - gtk_widget_set_usize(group->gtk[i].interface[j], 100, -1); - - gtk_widget_show(group->gtk[i].interface[j]); - gtk_box_pack_start(GTK_BOX(box), - group->gtk[i].interface[j], - FALSE, FALSE, 0); - - /* Set up the tooltip */ - tooltips = gtk_tooltips_new(); - gtk_tooltips_set_tip (tooltips, group->gtk[i].interface[j], route, NULL); - - } - - - - return box; -} diff --git a/xamixer2/display.h b/xamixer2/display.h deleted file mode 100644 index d3ff77e..0000000 --- a/xamixer2/display.h +++ /dev/null @@ -1,33 +0,0 @@ -/*****************************************************************************/ -/* Begin #include statements */ - -/* End #include statements */ -/*****************************************************************************/ - - -/*****************************************************************************/ -/* Begin function prototypes */ - -GtkWidget *create_mixer_page(int card_num, int mixer_num); - - -/* End function prototypes */ -/*****************************************************************************/ - -/*****************************************************************************/ -/* Begin #define statements */ - -/* These types are for the callback data identification */ -#define TYPE_EFFECT 0 -#define TYPE_SW 1 -#define TYPE_MONO_SW 2 -#define TYPE_WIDE 3 -#define TYPE_VOLUME 4 -#define TYPE_CENTER 5 -#define TYPE_SPACE 6 -#define TYPE_DEPTH 7 -#define TYPE_DELAY 8 -#define TYPE_FEEDBACK 9 - -/* End #define statements */ -/*****************************************************************************/ diff --git a/xamixer2/main.c b/xamixer2/main.c deleted file mode 100644 index e69de29..0000000 diff --git a/xamixer2/main.h b/xamixer2/main.h deleted file mode 100644 index 4ddf448..0000000 --- a/xamixer2/main.h +++ /dev/null @@ -1,95 +0,0 @@ -/*****************************************************************************/ -/* Begin system #includes */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/* End system #includes */ -/*****************************************************************************/ - - - -/*****************************************************************************/ -/* Begin program #includes */ - -#include "structs.h" -#include "util.h" -#include "xamixer2.h" -#include "cinit.h" -#include "callbacks.h" -#include "display.h" -#include "config.h" -#include "switches.h" -#include "options.h" - -/* End program #includes */ -/*****************************************************************************/ - - - -/*****************************************************************************/ -/* Begin #defines */ - -#define CHANNEL_LEFT (1 << 0) -#define CHANNEL_RIGHT (1 << 1) -#define CHANNEL_MONO (1 << 2) -#define CHANNEL_MUTE_RIGHT (1 << 3) -#define CHANNEL_MUTE_LEFT (1 << 4) -#define CHANNEL_MUTE_MONO (1 << 5) -#define CHANNEL_RECORD (1 << 6) -#define CHANNEL_RECORD_RIGHT (1 << 7) -#define CHANNEL_RECORD_LEFT (1 << 8) -#define CHANNEL_SIMULTANEOUS (1 << 9) -#define CHANNEL_DISPLAYED (1 << 10) -#define CHANNEL_LTOR (1 << 11) -#define CHANNEL_RTOL (1 << 12) - - -#define CONFIG_USE_XPMS (1 << 0) -#define CONFIG_ICON_XPM (1 << 1) -#define CONFIG_MUTE_XPM (1 << 2) -#define CONFIG_MUTE_XPM_L (1 << 3) -#define CONFIG_UNMUTE_XPM (1 << 4) -#define CONFIG_UNMUTE_XPM_L (1 << 5) -#define CONFIG_REC_XPM (1 << 6) -#define CONFIG_UNREC_XPM (1 << 7) -#define CONFIG_SIMUL_XPM (1 << 8) -#define CONFIG_UNSIMUL_XPM (1 << 9) -#define CONFIG_LTOR_XPM (1 << 10) -#define CONFIG_UNLTOR_XPM (1 << 11) -#define CONFIG_RTOL_XPM (1 << 12) -#define CONFIG_UNRTOL_XPM (1 << 13) -#define CONFIG_BACKGROUND_XPM (1 << 14) -#define CONFIG_SHOW_CARD_NAME (1 << 15) -#define CONFIG_SHOW_MIXER_NUMBER (1 << 16) -#define CONFIG_SHOW_MIXER_NAME (1 << 17) -#define CONFIG_SWITCHES_HIDDEN (1 << 18) - -/* End #defines */ -/*****************************************************************************/ - - - -/*****************************************************************************/ -/* Gtk 1.0 compatability */ - -#ifndef GTK_HAVE_FEATURES_1_1_0 -#define gtk_button_set_relief(a,b) -#endif - -/* End Gtk 1.0 compatability */ -/*****************************************************************************/ - - - - diff --git a/xamixer2/options.c b/xamixer2/options.c deleted file mode 100644 index e69de29..0000000 diff --git a/xamixer2/options.h b/xamixer2/options.h deleted file mode 100644 index e69de29..0000000 diff --git a/xamixer2/structs.h b/xamixer2/structs.h deleted file mode 100644 index 5a0ecf6..0000000 --- a/xamixer2/structs.h +++ /dev/null @@ -1,137 +0,0 @@ -/******************************************************************************/ -/* Begin Structures */ - -struct _Gtk_Channel -{ - GtkWidget **interface; /* And array of the interfaces (slider, button, etc.) */ - GtkObject **adjust; /* An array of the adjustments */ -}; -typedef struct _Gtk_Channel Gtk_Channel; - -struct _Group -{ - snd_mixer_group_t group; /* The group structure */ - snd_mixer_element_t *element; /* an array of all the elements in the group */ - snd_mixer_element_info_t *einfo; /* an array of the info about all of the elements */ - snd_mixer_routes_t *routes; /* an array of all the routes for the elements */ - Gtk_Channel *gtk; /* The Gtk+ widgets used for each mixer element */ -}; -typedef struct _Group Group; - -struct _Mixer -{ - int number; /* The number of the mixer device */ - snd_mixer_t *handle; - snd_mixer_info_t info; /* The info for the mixer */ - int cnum; /* The number of channels present */ - int snum; /* The number of mixer switches present */ - snd_mixer_groups_t groups; /* The mixer groups */ - Group *group; /* An array of the mixer groups */ - char name[80]; /* The name of the mixer */ - GtkWidget *switch_table; -}; -typedef struct _Mixer Mixer; - - - -struct _Card -{ - snd_ctl_hw_info_t hw_info; /* The hardware info about the card. */ - int number; /* The card's number */ - void *handle; /* The handle for the mixer */ - char name[80]; /* The name of the card */ - Mixer *mixer; /* A dynamic array of all of the mixers */ - int nmixers; /* The number of mixers on the card */ - int npcms; /* The number of pcm devices */ -}; -typedef struct _Card Card; - - -struct _MixerInfo -{ - Mixer *mixer; /* Which card */ - int channel; /* Which channel */ - unsigned int flags; /* flags */ - GtkWidget *other; /* The other range widget */ - GtkWidget *mute; /* The mute pixmap */ - GtkWidget *unmute; /* The unmute pixmap */ -}; -typedef struct _MixerInfo MixerInfo; - - -struct _ChannelLabel -{ - struct _ChannelLabel *next; /* pointer to the next node in the list */ - char *channel; /* The channel name */ - char *label; /* The channel label or pixmap */ -}; -typedef struct _ChannelLabel ChannelLabel; - - -struct _CBData -{ - Group *group; /* The group */ - void *handle; /* The mixer handle */ - int element; /* The element number to use as an index */ - int index; /* The index such as the voice # or something like that */ -}; -typedef struct _CBData CBData; - - - -struct _Config -{ - unsigned int flags; /* Flags */ - ChannelLabel *labels; /* The text labels for channels */ - ChannelLabel *xpm; /* The pixmaps (file names) for channels */ - char *icon; /* The Icon pixmap to use */ - char *mute; /* The mute label or pixmap (indicated in a flag) */ - char *mute_l; /* The left mute label or pixmap (indicated in a flag) */ - char *unmute; /* The unmute label or pixmap (indicated in a flag) */ - char *unmute_l; /* The left unmute label or pixmap (indicated in a flag) */ - char *simul; /* The simultaneous label or pixmap (indicated in a flag */ - char *unsimul; /* The unsimultaneous label or pixmap (indicated in a flag */ - char *rec; /* The record label or pixmap (indicated in a flag) */ - char *unrec; /* The unrecord label or pixmap (indicated in a flag) */ - char *background; /* The background xpm */ - unsigned int scale; /* The size in pixels that the scales should be set to */ - unsigned int padding; /* The padding between channels */ - int x_pos, y_pos; /* The position to start out at -1 = default */ - GtkWidget *cdisplay; /* The channel display window */ - GdkPixmap *icon_xpm; /* The icon xpm */ - GdkPixmap *mute_xpm; /* The mute pixmap */ - GdkPixmap *unmute_xpm; /* The unmute pixmap */ - GdkPixmap *mute_xpm_l; /* The left mute pixmap */ - GdkPixmap *unmute_xpm_l; /* The left unmute pixmap */ - GdkPixmap *rec_xpm; /* The record pixmap */ - GdkPixmap *unrec_xpm; /* The record off pixmap */ - GdkPixmap *simul_xpm; /* The sumultaneous pixmap */ - GdkPixmap *unsimul_xpm; /* The independent pixmap */ - GdkPixmap *background_xpm; /* The background pixmap */ - GdkBitmap *icon_mask; - GdkBitmap *mute_mask; - GdkBitmap *unmute_mask; - GdkBitmap *mute_mask_l; - GdkBitmap *unmute_mask_l; - GdkBitmap *rec_mask; - GdkBitmap *unrec_mask; - GdkBitmap *simul_mask; - GdkBitmap *unsimul_mask; - GdkBitmap *background_mask; -}; -typedef struct _Config Config; - -/* End Structures */ -/******************************************************************************/ - - -/******************************************************************************/ -/* Begin type macros */ - -#define MIXER(x) ((Mixer *)(x)) -#define CARD(x) ((Card *)(x)) - -/* End type macros */ -/******************************************************************************/ - - diff --git a/xamixer2/switches.c b/xamixer2/switches.c deleted file mode 100644 index e69de29..0000000 diff --git a/xamixer2/switches.h b/xamixer2/switches.h deleted file mode 100644 index e69de29..0000000 diff --git a/xamixer2/test.c b/xamixer2/test.c deleted file mode 100644 index 86d94c0..0000000 --- a/xamixer2/test.c +++ /dev/null @@ -1,31 +0,0 @@ -#include -#include -#include - -int main(int argc, char **argv) -{ - GtkWidget *window; - GtkWidget *scale; - GtkObject *adj; - - - gtk_init(&argc, &argv); - - window=gtk_window_new(GTK_WINDOW_TOPLEVEL); - adj = gtk_adjustment_new(1.0, - 0.0, - 110.0, - 1.0, - 4.0, - 0.0); - scale = gtk_hscale_new(GTK_ADJUSTMENT(adj)); - gtk_widget_show(scale); - gtk_container_add(GTK_CONTAINER(window), scale); - - - gtk_widget_show(window); - gtk_main(); - - - return 0; -} diff --git a/xamixer2/test1.c b/xamixer2/test1.c deleted file mode 100644 index 99ef65f..0000000 --- a/xamixer2/test1.c +++ /dev/null @@ -1,11 +0,0 @@ -#include - -main() -{ - printf("The value is %i\n", ~(1 << 1)); - - - - - return 0; -} diff --git a/xamixer2/util.c b/xamixer2/util.c deleted file mode 100644 index 4ab710a..0000000 --- a/xamixer2/util.c +++ /dev/null @@ -1,173 +0,0 @@ -/***************************************************************************** - xamixer.c - an Alsa based gtk mixer - Written by Raistlinn (lansdoct@cs.alfred.edu) - Copyright (C) 1998 by Christopher Lansdown - - This program is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License - as published by the Free Software Foundation; either version 2 - of the License, or (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -******************************************************************************/ - -/*****************************************************************************/ -/* Begin #include's */ - -#include "main.h" - -/* End #include's */ -/*****************************************************************************/ -extern Config config; /* The system config */ - - -int is_same(char *string1, char *string2) -{ - int i = 0; - - if(strlen(string1) != strlen(string2)) - return 0; - - while(string1[i] != '\0') - if(string1[i] != string2[i]) - return 0; - else - i++; - - return 1; - -} - -void strip_comment(char *string) -{ - char *place; - int i = 0, j = 0, size; - - size = strlen(string); - /* Get wrid of the comments */ - place = string; - while((place = strchr(place, '#'))){ - if(string[(place - string) -1] != '\\') - *place = '\0'; - place++; - } - - /* Replace the escape sequences */ - place = calloc(1, strlen(string)); - while(string[i] != '\0'){ - if(string[i] == '\\') - place[j] = string[++i]; - else - place[j] = string[i]; - - i++; - j++; - } - - EAZERO(string, size); - strncpy(string, place, size); - free(place); - return; -} - -int is_comment(char *string) -{ - int i=0; - - while (string[i] != '\0'){ - if (string[i] == '#') - return 1; - if (string[i] != ' ' && string[i] != '\t') - return 0; - i++; - } - return 0; -} - -ChannelLabel *channel_label_append(ChannelLabel *head, char *channel, char *label) -{ - ChannelLabel *tmp; - - tmp = calloc(1, sizeof(ChannelLabel)); - - tmp->next = head; - tmp->channel = calloc(strlen(channel) + 1, sizeof(char)); - strcpy(tmp->channel, channel); - tmp->label = calloc(strlen(label) + 1, sizeof(char)); - strcpy(tmp->label, label); - - return tmp; -} - -int get_label(char *line, char *expect, char *value1, size_t value1_len, - char *value2, size_t value2_len, char quote1, char quote2) -{ - char *tmp; - int len, i; - - len = strlen(line); - - if(expect) { - tmp = strstr(line, expect); - if(!tmp) - return FALSE; - tmp = &tmp[strlen(expect)]; - } - else - tmp = line; - - - tmp = strchr(tmp, quote1) + 1; - if(!tmp) - return FALSE; - for(i = 0; i < (value1_len - 1) && tmp[i] != quote2; i++) - value1[i] = tmp[i]; - value1[i] = '\0'; - - tmp = strchr(tmp, quote1) + 1; - if(!tmp) - return FALSE; - for(i = 0; i < (value2_len - 1) && tmp[i] != quote2; i++) - value2[i] = tmp[i]; - value2[i] = '\0'; - - - - return TRUE; -} - -MixerInfo *create_mixer_info(Mixer *mixer, int num, unsigned int flags) -{ - MixerInfo *info; - info = calloc(1, sizeof(MixerInfo)); - - info->mixer = mixer; - info->channel = num; - info->flags = flags; - info->other = NULL; - info->mute = NULL; - info->unmute = NULL; - - return info; -} - -CBData *create_cb_data(Group *group, void *handle, int element, int index) -{ - CBData *data; - - data = malloc(sizeof(CBData)); - - data->group = group; - data->handle = handle; - data->element = element; - data->index = index; - - return data; -} diff --git a/xamixer2/util.h b/xamixer2/util.h deleted file mode 100644 index 29790d7..0000000 --- a/xamixer2/util.h +++ /dev/null @@ -1,37 +0,0 @@ -/*****************************************************************************/ -/* Begin #include statements */ - -/* End #include statements */ -/*****************************************************************************/ - - -/*****************************************************************************/ -/* Begin function prototypes */ - -int is_same(char *string1, char *string2); -void strip_comment(char *string); -int is_comment(char *string); -ChannelLabel *channel_label_append(ChannelLabel *head, char *channel, char *label); -int get_label(char *line, char *expect, char *value1, size_t value1_len, - char *value2, size_t value2_len, char quote1, char quote2); -MixerInfo *create_mixer_info(Mixer *mixer, int num, unsigned int flags); -CBData *create_cb_data(Group *group, void *handle, int element, int index); - -/* End function prototypes */ -/*****************************************************************************/ - -/*****************************************************************************/ -/* Begin #define statements */ - - -/* End #define statements */ -/*****************************************************************************/ - -/*****************************************************************************/ -/* Begin Macros */ - -#define EAZERO(S, L) S[L-1] = '\0'; - -/* End Macros */ -/*****************************************************************************/ - diff --git a/xamixer2/xamixer.conf b/xamixer2/xamixer.conf deleted file mode 100644 index 322c902..0000000 --- a/xamixer2/xamixer.conf +++ /dev/null @@ -1,47 +0,0 @@ -# XAmixer home file -# Comments are preceded anywhere on the line by a '#' -# All channel arguments (string & pixmap) must be enclosed in [ ] [ ] -UseXpms -#IgnoreXpms -ScaleSize 115 -ChannelPadding 5 -Position -1 -1 # Both arguments must be set (and >= 0) to get positioning. -ShowCardName -#ShowMixerNumber -#ShowMixerName -#MuteLabel Mute -#RecLabel Record -RecLabel R -#SimulLabel Lock -#BackgroundXpm /usr/local/share/xamixer/pixmaps/test.xpm -#BackgroundXpm /home/raistlin/xamixer/pixmaps/background5.xpm -#BackgroundXpm /home/raistlin/xamixer/pixmaps/background.xpm -#BackgroundXpm /tmp/background.xpm -IconXpm /usr/local/share/xamixer/pixmaps/icon3.xpm -#MuteXpm /usr/local/share/xamixer/pixmaps/mute3.xpm -#unMuteXpm /usr/local/share/xamixer/pixmaps/unmute3.xpm -MuteXpm /usr/local/share/xamixer/pixmaps/mute3.xpm -unMuteXpm /usr/local/share/xamixer/pixmaps/unmute3.xpm -#RecXpm /usr/local/share/xamixer/pixmaps/record.xpm -#unRecXpm /usr/local/share/xamixer/pixmaps/unrecord.xpm -RecXpm /usr/local/share/xamixer/pixmaps/rec.xpm -unRecXpm /usr/local/share/xamixer/pixmaps/unrec.xpm -#RecXpm /home/raistlin/xamixer/pixmaps/record.xpm -#unRecXpm /home/raistlin/xamixer/pixmaps/unrecord.xpm -SimulXpm /usr/local/share/xamixer/pixmaps/simul.xpm -unSimulXpm /usr/local/share/xamixer/pixmaps/unsimul.xpm -Label [Master] [Mstr] -Label [Master M] [MstrM] -Label [Line-In] [LineIn] -Label [Record-Gain] [RGain] -Label [PC Speaker] [Spkr] -Label [Aux A] [AuxA] -Label [In-Gain] [IGain] -Label [Out-Gain] [OGain] -Xpm [Master] [/usr/local/share/xamixer/pixmaps/master.xpm] -Xpm [CD] [/usr/local/share/xamixer/pixmaps/cd.xpm] -Xpm [MIC] [/usr/local/share/xamixer/pixmaps/mic.xpm] -Xpm [PCM] [/usr/local/share/xamixer/pixmaps/pcm.xpm] -Xpm [Synth] [/usr/local/share/xamixer/pixmaps/synth.xpm] -Xpm [Line-In] [/usr/local/share/xamixer/pixmaps/line-in.xpm] -Xpm [PC Speaker] [/usr/local/share/xamixer/pixmaps/speaker.xpm] diff --git a/xamixer2/xamixer.home b/xamixer2/xamixer.home deleted file mode 100644 index 322c902..0000000 --- a/xamixer2/xamixer.home +++ /dev/null @@ -1,47 +0,0 @@ -# XAmixer home file -# Comments are preceded anywhere on the line by a '#' -# All channel arguments (string & pixmap) must be enclosed in [ ] [ ] -UseXpms -#IgnoreXpms -ScaleSize 115 -ChannelPadding 5 -Position -1 -1 # Both arguments must be set (and >= 0) to get positioning. -ShowCardName -#ShowMixerNumber -#ShowMixerName -#MuteLabel Mute -#RecLabel Record -RecLabel R -#SimulLabel Lock -#BackgroundXpm /usr/local/share/xamixer/pixmaps/test.xpm -#BackgroundXpm /home/raistlin/xamixer/pixmaps/background5.xpm -#BackgroundXpm /home/raistlin/xamixer/pixmaps/background.xpm -#BackgroundXpm /tmp/background.xpm -IconXpm /usr/local/share/xamixer/pixmaps/icon3.xpm -#MuteXpm /usr/local/share/xamixer/pixmaps/mute3.xpm -#unMuteXpm /usr/local/share/xamixer/pixmaps/unmute3.xpm -MuteXpm /usr/local/share/xamixer/pixmaps/mute3.xpm -unMuteXpm /usr/local/share/xamixer/pixmaps/unmute3.xpm -#RecXpm /usr/local/share/xamixer/pixmaps/record.xpm -#unRecXpm /usr/local/share/xamixer/pixmaps/unrecord.xpm -RecXpm /usr/local/share/xamixer/pixmaps/rec.xpm -unRecXpm /usr/local/share/xamixer/pixmaps/unrec.xpm -#RecXpm /home/raistlin/xamixer/pixmaps/record.xpm -#unRecXpm /home/raistlin/xamixer/pixmaps/unrecord.xpm -SimulXpm /usr/local/share/xamixer/pixmaps/simul.xpm -unSimulXpm /usr/local/share/xamixer/pixmaps/unsimul.xpm -Label [Master] [Mstr] -Label [Master M] [MstrM] -Label [Line-In] [LineIn] -Label [Record-Gain] [RGain] -Label [PC Speaker] [Spkr] -Label [Aux A] [AuxA] -Label [In-Gain] [IGain] -Label [Out-Gain] [OGain] -Xpm [Master] [/usr/local/share/xamixer/pixmaps/master.xpm] -Xpm [CD] [/usr/local/share/xamixer/pixmaps/cd.xpm] -Xpm [MIC] [/usr/local/share/xamixer/pixmaps/mic.xpm] -Xpm [PCM] [/usr/local/share/xamixer/pixmaps/pcm.xpm] -Xpm [Synth] [/usr/local/share/xamixer/pixmaps/synth.xpm] -Xpm [Line-In] [/usr/local/share/xamixer/pixmaps/line-in.xpm] -Xpm [PC Speaker] [/usr/local/share/xamixer/pixmaps/speaker.xpm] diff --git a/xamixer2/xamixer2.c b/xamixer2/xamixer2.c deleted file mode 100644 index 606328e..0000000 --- a/xamixer2/xamixer2.c +++ /dev/null @@ -1,198 +0,0 @@ -/***************************************************************************** - xamixer.c - an Alsa based gtk mixer - Written by Raistlinn (lansdoct@cs.alfred.edu) - Copyright (C) 1998 by Christopher Lansdown - - This program is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License - as published by the Free Software Foundation; either version 2 - of the License, or (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -******************************************************************************/ - -/*****************************************************************************/ -/* Begin #include's */ - -#include "main.h" - -/* End #include's */ -/*****************************************************************************/ - -/*****************************************************************************/ -/* Begin Global Variables */ - -GtkWidget *window; -Card *card; /* And array of the cards */ -int cards; /* The number of cards in the system. */ -extern Config config; /* The system config */ - -/* End Global Variables */ -/*****************************************************************************/ - -int main(int argc, char **argv) -{ - - /* Begin Variable Declarations */ - GtkWidget *mainbox; - GtkWidget *notebook; - GtkWidget *frame; - GtkWidget *label; - GtkWidget *table; - GtkWidget *switch_button; - GtkWidget *tmpbox; - GtkWidget *tablebox; - GtkWidget *separator; - int i,j,k,xpm,found,fd; - char title[64]; - char name[128]; - ChannelLabel *tmp; - char labelname[256]; - char *home_env, *home_dir; - GtkStyle *style; - GtkWidget *hbox; - snd_mixer_filter_t mixer_filter; - /* End Variable Declarations */ - - /* Go through gtk initialization */ - gtk_init(&argc, &argv); - - /* Read the personal config file - these values override the global config */ - home_env = getenv("HOME"); - home_dir = calloc((strlen(home_env) + 2 + strlen(RCFILE)), 1); - strcpy(home_dir, home_env); - strcat(home_dir, "/"); - strcat(home_dir, RCFILE); - gtk_rc_parse(home_dir); - free(home_dir); - - /* Read in the soundcard info */ - if(init_cards()) { - printf("Error. Unable to initialize sound cards.\n"); - return 1; - } - - /* Read in normal config info */ - config_init(); - config_read("/usr/local/etc/xamixer.conf"); - home_env = getenv("HOME"); - home_dir = calloc((strlen(home_env) + 2 + strlen(HOME_FILE)), 1); - strcpy(home_dir, home_env); - strcat(home_dir, "/"); - strcat(home_dir, HOME_FILE); - config_read(home_dir); - free(home_dir); - - /* Make the title */ - sprintf(title, "XAmixer2 %s", VERSION); - - /* Create the main window */ - window = gtk_window_new(GTK_WINDOW_TOPLEVEL); - gtk_window_set_title(GTK_WINDOW(window), title); - gtk_signal_connect(GTK_OBJECT (window), "delete_event", - (GtkSignalFunc) gtk_main_quit, NULL); - signal(SIGINT, (void *)gtk_main_quit); - /* Set the policy */ - gtk_window_set_policy(GTK_WINDOW (window), TRUE, TRUE, TRUE); - /* Set the position, if one has been defined */ - gtk_widget_set_uposition(window, config.x_pos, config.y_pos); - /* Realize the window so that we can start drawing pixmaps to it */ - gtk_widget_realize(window); - - /* Set up the pixmaps */ - setup_pixmaps(window); - - - /* Create the notebook */ - notebook = gtk_notebook_new(); - gtk_notebook_set_tab_pos (GTK_NOTEBOOK (notebook), GTK_POS_TOP); - - gtk_widget_show(notebook); - gtk_container_add(GTK_CONTAINER(window), notebook); - - - /* Create the notebook pages */ - for(i = 0; i < cards; i++) { - for(j = 0; j < card[i].hw_info.mixerdevs; j++) { - - frame = create_mixer_page(i, j); - - - - - /* Create the label and add the page to the notebook */ - bzero(labelname, 256); - if(config.flags & CONFIG_SHOW_CARD_NAME) { - strcpy(labelname, card[i].hw_info.name); - if(config.flags & (CONFIG_SHOW_MIXER_NAME | - CONFIG_SHOW_MIXER_NUMBER)) - strcat(labelname, ", "); - } - - if(config.flags & CONFIG_SHOW_MIXER_NUMBER) { - /* Do some trickery to get around an additional - variable, plus this may be more efficient, - since strcat() has to figure out where the end - of the line is anyhow, plus the copying. */ - sprintf(&labelname[strlen(labelname)], "Mixer %i", j); - if(config.flags & CONFIG_SHOW_MIXER_NAME) - strcat(labelname, ", "); - } - - if(config.flags & CONFIG_SHOW_MIXER_NAME) - strcat(labelname, card[i].mixer[j].info.name); - - /* Just in case nothing is specified in the config file */ - if(!(config.flags & (CONFIG_SHOW_CARD_NAME | - CONFIG_SHOW_MIXER_NAME | - CONFIG_SHOW_MIXER_NUMBER))) - sprintf(labelname, "%i", i + j); - - label = gtk_label_new(labelname); - gtk_widget_show(label); - gtk_notebook_append_page (GTK_NOTEBOOK (notebook), frame, label); - - - } - } - - /* Create the options page */ - frame = gtk_frame_new(""); - gtk_widget_show(frame); - // gtk_container_add(GTK_CONTAINER (frame), create_options_page()); - label = gtk_label_new("Options"); - gtk_widget_show(label); - gtk_notebook_append_page(GTK_NOTEBOOK (notebook), frame, label); - - - /* Set up the icon, if one has been defined. */ - if(config.flags & CONFIG_ICON_XPM && config.icon_xpm) - gdk_window_set_icon(window->window, NULL, - config.icon_xpm, config.icon_mask); - - - /* Set up the update callback for every mixer */ - for(i = 0; i < cards; i++) - for(j = 0; j < card[i].nmixers; j++) - gdk_input_add(snd_mixer_file_descriptor(card[i].mixer[j].handle), - GDK_INPUT_READ, - mixer_change_cb, - &card[i].mixer[j]); - - - /* Show the whole kit and kaboodle */ - gtk_widget_show(window); - - /* And go into the gtk loop - why does this feel like the first - plunge in a roller coaster after the big hill at the beginning? */ - gtk_main(); - - return 0; -} diff --git a/xamixer2/xamixer2.h b/xamixer2/xamixer2.h deleted file mode 100644 index b8f91dc..0000000 --- a/xamixer2/xamixer2.h +++ /dev/null @@ -1,25 +0,0 @@ -/*****************************************************************************/ -/* Begin #include statements */ - -/* End #include statements */ -/*****************************************************************************/ - - -/*****************************************************************************/ -/* Begin function prototypes */ - - -/* End function prototypes */ -/*****************************************************************************/ - -/*****************************************************************************/ -/* Begin #define statements */ - -#define RCFILE ".xamixerrc" -#define VERSION "0.1.3" - -/* End #define statements */ -/*****************************************************************************/ - - - -- 2.47.1