diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..8c770f6 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,142 @@ +name: Build alsa-tools + +on: [push, pull_request] + +jobs: + fedora_latest_build: + runs-on: ubuntu-latest + container: + image: fedora:latest + env: + QTDIR: /usr/lib64/qt-3.3 + steps: + - name: Prepare environment + run: | + dnf -y upgrade + dnf -y install @development-tools gcc-c++ libtool bzip2 gtk2-devel gtk3-devel fltk-devel qt3-devel + + - name: Checkout alsa-lib + uses: actions/checkout@v4 + with: + repository: alsa-project/alsa-lib + ref: master + path: alsa-lib + - name: Configure alsa-lib + run: | + cd alsa-lib + head -5 configure.ac + libtoolize --force --copy --automake + aclocal + autoheader + automake --foreign --copy --add-missing + autoconf + export CFLAGS="-O2 -Wall -W -Wunused-const-variable=0 -pipe -g" + ./configure + echo "Version: $(cat version)" + - name: Build alsa-lib + run: | + cd alsa-lib + make + - name: Install alsa-lib + run: | + cd alsa-lib + make install + + - name: Checkout + uses: actions/checkout@v4 + with: + path: alsa-tools + - name: Checkout all tags + run: | + cd alsa-tools + git fetch --prune --tags --force + git fetch --prune --unshallow --force + - name: Modify version + run: | + cd alsa-tools + mv Makefile Makefile.old + version=$(git describe | sed -e 's/v//') + if test -z "$version"; then version=$(git describe --tags | sed -e 's/v//'); fi + if test -z "$version"; then version1=$(grep "VERSION = .*" Makefile.old | cut -d ' ' -f 3); version2=$(git rev-parse --short HEAD); version="${version1}-g${version2}"; fi + echo "Version: ${version}" + sed -r "s/VERSION = .*/VERSION = ${version}/" < Makefile.old > Makefile + grep "VERSION =" Makefile + - name: Compile and install as10k1 (dependency) + run: | + cd alsa-tools/as10k1 + ./gitcompile --prefix=/usr + make install + - name: Compile and install ld10k1 (dependency) + run: | + cd alsa-tools/ld10k1 + ./gitcompile --prefix=/usr + make install + - name: Configure and build + run: | + cd alsa-tools + ./gitcompile + - name: Create package + run: | + cd alsa-tools + make alsa-dist + mkdir ../artifacts + mv alsa-tools*.tar.bz2 ../artifacts + - name: Archive package + uses: actions/upload-artifact@v4 + with: + name: alsa-tools-test-package + path: artifacts/ + + ubuntu_last_build: + runs-on: ubuntu-latest + container: + image: ubuntu:latest + steps: + - name: Prepare + run: | + export DEBIAN_FRONTEND=noninteractive + apt-get update + apt-get -y install apt-utils + apt-get -y full-upgrade + apt-get install -y git build-essential pkg-config m4 autoconf automake libtool ibgtk2.0-dev libgtk-3-dev libfltk1.3-dev + + - name: Checkout alsa-lib + uses: actions/checkout@v4 + with: + repository: alsa-project/alsa-lib + ref: master + - name: Configure alsa-lib + run: | + libtoolize --force --copy --automake + aclocal + autoheader + automake --foreign --copy --add-missing + autoconf + export CFLAGS="-O2 -Wall -W -Wunused-const-variable=0 -pipe -g" + ./configure + - name: Build alsa-lib + run: | + make + - name: Install alsa-lib + run: | + make install + + - name: Checkout + uses: actions/checkout@v4 + - name: Remove qlo10k1 + run: | + mv Makefile Makefile.old + sed -e 's/qlo10k1//' < Makefile.old > Makefile + - name: Compile and install as10k1 (dependency) + run: | + cd as10k1 + ./gitcompile --prefix=/usr + make install + - name: Compile and install ld10k1 (dependency) + run: | + cd ld10k1 + ./gitcompile --prefix=/usr + make install + - name: Configure and build + run: | + ./gitcompile diff --git a/Makefile b/Makefile index 1b3d4ab..1a94611 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -VERSION = 1.2.11 +VERSION = 1.2.14 TOP = . SUBDIRS = as10k1 envy24control hdsploader hdspconf hdspmixer \ mixartloader pcxhrloader rmedigicontrol sb16_csp seq sscape_ctl \ diff --git a/as10k1/as10k1.c b/as10k1/as10k1.c index e226051..079f1c2 100644 --- a/as10k1/as10k1.c +++ b/as10k1/as10k1.c @@ -244,6 +244,7 @@ void asm_open(char *name) struct stat st; char *next; int backup_line_num,backup_file_num; + size_t rsize; @@ -284,8 +285,10 @@ void asm_open(char *name) buff[i].mem_end = buff[i].mem_start+st.st_size; - read(fd, buff[i].mem_start, st.st_size); + rsize = read(fd, buff[i].mem_start, st.st_size); close(fd); + if (rsize != st.st_size) + as_exit("short read from input file\n"); #ifdef DEBUG printf("File %s opened:\n",name); @@ -383,13 +386,14 @@ void output_tram_line(struct list_head *line_head, int type) val = __cpu_to_le32(tram_sym->data.value); fwrite(&val,sizeof(u32),1,fp); if(listing){ - if(type==TYPE_TRAM_ADDR_READ) + if(type==TYPE_TRAM_ADDR_READ) { fprintf(listfile,"\tRead"); - else + } else { fprintf(listfile,"\tWrite"); + } - fprintf(listfile,": 0x3%02x/0x2%02x (%s), offset 0x%07x\n",tram_sym->data.address,tram_sym->data.address, - (prev_sym((&tram_sym->list)))->data.name,tram_sym->data.value); + fprintf(listfile,": 0x3%02x/0x2%02x (%s), offset 0x%07x\n",tram_sym->data.address,tram_sym->data.address, + (prev_sym((&tram_sym->list)))->data.name,tram_sym->data.value); } } diff --git a/as10k1/assemble.c b/as10k1/assemble.c index 4508973..ced57c7 100644 --- a/as10k1/assemble.c +++ b/as10k1/assemble.c @@ -22,6 +22,7 @@ #include"types.h" #include"proto.h" +#include"parse.h" extern int dbg_opt; extern FILE *listfile; @@ -45,7 +46,6 @@ void op(int op, int z,int w,int x,int y) int w0, w1; extern int dsp_code[DSP_CODE_SIZE]; extern int ip; - extern char op_codes[35][9]; extern char listtemp[60]; if (ip >= 0x200) as_exit("to many instructions"); @@ -306,7 +306,6 @@ void add_symbol(char *name, u16 type, u16 address, u32 value) extern int gpr_input_count,gpr_output_count,gpr_static_count,gpr_dynamic_count,gpr_control_count,gpr_constant_count; struct sym *sym; - struct tram *tmp_ptr; extern struct list_head sym_head; extern struct delay tram_delay[MAX_TANK_ADDR]; extern struct lookup tram_lookup[MAX_TANK_ADDR]; @@ -356,10 +355,8 @@ void add_symbol(char *name, u16 type, u16 address, u32 value) else tram_delay[tmp].write++; }else{ - tmp_ptr=(struct tram *)sym; list_add_tail(&(((struct tram *)sym)->tram) , &(tram_lookup[tmp].tram) ); - tmp_ptr=(struct tram *)sym; - if(type== TYPE_TRAM_ADDR_READ) + if(type== TYPE_TRAM_ADDR_READ) tram_lookup[tmp].read++; else tram_lookup[tmp].write++; diff --git a/as10k1/macro.c b/as10k1/macro.c index a01ad6f..70e4ef9 100644 --- a/as10k1/macro.c +++ b/as10k1/macro.c @@ -72,14 +72,11 @@ void new_macro(char *symbol, char *line, char *operand) void macro_expand(int macnum,char *operand ) { char *line,*next; - int done=0,i,old; + int done=0,old; extern unsigned int macro_depth; extern int macro_line_num; char string[MAX_LINE_LENGTH]; - //initialize macro use: - i=0; - if(macro_depth+1> MAX_MAC_DEPTH) as_exit("Error exceeded maximum number of recursive macro calls"); diff --git a/as10k1/parse.c b/as10k1/parse.c index 8523717..02d4f5e 100644 --- a/as10k1/parse.c +++ b/as10k1/parse.c @@ -18,6 +18,7 @@ #include #include #include"types.h" +#define DECLARE_OP_CODES #include"parse.h" #include"proto.h" @@ -87,7 +88,7 @@ int parse( char line_string[MAX_LINE_LENGTH], char *line) if((tmp=ismacro(op_name_ptr)) != -1 ){ if(defmacro==0) macro_expand(tmp,strtok(NULL,"")); - return(0); + return(0); } if( (op_num=op_decode(op_name_ptr))==-1) { diff --git a/as10k1/parse.h b/as10k1/parse.h index be71daa..b79ed8b 100644 --- a/as10k1/parse.h +++ b/as10k1/parse.h @@ -63,7 +63,9 @@ enum foo { }; - +#ifndef DECLARE_OP_CODES +extern char op_codes[NUM_OPS+1][9]; +#else char op_codes[NUM_OPS+1][9]= { "MACS", @@ -110,6 +112,7 @@ char op_codes[NUM_OPS+1][9]= "con", "NotAnOp" }; +#endif //extern int file_num,source_line_num diff --git a/echomixer/echomixer.c b/echomixer/echomixer.c index 80124ba..adc10e1 100644 --- a/echomixer/echomixer.c +++ b/echomixer/echomixer.c @@ -629,9 +629,7 @@ gint DrawMixer(gpointer unused) { int OutPeak[ECHO_MAXAUDIOOUTPUTS]; int VirLevel[ECHO_MAXAUDIOOUTPUTS]; int VirPeak[ECHO_MAXAUDIOOUTPUTS]; - static int InClip[ECHO_MAXAUDIOINPUTS]; - static int OutClip[ECHO_MAXAUDIOOUTPUTS]; - char str[8]; + char str[16]; int i, o, dB; GdkColor Grid={0x787878, 0, 0, 0}; GdkColor Labels={0x9694C4, 0, 0, 0}; @@ -647,13 +645,8 @@ gint DrawMixer(gpointer unused) { update_rect.height = Mixheight; GetVUmeters(InLevel, InPeak, OutLevel, OutPeak, VirLevel, VirPeak); - if (!gc) { + if (!gc) gc=gdk_gc_new(gtk_widget_get_parent_window(Mixdarea)); - for (i=0; istyle->black_gc, TRUE, 0, 0, Mixwidth, Mixheight); @@ -1693,7 +1686,7 @@ void ToggleWindow(GtkWidget *widget, gpointer window) { // Scan all controls and sets up the structures needed to access them. int OpenControls(const char *card, const char *cardname) { int err, i, o; - int numid, count, items, item; + int numid, items, item; snd_hctl_t *handle; snd_hctl_elem_t *elem; snd_ctl_elem_id_t *id; @@ -1726,7 +1719,6 @@ int OpenControls(const char *card, const char *cardname) { continue; snd_hctl_elem_get_id(elem, id); numid=snd_ctl_elem_id_get_numid(id); - count=snd_ctl_elem_info_get_count(info); if (!strcmp("Monitor Mixer Volume", snd_ctl_elem_id_get_name(id))) { if (!mixerId) { mixerId=numid; @@ -1879,7 +1871,7 @@ int main(int argc, char *argv[]) { GtkWidget *label, *menu, *menuitem; GSList *bgroup; int err, i, o, n, cardnum, value; - char hwname[8], cardname[32], load, save; + char hwname[16], cardname[32], load, save; snd_ctl_card_info_t *hw_info; load=save=1; @@ -1900,8 +1892,8 @@ int main(int argc, char *argv[]) { } if ((err=snd_ctl_card_info(ctlhandle, hw_info))>=0) { if (!strncmp(snd_ctl_card_info_get_driver(hw_info), "Echo_", 5)) { - strncpy(card, hwname, 7); - hwname[7]=0; + strncpy(card, hwname, sizeof(hwname)-1); + card[sizeof(hwname)-1]=0; strncpy(cardname, snd_ctl_card_info_get_name(hw_info), 31); cardname[31]=0; strncpy(cardId, snd_ctl_card_info_get_name(hw_info), 15); diff --git a/envy24control/config.c b/envy24control/config.c index 6933eef..f3ce2c9 100644 --- a/envy24control/config.c +++ b/envy24control/config.c @@ -46,8 +46,8 @@ void config_close() void config_set_stereo(GtkWidget *but, gpointer data) { - gint i=(gint)data; - config_stereo[i]=GTK_TOGGLE_BUTTON(but)->active; + gint i=GPOINTER_TO_INT(data); + config_stereo[i]=gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(but)); } void config_restore_stereo() diff --git a/envy24control/configure.ac b/envy24control/configure.ac index 776f290..dfb21bd 100644 --- a/envy24control/configure.ac +++ b/envy24control/configure.ac @@ -5,6 +5,6 @@ AC_HEADER_STDC AM_INIT_AUTOMAKE AM_MAINTAINER_MODE([enable]) -PKG_CHECK_MODULES(ENVY24CONTROL, gtk+-2.0 alsa >= 0.9.0) +PKG_CHECK_MODULES(ENVY24CONTROL, gtk+-3.0 alsa >= 0.9.0) AC_OUTPUT(Makefile desktop/Makefile) diff --git a/envy24control/driverevents.c b/envy24control/driverevents.c index 377363d..cdc56ab 100644 --- a/envy24control/driverevents.c +++ b/envy24control/driverevents.c @@ -19,7 +19,7 @@ #include "envy24control.h" -void control_input_callback(gpointer data, gint source, GdkInputCondition condition) +gboolean control_input_callback(GIOChannel *source, GIOCondition condition, gpointer data) { snd_ctl_t *ctl = (snd_ctl_t *)data; snd_ctl_event_t *ev; @@ -29,12 +29,12 @@ void control_input_callback(gpointer data, gint source, GdkInputCondition condit snd_ctl_event_alloca(&ev); if (snd_ctl_read(ctl, ev) < 0) - return; + return TRUE; name = snd_ctl_event_elem_get_name(ev); index = snd_ctl_event_elem_get_index(ev); mask = snd_ctl_event_elem_get_mask(ev); if (! (mask & (SND_CTL_EVENT_MASK_VALUE | SND_CTL_EVENT_MASK_INFO))) - return; + return TRUE; switch (snd_ctl_event_elem_get_interface(ev)) { case SND_CTL_ELEM_IFACE_MIXER: @@ -81,8 +81,13 @@ void control_input_callback(gpointer data, gint source, GdkInputCondition condit else if (!strcmp(name, "Input Sensitivity Switch")) adc_sense_update(index); break; + case SND_CTL_ELEM_IFACE_PCM: + if (!strcmp(name, "IEC958 Playback Default")) + spdif_output_update(); + break; default: break; } + return TRUE; } diff --git a/envy24control/envy24control.c b/envy24control/envy24control.c index 107a843..bf6864f 100644 --- a/envy24control/envy24control.c +++ b/envy24control/envy24control.c @@ -45,7 +45,7 @@ GtkWidget *window; GtkWidget *mixer_mix_drawing; GtkWidget *mixer_clear_peaks_button; GtkWidget *mixer_drawing[20]; -GtkObject *mixer_adj[20][2]; +GtkAdjustment *mixer_adj[20][2]; GtkWidget *mixer_vscale[20][2]; GtkWidget *mixer_mute_toggle[20][2]; GtkWidget *mixer_stereo_toggle[20]; @@ -71,7 +71,7 @@ GtkWidget *hw_clock_state_reset; GtkWidget *hw_rate_locking_check; GtkWidget *hw_rate_reset_check; -GtkObject *hw_volume_change_adj; +GtkAdjustment *hw_volume_change_adj; GtkWidget *hw_volume_change_spin; GtkWidget *hw_spdif_profi_nonaudio_radio; @@ -115,9 +115,9 @@ GtkWidget *input_interface_wavetable; GtkWidget *hw_phono_input_on_radio; GtkWidget *hw_phono_input_off_radio; -GtkObject *av_dac_volume_adj[10]; -GtkObject *av_adc_volume_adj[10]; -GtkObject *av_ipga_volume_adj[10]; +GtkAdjustment *av_dac_volume_adj[10]; +GtkAdjustment *av_adc_volume_adj[10]; +GtkAdjustment *av_ipga_volume_adj[10]; GtkLabel *av_dac_volume_label[10]; GtkLabel *av_adc_volume_label[10]; GtkLabel *av_ipga_volume_label[10]; @@ -130,7 +130,7 @@ struct profile_button { } profiles_toggle_buttons[MAX_PROFILES]; GtkWidget *active_button = NULL; -GtkObject *card_number_adj; +GtkAdjustment *card_number_adj; static void create_mixer_frame(GtkWidget *box, int stream) @@ -139,7 +139,7 @@ static void create_mixer_frame(GtkWidget *box, int stream) GtkWidget *vbox1; GtkWidget *hbox; GtkWidget *frame; - GtkObject *adj; + GtkAdjustment *adj; GtkWidget *vscale; GtkWidget *drawing; GtkWidget *label; @@ -171,107 +171,94 @@ static void create_mixer_frame(GtkWidget *box, int stream) } frame = gtk_frame_new(str); - gtk_widget_show(frame); gtk_box_pack_start(GTK_BOX(box), frame, FALSE, TRUE, 0); gtk_container_set_border_width(GTK_CONTAINER(frame), 2); - vbox = gtk_vbox_new(FALSE, 6); - gtk_widget_show(vbox); + vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 6); gtk_container_add(GTK_CONTAINER(frame), vbox); gtk_container_set_border_width(GTK_CONTAINER(vbox), 2); - hbox = gtk_hbox_new(FALSE, 2); - gtk_widget_show(hbox); + hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 2); gtk_box_pack_start(GTK_BOX(vbox), hbox, TRUE, TRUE, 0); adj = gtk_adjustment_new(96, 0, 96, 1, 16, 0); mixer_adj[stream-1][0] = adj; - vscale = gtk_vscale_new(GTK_ADJUSTMENT(adj)); + vscale = gtk_scale_new(GTK_ORIENTATION_VERTICAL, adj); mixer_vscale[stream-1][0] = vscale; - gtk_widget_show(vscale); gtk_box_pack_start(GTK_BOX(hbox), vscale, TRUE, FALSE, 0); gtk_scale_set_value_pos(GTK_SCALE(vscale), GTK_POS_BOTTOM); gtk_scale_set_digits(GTK_SCALE(vscale), 0); - gtk_signal_connect(GTK_OBJECT(adj), "value_changed", - GTK_SIGNAL_FUNC(mixer_adjust), - (gpointer)(long)((stream << 16) + 0)); + g_signal_connect(adj, "value_changed", + G_CALLBACK(mixer_adjust), + (gpointer)(long)((stream << 16) + 0)); - vbox1 = gtk_vbox_new(FALSE, 0); - gtk_widget_show(vbox1); + vbox1 = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); gtk_box_pack_start(GTK_BOX(hbox), vbox1, FALSE, FALSE, 0); drawing = gtk_drawing_area_new(); mixer_drawing[stream-1] = drawing; sprintf(drawname, "Mixer%i", stream); gtk_widget_set_name(drawing, drawname); - gtk_widget_show(drawing); - gtk_signal_connect(GTK_OBJECT(drawing), "expose_event", - GTK_SIGNAL_FUNC(level_meters_expose_event), NULL); - gtk_signal_connect(GTK_OBJECT(drawing), "configure_event", - GTK_SIGNAL_FUNC(level_meters_configure_event), NULL); + g_signal_connect(drawing, "draw", + G_CALLBACK(level_meters_draw_callback), NULL); gtk_widget_set_events(drawing, GDK_EXPOSURE_MASK); - gtk_widget_set_usize(drawing, 36, (60 * tall_equal_mixer_ht + 204)); + gtk_widget_set_size_request(drawing, 36, (60 * tall_equal_mixer_ht + 204)); gtk_box_pack_start(GTK_BOX(vbox1), drawing, FALSE, FALSE, 1); label = gtk_label_new(""); - gtk_widget_show(label); gtk_box_pack_start(GTK_BOX(vbox1), label, TRUE, TRUE, 2); adj = gtk_adjustment_new(96, 0, 96, 1, 16, 0); mixer_adj[stream-1][1] = adj; - vscale = gtk_vscale_new(GTK_ADJUSTMENT(adj)); + vscale = gtk_scale_new(GTK_ORIENTATION_VERTICAL, adj); mixer_vscale[stream-1][1] = vscale; - gtk_widget_show(vscale); gtk_box_pack_start(GTK_BOX(hbox), vscale, TRUE, FALSE, 0); gtk_scale_set_value_pos(GTK_SCALE(vscale), GTK_POS_BOTTOM); gtk_scale_set_digits(GTK_SCALE(vscale), 0); - gtk_signal_connect(GTK_OBJECT(adj), "value_changed", - GTK_SIGNAL_FUNC(mixer_adjust), - (gpointer)(long)((stream << 16) + 1)); + g_signal_connect(adj, "value_changed", + G_CALLBACK(mixer_adjust), + (gpointer)(long)((stream << 16) + 1)); - hbox = gtk_hbox_new(TRUE, 0); - gtk_widget_show(hbox); + hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); + gtk_box_set_homogeneous(GTK_BOX(hbox), TRUE); gtk_box_pack_start(GTK_BOX(vbox), hbox, TRUE, FALSE, 0); label = gtk_label_new("Left"); - gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); - gtk_widget_show(label); + gtk_widget_set_halign(label, GTK_ALIGN_START); + gtk_widget_set_valign(label, GTK_ALIGN_CENTER); gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, TRUE, 0); label = gtk_label_new("Right"); - gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5); - gtk_widget_show(label); + gtk_widget_set_halign(label, GTK_ALIGN_END); + gtk_widget_set_valign(label, GTK_ALIGN_CENTER); gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, TRUE, 0); toggle = gtk_toggle_button_new_with_label("L/R Gang"); mixer_stereo_toggle[stream-1] = toggle; - gtk_widget_show(toggle); gtk_box_pack_end(GTK_BOX(vbox), toggle, FALSE, FALSE, 0); /* gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toggle), TRUE); */ - gtk_signal_connect(GTK_OBJECT(toggle), "toggled", - GTK_SIGNAL_FUNC(config_set_stereo), (gpointer)stream-1); + g_signal_connect(toggle, "toggled", + G_CALLBACK(config_set_stereo), GINT_TO_POINTER(stream-1)); - hbox = gtk_hbox_new(TRUE, 6); - gtk_widget_show(hbox); + hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 6); + gtk_box_set_homogeneous(GTK_BOX(hbox), TRUE); gtk_box_pack_end(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); toggle = gtk_toggle_button_new_with_label("Mute"); mixer_mute_toggle[stream-1][0] = toggle; - gtk_widget_show(toggle); gtk_box_pack_start(GTK_BOX(hbox), toggle, FALSE, TRUE, 0); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toggle), TRUE); - gtk_signal_connect(GTK_OBJECT(toggle), "toggled", - GTK_SIGNAL_FUNC(mixer_toggled_mute), - (gpointer)(long)((stream << 16) + 0)); + g_signal_connect(toggle, "toggled", + G_CALLBACK(mixer_toggled_mute), + (gpointer)(long)((stream << 16) + 0)); toggle = gtk_toggle_button_new_with_label("Mute"); mixer_mute_toggle[stream-1][1] = toggle; - gtk_widget_show(toggle); gtk_box_pack_start(GTK_BOX(hbox), toggle, FALSE, TRUE, 0); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toggle), TRUE); - gtk_signal_connect(GTK_OBJECT(toggle), "toggled", - GTK_SIGNAL_FUNC(mixer_toggled_mute), - (gpointer)(long)((stream << 16) + 1)); + g_signal_connect(toggle, "toggled", + G_CALLBACK(mixer_toggled_mute), + (gpointer)(long)((stream << 16) + 1)); } @@ -286,33 +273,27 @@ static void create_inputs_mixer(GtkWidget *main, GtkWidget *notebook, int page) int stream; - hbox = gtk_hbox_new(FALSE, 3); - gtk_widget_show(hbox); + hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 3); gtk_container_add(GTK_CONTAINER(notebook), hbox); label = gtk_label_new("Monitor Inputs"); - gtk_widget_show(label); gtk_notebook_set_tab_label(GTK_NOTEBOOK(notebook), gtk_notebook_get_nth_page(GTK_NOTEBOOK(notebook),page), label); /* build scrolling area */ scrolledwindow = gtk_scrolled_window_new(NULL, NULL); - gtk_widget_show(scrolledwindow); gtk_box_pack_start(GTK_BOX(hbox), scrolledwindow, TRUE, TRUE, 0); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolledwindow), GTK_POLICY_AUTOMATIC, GTK_POLICY_NEVER); viewport = gtk_viewport_new(NULL, NULL); - gtk_widget_show(viewport); gtk_container_add(GTK_CONTAINER(scrolledwindow), viewport); - vbox = gtk_vbox_new(FALSE, 0); - gtk_widget_show(vbox); + vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); gtk_container_add(GTK_CONTAINER(viewport), vbox); - hbox = gtk_hbox_new(FALSE, 0); - gtk_widget_show(hbox); + hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, TRUE, 0); for(stream = (MAX_PCM_OUTPUT_CHANNELS + MAX_SPDIF_CHANNELS + 1); \ @@ -337,33 +318,27 @@ static void create_pcms_mixer(GtkWidget *main, GtkWidget *notebook, int page) GtkWidget *viewport; int stream; - hbox = gtk_hbox_new(FALSE, 3); - gtk_widget_show(hbox); + hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 3); gtk_container_add(GTK_CONTAINER(notebook), hbox); label = gtk_label_new("Monitor PCMs"); - gtk_widget_show(label); gtk_notebook_set_tab_label(GTK_NOTEBOOK(notebook), gtk_notebook_get_nth_page(GTK_NOTEBOOK(notebook),page), label); /* build scrolling area */ scrolledwindow = gtk_scrolled_window_new(NULL, NULL); - gtk_widget_show(scrolledwindow); gtk_box_pack_start(GTK_BOX(hbox), scrolledwindow, TRUE, TRUE, 0); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolledwindow), GTK_POLICY_AUTOMATIC, GTK_POLICY_NEVER); viewport = gtk_viewport_new(NULL, NULL); - gtk_widget_show(viewport); gtk_container_add(GTK_CONTAINER(scrolledwindow), viewport); - vbox = gtk_vbox_new(FALSE, 0); - gtk_widget_show(vbox); + vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); gtk_container_add(GTK_CONTAINER(viewport), vbox); - hbox = gtk_hbox_new(FALSE, 0); - gtk_widget_show(hbox); + hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, TRUE, 0); for(stream = 1; stream <= pcm_output_channels; stream ++) { @@ -437,32 +412,28 @@ static void create_router_frame(GtkWidget *box, int stream, int pos) } frame = gtk_frame_new(str); - gtk_widget_show(frame); gtk_box_pack_start (GTK_BOX(box), frame, FALSE, FALSE, 0); gtk_container_set_border_width(GTK_CONTAINER(frame), 6); - vbox = gtk_vbox_new(TRUE, 0); - gtk_widget_show(vbox); + vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); + gtk_box_set_homogeneous(GTK_BOX(vbox), TRUE); gtk_container_add(GTK_CONTAINER(frame), vbox); gtk_container_set_border_width(GTK_CONTAINER(vbox), 6); radiobutton = gtk_radio_button_new_with_label(group, str1); router_radio[stream-1][0] = radiobutton; - group = gtk_radio_button_group(GTK_RADIO_BUTTON(radiobutton)); - gtk_widget_show(radiobutton); + group = gtk_radio_button_get_group(GTK_RADIO_BUTTON(radiobutton)); gtk_box_pack_start(GTK_BOX(vbox), radiobutton, FALSE, FALSE, 0); - gtk_signal_connect(GTK_OBJECT(radiobutton), "toggled", - (GtkSignalFunc)patchbay_toggled, - (gpointer)(long)((stream << 16) + 0)); + g_signal_connect(radiobutton, "toggled", + G_CALLBACK(patchbay_toggled), + (gpointer)(long)((stream << 16) + 0)); - hseparator = gtk_hseparator_new(); - gtk_widget_show(hseparator); - gtk_box_pack_start(GTK_BOX(vbox), hseparator, FALSE, TRUE, 0); + hseparator = gtk_separator_new(GTK_ORIENTATION_HORIZONTAL); + gtk_box_pack_start(GTK_BOX(vbox), hseparator, FALSE, FALSE, 0); label = gtk_label_new(""); - gtk_widget_show(label); /* the digital mixer can only be routed to HW1/2 or SPDIF1/2 */ if( (stream <= 2) /* hw1/2 */ || @@ -470,36 +441,32 @@ static void create_router_frame(GtkWidget *box, int stream, int pos) ) { radiobutton = gtk_radio_button_new_with_label(group, stream & 1 ? "Digital Mix L" : "Digital Mix R"); router_radio[stream-1][1] = radiobutton; - group = gtk_radio_button_group(GTK_RADIO_BUTTON(radiobutton)); - gtk_widget_show(radiobutton); + group = gtk_radio_button_get_group(GTK_RADIO_BUTTON(radiobutton)); gtk_box_pack_start(GTK_BOX(vbox), radiobutton, FALSE, FALSE, 0); - gtk_signal_connect(GTK_OBJECT(radiobutton), "toggled", - (GtkSignalFunc)patchbay_toggled, - (gpointer)(long)((stream << 16) + 1)); + g_signal_connect(radiobutton, "toggled", + G_CALLBACK(patchbay_toggled), + (gpointer)(long)((stream << 16) + 1)); } else { label = gtk_label_new(""); - gtk_widget_show(label); gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0); } - hseparator = gtk_hseparator_new(); - gtk_widget_show(hseparator); - gtk_box_pack_start(GTK_BOX(vbox), hseparator, FALSE, TRUE, 0); + hseparator = gtk_separator_new(GTK_ORIENTATION_HORIZONTAL); + gtk_box_pack_start(GTK_BOX(vbox), hseparator, FALSE, FALSE, 0); for(idx = 2 - spdif_channels; idx < input_channels + 2; idx++) { radiobutton = gtk_radio_button_new_with_label(group, table[idx]); router_radio[stream-1][2+idx] = radiobutton; - group = gtk_radio_button_group(GTK_RADIO_BUTTON(radiobutton)); - gtk_widget_show(radiobutton); + group = gtk_radio_button_get_group(GTK_RADIO_BUTTON(radiobutton)); gtk_box_pack_start(GTK_BOX(vbox), radiobutton, FALSE, FALSE, 0); - gtk_signal_connect(GTK_OBJECT(radiobutton), "toggled", - (GtkSignalFunc)patchbay_toggled, - (gpointer)(long)((stream << 16) + 2 + idx)); + g_signal_connect(radiobutton, "toggled", + G_CALLBACK(patchbay_toggled), + (gpointer)(long)((stream << 16) + 2 + idx)); } } @@ -512,23 +479,19 @@ static void create_router(GtkWidget *main, GtkWidget *notebook, int page) int stream, pos; scrolledwindow = gtk_scrolled_window_new(NULL, NULL); - gtk_widget_show(scrolledwindow); gtk_container_add(GTK_CONTAINER(notebook), scrolledwindow); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolledwindow), GTK_POLICY_AUTOMATIC, GTK_POLICY_NEVER); label = gtk_label_new("Patchbay / Router"); - gtk_widget_show(label); gtk_notebook_set_tab_label(GTK_NOTEBOOK(notebook), gtk_notebook_get_nth_page(GTK_NOTEBOOK(notebook), page), label); viewport = gtk_viewport_new(NULL, NULL); - gtk_widget_show(viewport); gtk_container_add(GTK_CONTAINER(scrolledwindow), viewport); - hbox = gtk_hbox_new(FALSE, 0); - gtk_widget_show(hbox); + hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); gtk_container_add(GTK_CONTAINER(viewport), hbox); pos = 0; @@ -551,85 +514,76 @@ static void create_master_clock(GtkWidget *box) GSList *group = NULL; frame = gtk_frame_new("Master Clock"); - gtk_widget_show(frame); gtk_box_pack_start(GTK_BOX(box), frame, FALSE, FALSE, 4); - vbox = gtk_vbox_new(FALSE, 0); - gtk_widget_show(vbox); + vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); gtk_container_add(GTK_CONTAINER(frame), vbox); gtk_container_set_border_width(GTK_CONTAINER(vbox), 6); radiobutton = gtk_radio_button_new_with_label(group, "Int 22050"); hw_master_clock_xtal_22050 = radiobutton; - group = gtk_radio_button_group(GTK_RADIO_BUTTON(radiobutton)); - gtk_widget_show(radiobutton); + group = gtk_radio_button_get_group(GTK_RADIO_BUTTON(radiobutton)); gtk_box_pack_start(GTK_BOX(vbox), radiobutton, FALSE, FALSE, 0); - gtk_signal_connect(GTK_OBJECT(radiobutton), "toggled", - (GtkSignalFunc)internal_clock_toggled, - (gpointer)"22050"); + g_signal_connect(radiobutton, "toggled", + G_CALLBACK(internal_clock_toggled), + (gpointer)"22050"); radiobutton = gtk_radio_button_new_with_label(group, "Int 32000"); hw_master_clock_xtal_32000 = radiobutton; - group = gtk_radio_button_group(GTK_RADIO_BUTTON(radiobutton)); - gtk_widget_show(radiobutton); + group = gtk_radio_button_get_group(GTK_RADIO_BUTTON(radiobutton)); gtk_box_pack_start(GTK_BOX(vbox), radiobutton, FALSE, FALSE, 0); - gtk_signal_connect(GTK_OBJECT(radiobutton), "toggled", - (GtkSignalFunc)internal_clock_toggled, - (gpointer)"32000"); + g_signal_connect(radiobutton, "toggled", + G_CALLBACK(internal_clock_toggled), + (gpointer)"32000"); radiobutton = gtk_radio_button_new_with_label(group, "Int 44100"); hw_master_clock_xtal_44100 = radiobutton; - group = gtk_radio_button_group(GTK_RADIO_BUTTON(radiobutton)); - gtk_widget_show(radiobutton); + group = gtk_radio_button_get_group(GTK_RADIO_BUTTON(radiobutton)); gtk_box_pack_start(GTK_BOX(vbox), radiobutton, FALSE, FALSE, 0); - gtk_signal_connect(GTK_OBJECT(radiobutton), "toggled", - (GtkSignalFunc)internal_clock_toggled, - (gpointer)"44100"); + g_signal_connect(radiobutton, "toggled", + G_CALLBACK(internal_clock_toggled), + (gpointer)"44100"); radiobutton = gtk_radio_button_new_with_label(group, "Int 48000"); hw_master_clock_xtal_48000 = radiobutton; - group = gtk_radio_button_group(GTK_RADIO_BUTTON(radiobutton)); - gtk_widget_show(radiobutton); + group = gtk_radio_button_get_group(GTK_RADIO_BUTTON(radiobutton)); gtk_box_pack_start(GTK_BOX(vbox), radiobutton, FALSE, FALSE, 0); - gtk_signal_connect(GTK_OBJECT(radiobutton), "toggled", - (GtkSignalFunc)internal_clock_toggled, - (gpointer)"48000"); + g_signal_connect(radiobutton, "toggled", + G_CALLBACK(internal_clock_toggled), + (gpointer)"48000"); radiobutton = gtk_radio_button_new_with_label(group, "Int 88200"); hw_master_clock_xtal_88200 = radiobutton; - group = gtk_radio_button_group(GTK_RADIO_BUTTON(radiobutton)); - gtk_widget_show(radiobutton); + group = gtk_radio_button_get_group(GTK_RADIO_BUTTON(radiobutton)); gtk_box_pack_start(GTK_BOX(vbox), radiobutton, FALSE, FALSE, 0); - gtk_signal_connect(GTK_OBJECT(radiobutton), "toggled", - (GtkSignalFunc)internal_clock_toggled, - (gpointer)"88200"); + g_signal_connect(radiobutton, "toggled", + G_CALLBACK(internal_clock_toggled), + (gpointer)"88200"); radiobutton = gtk_radio_button_new_with_label(group, "Int 96000"); hw_master_clock_xtal_96000 = radiobutton; - group = gtk_radio_button_group(GTK_RADIO_BUTTON(radiobutton)); - gtk_widget_show(radiobutton); + group = gtk_radio_button_get_group(GTK_RADIO_BUTTON(radiobutton)); gtk_box_pack_start(GTK_BOX(vbox), radiobutton, FALSE, FALSE, 0); - gtk_signal_connect(GTK_OBJECT(radiobutton), "toggled", - (GtkSignalFunc)internal_clock_toggled, - (gpointer)"96000"); + g_signal_connect(radiobutton, "toggled", + G_CALLBACK(internal_clock_toggled), + (gpointer)"96000"); radiobutton = gtk_radio_button_new_with_label(group, "S/PDIF In"); hw_master_clock_spdif_radio = radiobutton; - group = gtk_radio_button_group(GTK_RADIO_BUTTON(radiobutton)); - gtk_widget_show(radiobutton); + group = gtk_radio_button_get_group(GTK_RADIO_BUTTON(radiobutton)); gtk_box_pack_start(GTK_BOX(vbox), radiobutton, FALSE, FALSE, 0); - gtk_signal_connect(GTK_OBJECT(radiobutton), "toggled", - (GtkSignalFunc)internal_clock_toggled, - (gpointer)"SPDIF"); + g_signal_connect(radiobutton, "toggled", + G_CALLBACK(internal_clock_toggled), + (gpointer)"SPDIF"); @@ -639,16 +593,14 @@ static void create_master_clock(GtkWidget *box) radiobutton = gtk_radio_button_new_with_label(group, "Word Clock"); hw_master_clock_word_radio = radiobutton; - group = gtk_radio_button_group(GTK_RADIO_BUTTON(radiobutton)); - gtk_widget_show(radiobutton); + group = gtk_radio_button_get_group(GTK_RADIO_BUTTON(radiobutton)); gtk_box_pack_start(GTK_BOX(vbox), radiobutton, FALSE, FALSE, 0); - gtk_signal_connect(GTK_OBJECT(radiobutton), "toggled", - (GtkSignalFunc)internal_clock_toggled, - (gpointer)"WordClock"); + g_signal_connect(radiobutton, "toggled", + G_CALLBACK(internal_clock_toggled), + (gpointer)"WordClock"); label = gtk_label_new("Locked"); hw_master_clock_status_label = label; - gtk_widget_show(label); gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, TRUE, 0); } @@ -659,30 +611,27 @@ static void create_rate_state(GtkWidget *box) GtkWidget *check; frame = gtk_frame_new("Rate State"); - gtk_widget_show(frame); gtk_box_pack_start(GTK_BOX(box), frame, TRUE, TRUE, 0); - hbox = gtk_hbox_new(TRUE, 0); - gtk_widget_show(hbox); + hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); + gtk_box_set_homogeneous(GTK_BOX(hbox), TRUE); gtk_container_add(GTK_CONTAINER(frame), hbox); gtk_container_set_border_width(GTK_CONTAINER(hbox), 6); check = gtk_check_button_new_with_label("Locked"); hw_rate_locking_check = check; - gtk_widget_show(check); gtk_box_pack_start(GTK_BOX(hbox), check, FALSE, FALSE, 0); - gtk_signal_connect(GTK_OBJECT(check), "toggled", - (GtkSignalFunc)rate_locking_toggled, - (gpointer)"locked"); + g_signal_connect(check, "toggled", + G_CALLBACK(rate_locking_toggled), + (gpointer)"locked"); check = gtk_check_button_new_with_label("Reset"); hw_rate_reset_check = check; - gtk_widget_show(check); gtk_box_pack_start(GTK_BOX(hbox), check, FALSE, FALSE, 0); - gtk_signal_connect(GTK_OBJECT(check), "toggled", - (GtkSignalFunc)rate_reset_toggled, - (gpointer)"reset"); + g_signal_connect(check, "toggled", + G_CALLBACK(rate_reset_toggled), + (gpointer)"reset"); } @@ -692,47 +641,45 @@ static void create_actual_rate(GtkWidget *box) GtkWidget *label; frame = gtk_frame_new("Actual Rate"); - gtk_widget_show(frame); gtk_box_pack_start(GTK_BOX(box), frame, TRUE, TRUE, 0); label = gtk_label_new(""); hw_master_clock_actual_rate_label = label; - gtk_widget_show(label); gtk_container_add(GTK_CONTAINER(frame), label); gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_LEFT); - gtk_misc_set_padding(GTK_MISC(label), 6, 6); + gtk_widget_set_margin_start(label, 6); + gtk_widget_set_margin_end(label, 6); + gtk_widget_set_margin_top(label, 6); + gtk_widget_set_margin_bottom(label, 6); } static void create_volume_change(GtkWidget *box) { GtkWidget *frame; GtkWidget *hbox; - GtkObject *spinbutton_adj; + GtkAdjustment *spinbutton_adj; GtkWidget *spinbutton; GtkWidget *label; frame = gtk_frame_new("Volume Change"); - gtk_widget_show(frame); gtk_box_pack_start(GTK_BOX(box), frame, TRUE, TRUE, 0); - hbox = gtk_hbox_new(FALSE, 0); - gtk_widget_show(hbox); + hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); gtk_container_add(GTK_CONTAINER(frame), hbox); gtk_container_set_border_width(GTK_CONTAINER(hbox), 6); label = gtk_label_new("Rate"); - gtk_widget_show(label); gtk_box_pack_start(GTK_BOX(hbox), label, TRUE, FALSE, 0); gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_LEFT); - spinbutton_adj = gtk_adjustment_new(16, 0, 255, 1, 10, 10); + spinbutton_adj = gtk_adjustment_new(16, 0, 255, 1, 10, 0); hw_volume_change_adj = spinbutton_adj; - spinbutton = gtk_spin_button_new(GTK_ADJUSTMENT(spinbutton_adj), 1, 0); - gtk_widget_show(spinbutton); + spinbutton = gtk_spin_button_new(spinbutton_adj, 1, 0); gtk_box_pack_start(GTK_BOX(hbox), spinbutton, TRUE, FALSE, 0); + gtk_widget_set_valign(spinbutton, GTK_ALIGN_CENTER); gtk_spin_button_set_numeric(GTK_SPIN_BUTTON(spinbutton), TRUE); - gtk_signal_connect(GTK_OBJECT(spinbutton_adj), "value_changed", - GTK_SIGNAL_FUNC(volume_change_rate_adj), NULL); + g_signal_connect(spinbutton_adj, "value_changed", + G_CALLBACK(volume_change_rate_adj), NULL); } @@ -744,33 +691,29 @@ static void create_spdif_output_settings_profi_data(GtkWidget *box) GSList *group = NULL; frame = gtk_frame_new("Data Mode"); - gtk_widget_show(frame); gtk_box_pack_start(GTK_BOX(box), frame, FALSE, TRUE, 0); - vbox = gtk_vbox_new(FALSE, 0); - gtk_widget_show(vbox); + vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); gtk_container_add(GTK_CONTAINER(frame), vbox); gtk_container_set_border_width(GTK_CONTAINER(vbox), 6); radiobutton = gtk_radio_button_new_with_label(group, "Non-audio"); hw_spdif_profi_nonaudio_radio = radiobutton; - group = gtk_radio_button_group(GTK_RADIO_BUTTON(radiobutton)); - gtk_widget_show(radiobutton); + group = gtk_radio_button_get_group(GTK_RADIO_BUTTON(radiobutton)); gtk_box_pack_start(GTK_BOX(vbox), radiobutton, FALSE, FALSE, 0); - gtk_signal_connect(GTK_OBJECT(radiobutton), "toggled", - (GtkSignalFunc)profi_data_toggled, - (gpointer)"Non-audio"); + g_signal_connect(radiobutton, "toggled", + G_CALLBACK(profi_data_toggled), + (gpointer)"Non-audio"); radiobutton = gtk_radio_button_new_with_label(group, "Audio"); hw_spdif_profi_audio_radio = radiobutton; - group = gtk_radio_button_group(GTK_RADIO_BUTTON(radiobutton)); - gtk_widget_show(radiobutton); + group = gtk_radio_button_get_group(GTK_RADIO_BUTTON(radiobutton)); gtk_box_pack_start(GTK_BOX(vbox), radiobutton, FALSE, FALSE, 0); - gtk_signal_connect(GTK_OBJECT(radiobutton), "toggled", - (GtkSignalFunc)profi_data_toggled, - (gpointer)"Audio"); + g_signal_connect(radiobutton, "toggled", + G_CALLBACK(profi_data_toggled), + (gpointer)"Audio"); } static void create_spdif_output_settings_profi_stream(GtkWidget *box) @@ -781,32 +724,28 @@ static void create_spdif_output_settings_profi_stream(GtkWidget *box) GSList *group = NULL; frame = gtk_frame_new("Stream"); - gtk_widget_show(frame); gtk_box_pack_start(GTK_BOX(box), frame, FALSE, TRUE, 0); - vbox = gtk_vbox_new(FALSE, 0); - gtk_widget_show(vbox); + vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); gtk_container_add(GTK_CONTAINER(frame), vbox); gtk_container_set_border_width(GTK_CONTAINER(vbox), 6); radiobutton = gtk_radio_button_new_with_label(group, "Stereophonic"); hw_profi_stream_stereo_radio = radiobutton; - group = gtk_radio_button_group(GTK_RADIO_BUTTON(radiobutton)); - gtk_widget_show(radiobutton); + group = gtk_radio_button_get_group(GTK_RADIO_BUTTON(radiobutton)); gtk_box_pack_start(GTK_BOX(vbox), radiobutton, FALSE, FALSE, 0); - gtk_signal_connect(GTK_OBJECT(radiobutton), "toggled", - (GtkSignalFunc)profi_stream_toggled, - (gpointer)"Stereo"); + g_signal_connect(radiobutton, "toggled", + G_CALLBACK(profi_stream_toggled), + (gpointer)"Stereo"); radiobutton = gtk_radio_button_new_with_label(group, "Not indicated"); hw_profi_stream_notid_radio = radiobutton; - group = gtk_radio_button_group(GTK_RADIO_BUTTON(radiobutton)); - gtk_widget_show(radiobutton); + group = gtk_radio_button_get_group(GTK_RADIO_BUTTON(radiobutton)); gtk_box_pack_start(GTK_BOX(vbox), radiobutton, FALSE, FALSE, 0); - gtk_signal_connect(GTK_OBJECT(radiobutton), "toggled", - (GtkSignalFunc)profi_stream_toggled, - (gpointer)"NOTID"); + g_signal_connect(radiobutton, "toggled", + G_CALLBACK(profi_stream_toggled), + (gpointer)"NOTID"); } static void create_spdif_output_settings_profi_emphasis(GtkWidget *box) @@ -817,51 +756,45 @@ static void create_spdif_output_settings_profi_emphasis(GtkWidget *box) GSList *group = NULL; frame = gtk_frame_new("Emphasis"); - gtk_widget_show(frame); gtk_box_pack_start(GTK_BOX(box), frame, FALSE, TRUE, 0); - vbox = gtk_vbox_new(FALSE, 0); - gtk_widget_show(vbox); + vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); gtk_container_add(GTK_CONTAINER(frame), vbox); gtk_container_set_border_width(GTK_CONTAINER(vbox), 6); radiobutton = gtk_radio_button_new_with_label(group, "No emphasis"); hw_profi_emphasis_none_radio = radiobutton; - group = gtk_radio_button_group(GTK_RADIO_BUTTON(radiobutton)); - gtk_widget_show(radiobutton); + group = gtk_radio_button_get_group(GTK_RADIO_BUTTON(radiobutton)); gtk_box_pack_start(GTK_BOX(vbox), radiobutton, FALSE, FALSE, 0); - gtk_signal_connect(GTK_OBJECT(radiobutton), "toggled", - (GtkSignalFunc)profi_emphasis_toggled, - (gpointer)"No"); + g_signal_connect(radiobutton, "toggled", + G_CALLBACK(profi_emphasis_toggled), + (gpointer)"No"); radiobutton = gtk_radio_button_new_with_label(group, "50/15us"); hw_profi_emphasis_5015_radio = radiobutton; - group = gtk_radio_button_group(GTK_RADIO_BUTTON(radiobutton)); - gtk_widget_show(radiobutton); + group = gtk_radio_button_get_group(GTK_RADIO_BUTTON(radiobutton)); gtk_box_pack_start(GTK_BOX(vbox), radiobutton, FALSE, FALSE, 0); - gtk_signal_connect(GTK_OBJECT(radiobutton), "toggled", - (GtkSignalFunc)profi_emphasis_toggled, - (gpointer)"5015"); + g_signal_connect(radiobutton, "toggled", + G_CALLBACK(profi_emphasis_toggled), + (gpointer)"5015"); radiobutton = gtk_radio_button_new_with_label(group, "CCITT J.17"); hw_profi_emphasis_ccitt_radio = radiobutton; - group = gtk_radio_button_group(GTK_RADIO_BUTTON(radiobutton)); - gtk_widget_show(radiobutton); + group = gtk_radio_button_get_group(GTK_RADIO_BUTTON(radiobutton)); gtk_box_pack_start(GTK_BOX(vbox), radiobutton, FALSE, FALSE, 0); - gtk_signal_connect(GTK_OBJECT(radiobutton), "toggled", - (GtkSignalFunc)profi_emphasis_toggled, - (gpointer)"CCITT"); + g_signal_connect(radiobutton, "toggled", + G_CALLBACK(profi_emphasis_toggled), + (gpointer)"CCITT"); radiobutton = gtk_radio_button_new_with_label(group, "Not indicated"); hw_profi_emphasis_notid_radio = radiobutton; - group = gtk_radio_button_group(GTK_RADIO_BUTTON(radiobutton)); - gtk_widget_show(radiobutton); + group = gtk_radio_button_get_group(GTK_RADIO_BUTTON(radiobutton)); gtk_box_pack_start(GTK_BOX(vbox), radiobutton, FALSE, FALSE, 0); - gtk_signal_connect(GTK_OBJECT(radiobutton), "toggled", - (GtkSignalFunc)profi_emphasis_toggled, - (gpointer)"NOTID"); + g_signal_connect(radiobutton, "toggled", + G_CALLBACK(profi_emphasis_toggled), + (gpointer)"NOTID"); } static void create_spdif_output_settings_profi(GtkWidget *notebook, int page) @@ -870,26 +803,22 @@ static void create_spdif_output_settings_profi(GtkWidget *notebook, int page) GtkWidget *vbox; GtkWidget *label; - hbox = gtk_hbox_new(FALSE, 0); - gtk_widget_show(hbox); + hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); gtk_container_add(GTK_CONTAINER(notebook), hbox); label = gtk_label_new("Professional"); - gtk_widget_show(label); gtk_notebook_set_tab_label(GTK_NOTEBOOK(notebook), gtk_notebook_get_nth_page(GTK_NOTEBOOK(notebook), page), label); - vbox = gtk_vbox_new(FALSE, 0); - gtk_widget_show(vbox); + vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); gtk_box_pack_start(GTK_BOX(hbox), vbox, FALSE, TRUE, 0); gtk_container_set_border_width(GTK_CONTAINER(vbox), 6); create_spdif_output_settings_profi_data(vbox); create_spdif_output_settings_profi_stream(vbox); - vbox = gtk_vbox_new(FALSE, 0); - gtk_widget_show(vbox); + vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); gtk_box_pack_start(GTK_BOX(hbox), vbox, FALSE, TRUE, 0); gtk_container_set_border_width(GTK_CONTAINER(vbox), 6); @@ -904,32 +833,28 @@ static void create_spdif_output_settings_consumer_copyright(GtkWidget *box) GSList *group = NULL; frame = gtk_frame_new("Copyright"); - gtk_widget_show(frame); gtk_box_pack_start(GTK_BOX(box), frame, FALSE, TRUE, 0); - vbox = gtk_vbox_new(FALSE, 0); - gtk_widget_show(vbox); + vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); gtk_container_add(GTK_CONTAINER(frame), vbox); gtk_container_set_border_width(GTK_CONTAINER(vbox), 6); radiobutton = gtk_radio_button_new_with_label(group, "Copyrighted"); hw_consumer_copyright_on_radio = radiobutton; - group = gtk_radio_button_group(GTK_RADIO_BUTTON(radiobutton)); - gtk_widget_show(radiobutton); + group = gtk_radio_button_get_group(GTK_RADIO_BUTTON(radiobutton)); gtk_box_pack_start(GTK_BOX(vbox), radiobutton, FALSE, FALSE, 0); - gtk_signal_connect(GTK_OBJECT(radiobutton), "toggled", - (GtkSignalFunc)consumer_copyright_toggled, - (gpointer)"Copyright"); + g_signal_connect(radiobutton, "toggled", + G_CALLBACK(consumer_copyright_toggled), + (gpointer)"Copyright"); radiobutton = gtk_radio_button_new_with_label(group, "Copy permitted"); hw_consumer_copyright_off_radio = radiobutton; - group = gtk_radio_button_group(GTK_RADIO_BUTTON(radiobutton)); - gtk_widget_show(radiobutton); + group = gtk_radio_button_get_group(GTK_RADIO_BUTTON(radiobutton)); gtk_box_pack_start(GTK_BOX(vbox), radiobutton, FALSE, FALSE, 0); - gtk_signal_connect(GTK_OBJECT(radiobutton), "toggled", - (GtkSignalFunc)consumer_copyright_toggled, - (gpointer)"Permitted"); + g_signal_connect(radiobutton, "toggled", + G_CALLBACK(consumer_copyright_toggled), + (gpointer)"Permitted"); } static void create_spdif_output_settings_consumer_copy(GtkWidget *box) @@ -940,32 +865,28 @@ static void create_spdif_output_settings_consumer_copy(GtkWidget *box) GSList *group = NULL; frame = gtk_frame_new("Copy"); - gtk_widget_show(frame); gtk_box_pack_start(GTK_BOX(box), frame, FALSE, TRUE, 0); - vbox = gtk_vbox_new(FALSE, 0); - gtk_widget_show(vbox); + vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); gtk_container_add(GTK_CONTAINER(frame), vbox); gtk_container_set_border_width(GTK_CONTAINER(vbox), 6); radiobutton = gtk_radio_button_new_with_label(group, "1-st generation"); hw_consumer_copy_1st_radio = radiobutton; - group = gtk_radio_button_group(GTK_RADIO_BUTTON(radiobutton)); - gtk_widget_show(radiobutton); + group = gtk_radio_button_get_group(GTK_RADIO_BUTTON(radiobutton)); gtk_box_pack_start(GTK_BOX(vbox), radiobutton, FALSE, FALSE, 0); - gtk_signal_connect(GTK_OBJECT(radiobutton), "toggled", - (GtkSignalFunc)consumer_copy_toggled, - (gpointer)"1st"); + g_signal_connect(radiobutton, "toggled", + G_CALLBACK(consumer_copy_toggled), + (gpointer)"1st"); radiobutton = gtk_radio_button_new_with_label(group, "Original"); hw_consumer_copy_original_radio = radiobutton; - group = gtk_radio_button_group(GTK_RADIO_BUTTON(radiobutton)); - gtk_widget_show(radiobutton); + group = gtk_radio_button_get_group(GTK_RADIO_BUTTON(radiobutton)); gtk_box_pack_start(GTK_BOX(vbox), radiobutton, FALSE, FALSE, 0); - gtk_signal_connect(GTK_OBJECT(radiobutton), "toggled", - (GtkSignalFunc)consumer_copy_toggled, - (gpointer)"Original"); + g_signal_connect(radiobutton, "toggled", + G_CALLBACK(consumer_copy_toggled), + (gpointer)"Original"); } static void create_spdif_output_settings_consumer_emphasis(GtkWidget *box) @@ -976,31 +897,27 @@ static void create_spdif_output_settings_consumer_emphasis(GtkWidget *box) GSList *group = NULL; frame = gtk_frame_new("Emphasis"); - gtk_widget_show(frame); gtk_box_pack_start(GTK_BOX(box), frame, FALSE, TRUE, 0); - vbox = gtk_vbox_new(FALSE, 0); - gtk_widget_show(vbox); + vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); gtk_container_add(GTK_CONTAINER(frame), vbox); gtk_container_set_border_width(GTK_CONTAINER(vbox), 6); radiobutton = gtk_radio_button_new_with_label(group, "No emphasis"); hw_consumer_emphasis_none_radio = radiobutton; - group = gtk_radio_button_group(GTK_RADIO_BUTTON(radiobutton)); - gtk_widget_show(radiobutton); + group = gtk_radio_button_get_group(GTK_RADIO_BUTTON(radiobutton)); gtk_box_pack_start(GTK_BOX(vbox), radiobutton, FALSE, FALSE, 0); - gtk_signal_connect(GTK_OBJECT(radiobutton), "toggled", - (GtkSignalFunc)consumer_emphasis_toggled, - (gpointer)"No"); + g_signal_connect(radiobutton, "toggled", + G_CALLBACK(consumer_emphasis_toggled), + (gpointer)"No"); radiobutton = gtk_radio_button_new_with_label(group, "50/15us"); hw_consumer_emphasis_5015_radio = radiobutton; - group = gtk_radio_button_group(GTK_RADIO_BUTTON(radiobutton)); - gtk_widget_show(radiobutton); + group = gtk_radio_button_get_group(GTK_RADIO_BUTTON(radiobutton)); gtk_box_pack_start(GTK_BOX(vbox), radiobutton, FALSE, FALSE, 0); - gtk_signal_connect(GTK_OBJECT(radiobutton), "toggled", - (GtkSignalFunc)consumer_emphasis_toggled, - (gpointer)"5015"); + g_signal_connect(radiobutton, "toggled", + G_CALLBACK(consumer_emphasis_toggled), + (gpointer)"5015"); } static void create_spdif_output_settings_consumer_category(GtkWidget *box) @@ -1011,49 +928,43 @@ static void create_spdif_output_settings_consumer_category(GtkWidget *box) GSList *group = NULL; frame = gtk_frame_new("Category"); - gtk_widget_show(frame); gtk_box_pack_start(GTK_BOX(box), frame, FALSE, TRUE, 0); - vbox = gtk_vbox_new(FALSE, 0); - gtk_widget_show(vbox); + vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); gtk_container_add(GTK_CONTAINER(frame), vbox); gtk_container_set_border_width(GTK_CONTAINER(vbox), 6); radiobutton = gtk_radio_button_new_with_label(group, "DAT"); hw_consumer_category_dat_radio = radiobutton; - group = gtk_radio_button_group(GTK_RADIO_BUTTON(radiobutton)); - gtk_widget_show(radiobutton); + group = gtk_radio_button_get_group(GTK_RADIO_BUTTON(radiobutton)); gtk_box_pack_start(GTK_BOX(vbox), radiobutton, FALSE, FALSE, 0); - gtk_signal_connect(GTK_OBJECT(radiobutton), "toggled", - (GtkSignalFunc)consumer_category_toggled, - (gpointer)"DAT"); + g_signal_connect(radiobutton, "toggled", + G_CALLBACK(consumer_category_toggled), + (gpointer)"DAT"); radiobutton = gtk_radio_button_new_with_label(group, "PCM encoder"); hw_consumer_category_pcm_radio = radiobutton; - group = gtk_radio_button_group(GTK_RADIO_BUTTON(radiobutton)); - gtk_widget_show(radiobutton); + group = gtk_radio_button_get_group(GTK_RADIO_BUTTON(radiobutton)); gtk_box_pack_start(GTK_BOX(vbox), radiobutton, FALSE, FALSE, 0); - gtk_signal_connect(GTK_OBJECT(radiobutton), "toggled", - (GtkSignalFunc)consumer_category_toggled, - (gpointer)"PCM"); + g_signal_connect(G_OBJECT(radiobutton), "toggled", + G_CALLBACK(consumer_category_toggled), + (gpointer)"PCM"); radiobutton = gtk_radio_button_new_with_label(group, "CD (ICE-908)"); hw_consumer_category_cd_radio = radiobutton; - group = gtk_radio_button_group(GTK_RADIO_BUTTON(radiobutton)); - gtk_widget_show(radiobutton); + group = gtk_radio_button_get_group(GTK_RADIO_BUTTON(radiobutton)); gtk_box_pack_start(GTK_BOX(vbox), radiobutton, FALSE, FALSE, 0); - gtk_signal_connect(GTK_OBJECT(radiobutton), "toggled", - (GtkSignalFunc)consumer_category_toggled, - (gpointer)"CD"); + g_signal_connect(G_OBJECT(radiobutton), "toggled", + G_CALLBACK(consumer_category_toggled), + (gpointer)"CD"); radiobutton = gtk_radio_button_new_with_label(group, "General"); hw_consumer_category_general_radio = radiobutton; - group = gtk_radio_button_group(GTK_RADIO_BUTTON(radiobutton)); - gtk_widget_show(radiobutton); + group = gtk_radio_button_get_group(GTK_RADIO_BUTTON(radiobutton)); gtk_box_pack_start(GTK_BOX(vbox), radiobutton, FALSE, FALSE, 0); - gtk_signal_connect(GTK_OBJECT(radiobutton), "toggled", - (GtkSignalFunc)consumer_category_toggled, - (gpointer)"General"); + g_signal_connect(G_OBJECT(radiobutton), "toggled", + G_CALLBACK(consumer_category_toggled), + (gpointer)"General"); } static void create_spdif_output_settings_consumer(GtkWidget *notebook, int page) @@ -1062,34 +973,29 @@ static void create_spdif_output_settings_consumer(GtkWidget *notebook, int page) GtkWidget *hbox; GtkWidget *label; - hbox = gtk_hbox_new(FALSE, 0); - gtk_widget_show(hbox); + hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); gtk_container_add(GTK_CONTAINER(notebook), hbox); gtk_container_set_border_width(GTK_CONTAINER(hbox), 6); label = gtk_label_new("Consumer"); - gtk_widget_show(label); gtk_notebook_set_tab_label(GTK_NOTEBOOK(notebook), gtk_notebook_get_nth_page(GTK_NOTEBOOK(notebook), page), label); - vbox = gtk_vbox_new(FALSE, 0); - gtk_widget_show(vbox); + vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); gtk_box_pack_start(GTK_BOX(hbox), vbox, FALSE, TRUE, 0); gtk_container_set_border_width(GTK_CONTAINER(vbox), 6); create_spdif_output_settings_consumer_copyright(vbox); create_spdif_output_settings_consumer_copy(vbox); - vbox = gtk_vbox_new(FALSE, 0); - gtk_widget_show(vbox); + vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); gtk_box_pack_start(GTK_BOX(hbox), vbox, FALSE, TRUE, 0); gtk_container_set_border_width(GTK_CONTAINER(vbox), 6); create_spdif_output_settings_consumer_emphasis(vbox); - vbox = gtk_vbox_new(FALSE, 0); - gtk_widget_show(vbox); + vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); gtk_box_pack_start(GTK_BOX(hbox), vbox, FALSE, TRUE, 0); gtk_container_set_border_width(GTK_CONTAINER(vbox), 6); @@ -1106,44 +1012,38 @@ static void create_spdif_output_settings(GtkWidget *box) GSList *group = NULL; frame = gtk_frame_new("S/PDIF Output Settings"); - gtk_widget_show(frame); gtk_box_pack_start(GTK_BOX(box), frame, TRUE, TRUE, 0); gtk_container_set_border_width(GTK_CONTAINER(frame), 6); - vbox = gtk_vbox_new(FALSE, 0); - gtk_widget_show(vbox); + vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); gtk_container_add(GTK_CONTAINER(frame), vbox); gtk_container_set_border_width(GTK_CONTAINER(vbox), 6); - hbox = gtk_hbox_new(FALSE, 0); - gtk_widget_show(hbox); + hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, TRUE, 0); radiobutton = gtk_radio_button_new_with_label(NULL, "Professional"); hw_spdif_professional_radio = radiobutton; - group = gtk_radio_button_group(GTK_RADIO_BUTTON(radiobutton)); - gtk_widget_show(radiobutton); + group = gtk_radio_button_get_group(GTK_RADIO_BUTTON(radiobutton)); gtk_box_pack_start(GTK_BOX(hbox), radiobutton, FALSE, FALSE, 0); gtk_container_set_border_width(GTK_CONTAINER(radiobutton), 6); - gtk_signal_connect(GTK_OBJECT(radiobutton), "toggled", - (GtkSignalFunc)spdif_output_toggled, - (gpointer)"Professional"); + g_signal_connect(radiobutton, "toggled", + G_CALLBACK(spdif_output_toggled), + (gpointer)"Professional"); radiobutton = gtk_radio_button_new_with_label(group, "Consumer"); hw_spdif_consumer_radio = radiobutton; - group = gtk_radio_button_group(GTK_RADIO_BUTTON(radiobutton)); - gtk_widget_show(radiobutton); + group = gtk_radio_button_get_group(GTK_RADIO_BUTTON(radiobutton)); gtk_box_pack_start(GTK_BOX(hbox), radiobutton, FALSE, FALSE, 0); gtk_container_set_border_width(GTK_CONTAINER(radiobutton), 6); - gtk_signal_connect(GTK_OBJECT(radiobutton), "toggled", - (GtkSignalFunc)spdif_output_toggled, - (gpointer)"Consumer"); + g_signal_connect(radiobutton, "toggled", + G_CALLBACK(spdif_output_toggled), + (gpointer)"Consumer"); notebook = gtk_notebook_new(); hw_spdif_output_notebook = notebook; - gtk_widget_show(notebook); gtk_box_pack_start(GTK_BOX(vbox), notebook, TRUE, TRUE, 0); @@ -1157,51 +1057,40 @@ static void create_spdif_input_select(GtkWidget *box) GtkWidget *vbox; GtkWidget *radiobutton; GSList *group = NULL; - int hide = 1; - - if((card_eeprom.subvendor == ICE1712_SUBDEVICE_DELTADIO2496) || (card_is_dmx6fire)) - hide = 0; frame = gtk_frame_new("Digital Input"); - gtk_widget_show(frame); gtk_box_pack_start(GTK_BOX(box), frame, FALSE, TRUE, 0); gtk_container_set_border_width(GTK_CONTAINER(frame), 6); - vbox = gtk_vbox_new(FALSE, 0); - gtk_widget_show(vbox); + vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); gtk_container_add(GTK_CONTAINER(frame), vbox); gtk_container_set_border_width(GTK_CONTAINER(vbox), 6); radiobutton = gtk_radio_button_new_with_label(group, "Coaxial"); hw_spdif_input_coaxial_radio = radiobutton; - group = gtk_radio_button_group(GTK_RADIO_BUTTON(radiobutton)); - gtk_widget_show(radiobutton); + group = gtk_radio_button_get_group(GTK_RADIO_BUTTON(radiobutton)); gtk_box_pack_start(GTK_BOX(vbox), radiobutton, FALSE, FALSE, 0); - gtk_signal_connect(GTK_OBJECT(radiobutton), "toggled", - (GtkSignalFunc)spdif_input_toggled, - (gpointer)"Coaxial"); + g_signal_connect(radiobutton, "toggled", + G_CALLBACK(spdif_input_toggled), + (gpointer)"Coaxial"); radiobutton = gtk_radio_button_new_with_label(group, "Optical"); hw_spdif_input_optical_radio = radiobutton; - group = gtk_radio_button_group(GTK_RADIO_BUTTON(radiobutton)); - gtk_widget_show(radiobutton); + group = gtk_radio_button_get_group(GTK_RADIO_BUTTON(radiobutton)); gtk_box_pack_start(GTK_BOX(vbox), radiobutton, FALSE, FALSE, 0); - gtk_signal_connect(GTK_OBJECT(radiobutton), "toggled", - (GtkSignalFunc)spdif_input_toggled, - (gpointer)"Optical"); + g_signal_connect(radiobutton, "toggled", + G_CALLBACK(spdif_input_toggled), + (gpointer)"Optical"); - radiobutton = gtk_radio_button_new_with_label(group, "Internal CD"); - hw_spdif_switch_off_radio = radiobutton; - group = gtk_radio_button_group(GTK_RADIO_BUTTON(radiobutton)); - if(card_is_dmx6fire) - gtk_widget_show(radiobutton); - gtk_box_pack_start(GTK_BOX(vbox), radiobutton, FALSE, FALSE, 0); - gtk_signal_connect(GTK_OBJECT(radiobutton), "toggled", - (GtkSignalFunc)spdif_input_toggled, - (gpointer)"Off"); - - if(hide) - gtk_widget_hide_all(frame); + if (card_is_dmx6fire) { + radiobutton = gtk_radio_button_new_with_label(group, "Internal CD"); + hw_spdif_switch_off_radio = radiobutton; + group = gtk_radio_button_get_group(GTK_RADIO_BUTTON(radiobutton)); + gtk_box_pack_start(GTK_BOX(vbox), radiobutton, FALSE, FALSE, 0); + g_signal_connect(radiobutton, "toggled", + G_CALLBACK(spdif_input_toggled), + (gpointer)"Off"); + } } @@ -1211,41 +1100,30 @@ static void create_phono_input(GtkWidget *box) GtkWidget *vbox; GtkWidget *radiobutton; GSList *group = NULL; - int hide = 1; - - if(card_is_dmx6fire) - hide = 0; frame = gtk_frame_new("Phono Input Switch"); - gtk_widget_show(frame); gtk_box_pack_start(GTK_BOX(box), frame, FALSE, TRUE, 7); gtk_container_set_border_width(GTK_CONTAINER(frame), 6); - vbox = gtk_vbox_new(FALSE, 0); - gtk_widget_show(vbox); + vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); gtk_container_add(GTK_CONTAINER(frame), vbox); gtk_container_set_border_width(GTK_CONTAINER(vbox), 6); radiobutton = gtk_radio_button_new_with_label(group, "Phono"); hw_phono_input_on_radio = radiobutton; - group = gtk_radio_button_group(GTK_RADIO_BUTTON(radiobutton)); - gtk_widget_show(radiobutton); + group = gtk_radio_button_get_group(GTK_RADIO_BUTTON(radiobutton)); gtk_box_pack_start(GTK_BOX(vbox), radiobutton, FALSE, FALSE, 0); - gtk_signal_connect(GTK_OBJECT(radiobutton), "toggled", - (GtkSignalFunc)phono_input_toggled, - (gpointer)"Phono"); + g_signal_connect(radiobutton, "toggled", + G_CALLBACK(phono_input_toggled), + (gpointer)"Phono"); radiobutton = gtk_radio_button_new_with_label(group, "Mic"); hw_phono_input_off_radio = radiobutton; - group = gtk_radio_button_group(GTK_RADIO_BUTTON(radiobutton)); - gtk_widget_show(radiobutton); + group = gtk_radio_button_get_group(GTK_RADIO_BUTTON(radiobutton)); gtk_box_pack_start(GTK_BOX(vbox), radiobutton, FALSE, FALSE, 0); - gtk_signal_connect(GTK_OBJECT(radiobutton), "toggled", - (GtkSignalFunc)phono_input_toggled, - (gpointer)"Mic"); - - if(hide) - gtk_widget_hide_all(frame); + g_signal_connect(radiobutton, "toggled", + G_CALLBACK(phono_input_toggled), + (gpointer)"Mic"); } static void create_input_interface(GtkWidget *box) @@ -1254,59 +1132,46 @@ static void create_input_interface(GtkWidget *box) GtkWidget *vbox; GtkWidget *radiobutton; GSList *group = NULL; - int hide = 1; - - if (card_is_dmx6fire) - hide = 0; frame = gtk_frame_new("Line In Selector"); - gtk_widget_show(frame); gtk_box_pack_start(GTK_BOX(box), frame, FALSE, TRUE, 4); //gtk_container_set_border_width(GTK_CONTAINER(frame), 6); - vbox = gtk_vbox_new(FALSE, 0); - gtk_widget_show(vbox); + vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); gtk_container_add(GTK_CONTAINER(frame), vbox); gtk_container_set_border_width(GTK_CONTAINER(vbox), 6); radiobutton = gtk_radio_button_new_with_label(group, "Internal"); input_interface_internal = radiobutton; - group = gtk_radio_button_group(GTK_RADIO_BUTTON(radiobutton)); - gtk_widget_show(radiobutton); + group = gtk_radio_button_get_group(GTK_RADIO_BUTTON(radiobutton)); gtk_box_pack_start(GTK_BOX(vbox), radiobutton, FALSE, FALSE, 0); - gtk_signal_connect(GTK_OBJECT(radiobutton), "toggled", - (GtkSignalFunc)analog_input_select_toggled, - (gpointer)"Internal"); + g_signal_connect(radiobutton, "toggled", + G_CALLBACK(analog_input_select_toggled), + (gpointer)"Internal"); radiobutton = gtk_radio_button_new_with_label(group, "Front Input"); input_interface_front_input = radiobutton; - group = gtk_radio_button_group(GTK_RADIO_BUTTON(radiobutton)); - gtk_widget_show(radiobutton); + group = gtk_radio_button_get_group(GTK_RADIO_BUTTON(radiobutton)); gtk_box_pack_start(GTK_BOX(vbox), radiobutton, FALSE, FALSE, 0); - gtk_signal_connect(GTK_OBJECT(radiobutton), "toggled", - (GtkSignalFunc)analog_input_select_toggled, - (gpointer)"Front Input"); + g_signal_connect(radiobutton, "toggled", + G_CALLBACK(analog_input_select_toggled), + (gpointer)"Front Input"); radiobutton = gtk_radio_button_new_with_label(group, "Rear Input"); input_interface_rear_input = radiobutton; - group = gtk_radio_button_group(GTK_RADIO_BUTTON(radiobutton)); - gtk_widget_show(radiobutton); + group = gtk_radio_button_get_group(GTK_RADIO_BUTTON(radiobutton)); gtk_box_pack_start(GTK_BOX(vbox), radiobutton, FALSE, FALSE, 0); - gtk_signal_connect(GTK_OBJECT(radiobutton), "toggled", - (GtkSignalFunc)analog_input_select_toggled, - (gpointer)"Rear Input"); + g_signal_connect(radiobutton, "toggled", + G_CALLBACK(analog_input_select_toggled), + (gpointer)"Rear Input"); radiobutton = gtk_radio_button_new_with_label(group, "Wavetable"); input_interface_wavetable = radiobutton; - group = gtk_radio_button_group(GTK_RADIO_BUTTON(radiobutton)); - gtk_widget_show(radiobutton); + group = gtk_radio_button_get_group(GTK_RADIO_BUTTON(radiobutton)); gtk_box_pack_start(GTK_BOX(vbox), radiobutton, FALSE, FALSE, 0); - gtk_signal_connect(GTK_OBJECT(radiobutton), "toggled", - (GtkSignalFunc)analog_input_select_toggled, - (gpointer)"Wave Table"); - - if(hide) - gtk_widget_hide_all(frame); + g_signal_connect(radiobutton, "toggled", + G_CALLBACK(analog_input_select_toggled), + (gpointer)"Wave Table"); } static void create_hardware(GtkWidget *main, GtkWidget *notebook, int page) @@ -1321,61 +1186,55 @@ static void create_hardware(GtkWidget *main, GtkWidget *notebook, int page) GtkWidget *viewport; GtkWidget *hseparator; - hbox = gtk_hbox_new(FALSE, 0); - gtk_widget_show(hbox); + hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); gtk_container_add(GTK_CONTAINER(notebook), hbox); label = gtk_label_new("Hardware Settings"); - gtk_widget_show(label); gtk_notebook_set_tab_label(GTK_NOTEBOOK(notebook), gtk_notebook_get_nth_page(GTK_NOTEBOOK(notebook), page), label); /* Build scrolling area */ scrolledwindow = gtk_scrolled_window_new(NULL, NULL); - gtk_widget_show(scrolledwindow); gtk_box_pack_start(GTK_BOX(hbox), scrolledwindow, TRUE, TRUE, 0); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolledwindow), GTK_POLICY_AUTOMATIC, GTK_POLICY_NEVER); viewport = gtk_viewport_new(NULL, NULL); - gtk_widget_show(viewport); gtk_container_add(GTK_CONTAINER(scrolledwindow), viewport); /* Outer box */ - hbox = gtk_hbox_new(FALSE, 0); - gtk_widget_show(hbox); + hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); gtk_container_add(GTK_CONTAINER(viewport), hbox); /* Create boxes for controls */ - vbox = gtk_vbox_new(FALSE, 0); - gtk_widget_show(vbox); + vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); gtk_box_pack_start(GTK_BOX(hbox), vbox, FALSE, FALSE, 6); - hbox1 = gtk_hbox_new(FALSE, 0); - gtk_widget_show(hbox1); + hbox1 = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); gtk_box_pack_start(GTK_BOX(vbox), hbox1, FALSE, FALSE, 0); - hseparator = gtk_hseparator_new(); - gtk_widget_show(hseparator); + hseparator = gtk_separator_new(GTK_ORIENTATION_HORIZONTAL); gtk_box_pack_start(GTK_BOX(vbox), hseparator, FALSE, FALSE, 2); - hbox2 = gtk_hbox_new(FALSE, 0); - gtk_widget_show(hbox2); + hbox2 = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); gtk_box_pack_start(GTK_BOX(vbox), hbox2, FALSE, FALSE, 0); create_master_clock(hbox1); - vbox1 = gtk_vbox_new(FALSE, 0); - gtk_widget_show(vbox1); + vbox1 = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); gtk_box_pack_start(GTK_BOX(hbox1), vbox1, FALSE, FALSE, 20); create_rate_state(vbox1); create_actual_rate(vbox1); create_volume_change(vbox1); - create_input_interface(hbox2); - create_phono_input(hbox2); - create_spdif_input_select(hbox2); + if (card_is_dmx6fire) { + create_input_interface(hbox2); + create_phono_input(hbox2); + } + if ((card_eeprom.subvendor == ICE1712_SUBDEVICE_DELTADIO2496) || (card_is_dmx6fire)) { + create_spdif_input_select(hbox2); + } create_spdif_output_settings(hbox); } @@ -1387,57 +1246,47 @@ static void create_about(GtkWidget *main, GtkWidget *notebook, int page) GtkWidget *scrolledwindow; GtkWidget *viewport; - hbox = gtk_hbox_new(FALSE, 0); - gtk_widget_show(hbox); + hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); gtk_container_add(GTK_CONTAINER(notebook), hbox); label = gtk_label_new("About"); - gtk_widget_show(label); gtk_notebook_set_tab_label(GTK_NOTEBOOK(notebook), gtk_notebook_get_nth_page(GTK_NOTEBOOK(notebook), page), label); /* build scrolling area */ scrolledwindow = gtk_scrolled_window_new(NULL, NULL); - gtk_widget_show(scrolledwindow); gtk_box_pack_start(GTK_BOX(hbox), scrolledwindow, TRUE, TRUE, 0); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolledwindow), GTK_POLICY_AUTOMATIC, GTK_POLICY_NEVER); viewport = gtk_viewport_new(NULL, NULL); - gtk_widget_show(viewport); gtk_container_add(GTK_CONTAINER(scrolledwindow), viewport); - vbox = gtk_vbox_new(FALSE, 0); - gtk_widget_show(vbox); + vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); gtk_container_add(GTK_CONTAINER(viewport), vbox); gtk_container_set_border_width(GTK_CONTAINER(vbox), 6); /* Create text as labels */ label = gtk_label_new(""); - gtk_widget_show(label); gtk_box_pack_start(GTK_BOX(vbox), label, TRUE, TRUE, 6); /* create first line */ label = gtk_label_new("Envy24 Control Utility " VERSION); - gtk_widget_show(label); gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, TRUE, 6); /* create second line */ label = gtk_label_new("A GTK Tool for Envy24 PCI Audio Chip"); - gtk_widget_show(label); gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, TRUE, 6); /* create third line */ label = gtk_label_new("Copyright(c) 2000 by Jaroslav Kysela "); - gtk_widget_show(label); gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, TRUE, 6); label = gtk_label_new(""); - gtk_widget_show(label); gtk_box_pack_start(GTK_BOX(vbox), label, TRUE, TRUE, 6); } @@ -1447,7 +1296,7 @@ static void create_analog_volume(GtkWidget *main, GtkWidget *notebook, int page) GtkWidget *hbox; GtkWidget *vbox; GtkWidget *frame; - GtkObject *adj; + GtkAdjustment *adj; GtkWidget *vscale; GtkWidget *radiobutton; GSList *group; @@ -1473,11 +1322,9 @@ static void create_analog_volume(GtkWidget *main, GtkWidget *notebook, int page) scrolledwindow = gtk_scrolled_window_new(NULL, NULL); - gtk_widget_show(scrolledwindow); gtk_container_add(GTK_CONTAINER(notebook), scrolledwindow); label = gtk_label_new("Analog Volume"); - gtk_widget_show(label); gtk_notebook_set_tab_label(GTK_NOTEBOOK(notebook), gtk_notebook_get_nth_page(GTK_NOTEBOOK(notebook), page), label); @@ -1485,11 +1332,9 @@ static void create_analog_volume(GtkWidget *main, GtkWidget *notebook, int page) gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolledwindow), GTK_POLICY_AUTOMATIC, GTK_POLICY_NEVER); viewport = gtk_viewport_new(NULL, NULL); - gtk_widget_show(viewport); gtk_container_add(GTK_CONTAINER(scrolledwindow), viewport); - hbox = gtk_hbox_new(FALSE, 0); - gtk_widget_show(hbox); + hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); gtk_container_add(GTK_CONTAINER(viewport), hbox); /* create DAC */ @@ -1497,37 +1342,32 @@ static void create_analog_volume(GtkWidget *main, GtkWidget *notebook, int page) char name[32]; sprintf(name, "DAC %d", i); frame = gtk_frame_new(name); - gtk_widget_show(frame); //gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_IN); gtk_box_pack_start(GTK_BOX(hbox), frame, FALSE, TRUE, 0); gtk_container_set_border_width(GTK_CONTAINER(frame), 6); - vbox = gtk_vbox_new(FALSE, 0); - gtk_widget_show(vbox); + vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); gtk_container_add(GTK_CONTAINER(frame), vbox); gtk_container_set_border_width(GTK_CONTAINER(vbox), 6); /* Add friendly labels for DMX 6Fires */ if(card_is_dmx6fire && (i < 6)){ label = gtk_label_new(dmx6fire_outputs[i]); - gtk_widget_show(label); gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, TRUE, 6); } adj = gtk_adjustment_new(0, -(envy_dac_max()), 0, 1, 16, 0); av_dac_volume_adj[i] = adj; - vscale = gtk_vscale_new(GTK_ADJUSTMENT(adj)); + vscale = gtk_scale_new(GTK_ORIENTATION_VERTICAL, adj); gtk_scale_set_draw_value(GTK_SCALE(vscale), FALSE); - gtk_widget_show(vscale); gtk_box_pack_start(GTK_BOX(vbox), vscale, TRUE, TRUE, 6); gtk_scale_set_digits(GTK_SCALE(vscale), 0); - gtk_signal_connect(GTK_OBJECT(adj), "value_changed", - GTK_SIGNAL_FUNC(dac_volume_adjust), - (gpointer)(long)(i)); + g_signal_connect(adj, "value_changed", + G_CALLBACK(dac_volume_adjust), + (gpointer)(long)(i)); label = gtk_label_new("000"); av_dac_volume_label[i] =(GtkLabel *)label; - gtk_widget_show(label); gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, TRUE, 6); @@ -1538,13 +1378,12 @@ static void create_analog_volume(GtkWidget *main, GtkWidget *notebook, int page) radiobutton = gtk_radio_button_new_with_label(group, envy_dac_sense_enum_name(j)); av_dac_sense_radio[i][j] = radiobutton; - gtk_widget_show(radiobutton); - gtk_signal_connect(GTK_OBJECT(radiobutton), "toggled", - (GtkSignalFunc)dac_sense_toggled, - (gpointer)(long)((i << 8) + j)); + g_signal_connect(radiobutton, "toggled", + G_CALLBACK(dac_sense_toggled), + (gpointer)(long)((i << 8) + j)); gtk_box_pack_start(GTK_BOX(vbox), radiobutton, FALSE, TRUE, 0); - group = gtk_radio_button_group(GTK_RADIO_BUTTON(radiobutton)); + group = gtk_radio_button_get_group(GTK_RADIO_BUTTON(radiobutton)); } } @@ -1553,38 +1392,33 @@ static void create_analog_volume(GtkWidget *main, GtkWidget *notebook, int page) char name[32]; sprintf(name, "ADC %d", i); frame = gtk_frame_new(name); - gtk_widget_show(frame); //gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_IN); gtk_box_pack_start(GTK_BOX(hbox), frame, FALSE, TRUE, 0); gtk_container_set_border_width(GTK_CONTAINER(frame), 6); - vbox = gtk_vbox_new(FALSE, 0); - gtk_widget_show(vbox); + vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); gtk_container_add(GTK_CONTAINER(frame), vbox); gtk_container_set_border_width(GTK_CONTAINER(vbox), 6); /* Add friendly labels for DMX 6Fires */ if(card_is_dmx6fire && (i < 6)){ label = gtk_label_new(dmx6fire_inputs[i]); - gtk_widget_show(label); gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, TRUE, 6); } adj = gtk_adjustment_new(0, -(envy_adc_max()), 0, 1, 16, 0); av_adc_volume_adj[i] = adj; - vscale = gtk_vscale_new(GTK_ADJUSTMENT(adj)); + vscale = gtk_scale_new(GTK_ORIENTATION_VERTICAL, adj); gtk_scale_set_draw_value(GTK_SCALE(vscale), FALSE); - gtk_widget_show(vscale); gtk_box_pack_start(GTK_BOX(vbox), vscale, TRUE, TRUE, 6); gtk_scale_set_value_pos(GTK_SCALE(vscale), GTK_POS_BOTTOM); gtk_scale_set_digits(GTK_SCALE(vscale), 0); - gtk_signal_connect(GTK_OBJECT(adj), "value_changed", - GTK_SIGNAL_FUNC(adc_volume_adjust), - (gpointer)(long)(i)); + g_signal_connect(adj, "value_changed", + G_CALLBACK(adc_volume_adjust), + (gpointer)(long)(i)); label = gtk_label_new("000"); av_adc_volume_label[i] =(GtkLabel *)label; - gtk_widget_show(label); gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, TRUE, 6); if (i >= envy_adc_senses()) @@ -1594,13 +1428,12 @@ static void create_analog_volume(GtkWidget *main, GtkWidget *notebook, int page) radiobutton = gtk_radio_button_new_with_label(group, envy_adc_sense_enum_name(j)); av_adc_sense_radio[i][j] = radiobutton; - gtk_widget_show(radiobutton); - gtk_signal_connect(GTK_OBJECT(radiobutton), "toggled", - (GtkSignalFunc)adc_sense_toggled, - (gpointer)(long)((i << 8) + j)); + g_signal_connect(radiobutton, "toggled", + G_CALLBACK(adc_sense_toggled), + (gpointer)(long)((i << 8) + j)); gtk_box_pack_start(GTK_BOX(vbox), radiobutton, FALSE, TRUE, 0); - group = gtk_radio_button_group(GTK_RADIO_BUTTON(radiobutton)); + group = gtk_radio_button_get_group(GTK_RADIO_BUTTON(radiobutton)); } } @@ -1609,38 +1442,33 @@ static void create_analog_volume(GtkWidget *main, GtkWidget *notebook, int page) char name[32]; sprintf(name, "IPGA %d", i); frame = gtk_frame_new(name); - gtk_widget_show(frame); //gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_IN); gtk_box_pack_start(GTK_BOX(hbox), frame, FALSE, TRUE, 0); gtk_container_set_border_width(GTK_CONTAINER(frame), 6); - vbox = gtk_vbox_new(FALSE, 0); - gtk_widget_show(vbox); + vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); gtk_container_add(GTK_CONTAINER(frame), vbox); gtk_container_set_border_width(GTK_CONTAINER(vbox), 6); /* Add friendly labels for DMX 6Fires */ if(card_is_dmx6fire && (i < 6)){ label = gtk_label_new(dmx6fire_inputs[i]); - gtk_widget_show(label); gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, TRUE, 6); } adj = gtk_adjustment_new(0, -36, 0, 1, 16, 0); av_ipga_volume_adj[i] = adj; - vscale = gtk_vscale_new(GTK_ADJUSTMENT(adj)); + vscale = gtk_scale_new(GTK_ORIENTATION_VERTICAL, adj); gtk_scale_set_draw_value(GTK_SCALE(vscale), FALSE); - gtk_widget_show(vscale); gtk_box_pack_start(GTK_BOX(vbox), vscale, TRUE, TRUE, 6); gtk_scale_set_value_pos(GTK_SCALE(vscale), GTK_POS_BOTTOM); gtk_scale_set_digits(GTK_SCALE(vscale), 0); - gtk_signal_connect(GTK_OBJECT(adj), "value_changed", - GTK_SIGNAL_FUNC(ipga_volume_adjust), - (gpointer)(long)(i)); + g_signal_connect(adj, "value_changed", + G_CALLBACK(ipga_volume_adjust), + (gpointer)(long)(i)); label = gtk_label_new("000"); av_ipga_volume_label[i] = (GtkLabel *)label; - gtk_widget_show(label); gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, TRUE, 6); } } @@ -1671,19 +1499,19 @@ int delete_card_number(GtkWidget *delete_button) gint card_nr; gint index; - if (!(GTK_TOGGLE_BUTTON (delete_button)->active)) + if (!gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON (delete_button))) return EXIT_SUCCESS; - card_nr = GTK_ADJUSTMENT (card_number_adj)->value; + card_nr = gtk_adjustment_get_value(card_number_adj); if ((card_nr < 0) || (card_nr >= MAX_CARD_NUMBERS)) { fprintf(stderr, "card number not in [0 ... %d]\n", MAX_CARD_NUMBERS - 1); - gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON (delete_button), FALSE); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON (delete_button), FALSE); return -EINVAL; } res = delete_card(card_number, profiles_file_name); if (res < 0) { - gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON (delete_button), FALSE); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON (delete_button), FALSE); return res; } if (card_nr == card_number) { @@ -1693,7 +1521,7 @@ int delete_card_number(GtkWidget *delete_button) } } - gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON (delete_button), FALSE); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON (delete_button), FALSE); return EXIT_SUCCESS; } @@ -1712,18 +1540,18 @@ int save_active_profile(GtkWidget *save_button) gint res; gint index; - if (!(GTK_TOGGLE_BUTTON (save_button)->active)) + if (!gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON (save_button))) return EXIT_SUCCESS; if ((index = index_active_profile()) >= 0) { res = save_restore(ALSACTL_OP_STORE, index + 1, card_number, profiles_file_name, \ gtk_entry_get_text(GTK_ENTRY (profiles_toggle_buttons[index].entry))); } else { fprintf(stderr, "No active profile found.\n"); - gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON (save_button), FALSE); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON (save_button), FALSE); return -EXIT_FAILURE; } - gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON (save_button), FALSE); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON (save_button), FALSE); return res; } @@ -1734,21 +1562,21 @@ void entry_toggle_editable(GtkWidget *toggle_button, GtkWidget *entry) gint profile_number; if (active_button == toggle_button) { - gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON (toggle_button), TRUE); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON (toggle_button), TRUE); gtk_editable_set_editable(GTK_EDITABLE (entry), TRUE); gtk_widget_grab_focus(entry); return; - } else if (GTK_TOGGLE_BUTTON (toggle_button)->active) { + } else if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON (toggle_button))) { active_button = toggle_button; } - gtk_editable_set_editable(GTK_EDITABLE (entry), GTK_TOGGLE_BUTTON (toggle_button)->active); - if (GTK_TOGGLE_BUTTON (toggle_button)->active) { + gtk_editable_set_editable(GTK_EDITABLE (entry), gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON (toggle_button))); + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON (toggle_button))) { gtk_widget_grab_focus(entry); profile_number = NOTFOUND; for (index = 0; index < MAX_PROFILES; index++) { if (profiles_toggle_buttons[index].toggle_button != toggle_button) { - gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON (profiles_toggle_buttons[index].toggle_button), FALSE); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON (profiles_toggle_buttons[index].toggle_button), FALSE); } else { profile_number = index + 1; } @@ -1771,28 +1599,25 @@ static GtkWidget *toggle_button_entry(const GtkWidget *parent, const gchar *prof GtkWidget *entry_label; GtkWidget *toggle_button; - box = gtk_hbox_new(FALSE, 0); + box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); toggle_button = gtk_toggle_button_new(); - gtk_container_border_width(GTK_CONTAINER(toggle_button), 3); + gtk_container_set_border_width(GTK_CONTAINER(toggle_button), 3); profiles_toggle_buttons[index].entry = entry_label = gtk_entry_new(); gtk_entry_set_max_length(GTK_ENTRY (entry_label), MAX_PROFILE_NAME_LENGTH); gtk_entry_set_text(GTK_ENTRY (entry_label), profile_name); /* only the active profile can be modified */ gtk_editable_set_editable(GTK_EDITABLE (entry_label), FALSE); - gtk_signal_connect(GTK_OBJECT (entry_label), "activate", - GTK_SIGNAL_FUNC (enter_callback), + g_signal_connect(entry_label, "activate", + G_CALLBACK (enter_callback), (gpointer) entry_label); - gtk_signal_connect(GTK_OBJECT (toggle_button), "toggled", - GTK_SIGNAL_FUNC (entry_toggle_editable), + g_signal_connect(toggle_button, "toggled", + G_CALLBACK (entry_toggle_editable), (gpointer) entry_label); gtk_box_pack_start(GTK_BOX (box), entry_label, FALSE, FALSE, 20); - gtk_widget_show(entry_label); - gtk_widget_show(box); gtk_container_add(GTK_CONTAINER (toggle_button), box); - gtk_widget_show(toggle_button); return (toggle_button); } @@ -1806,7 +1631,7 @@ static void create_profiles(GtkWidget *main, GtkWidget *notebook, int page) GtkWidget *hbox1; GtkWidget *save_button; GtkWidget *delete_button; - GtkObject *card_button_adj; + GtkAdjustment *card_button_adj; GtkWidget *card_button; GtkWidget *scrolledwindow; GtkWidget *viewport; @@ -1816,83 +1641,72 @@ static void create_profiles(GtkWidget *main, GtkWidget *notebook, int page) gint max_profiles; gint max_digits; - hbox = gtk_hbox_new(FALSE, 0); - gtk_widget_show(hbox); + hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); gtk_container_add(GTK_CONTAINER(notebook), hbox); label = gtk_label_new("Profiles"); - gtk_widget_show(label); gtk_notebook_set_tab_label(GTK_NOTEBOOK(notebook), gtk_notebook_get_nth_page(GTK_NOTEBOOK(notebook), page), label); /* build scrolling area */ scrolledwindow = gtk_scrolled_window_new(NULL, NULL); - gtk_widget_show(scrolledwindow); gtk_box_pack_start(GTK_BOX(hbox), scrolledwindow, TRUE, TRUE, 0); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolledwindow), GTK_POLICY_AUTOMATIC, GTK_POLICY_NEVER); viewport = gtk_viewport_new(NULL, NULL); - gtk_widget_show(viewport); gtk_container_add(GTK_CONTAINER(scrolledwindow), viewport); - hbox = gtk_hbox_new(FALSE, 0); - gtk_widget_show(hbox); + hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); gtk_container_add(GTK_CONTAINER(viewport), hbox); gtk_container_set_border_width(GTK_CONTAINER(hbox), 0); /* Create button boxes */ - vbox1 = gtk_vbutton_box_new(); + vbox1 = gtk_button_box_new(GTK_ORIENTATION_VERTICAL); - gtk_vbutton_box_set_spacing_default(0); for (index = 0; index < MAX_PROFILES; index++) { profile_name = get_profile_name(index + 1, card_number, profiles_file_name); profiles_toggle_buttons[index].toggle_button = toggle_button_entry(window, profile_name, index); gtk_box_pack_start(GTK_BOX (vbox1), profiles_toggle_buttons[index].toggle_button, FALSE, FALSE, 0); } - gtk_widget_show(vbox1); - gtk_container_border_width(GTK_CONTAINER(vbox1), 6); + gtk_container_set_border_width(GTK_CONTAINER(vbox1), 6); - vbox2 = gtk_vbutton_box_new(); - gtk_widget_show(vbox2); - gtk_container_border_width(GTK_CONTAINER(vbox2), 50); + vbox2 = gtk_button_box_new(GTK_ORIENTATION_VERTICAL); + gtk_container_set_border_width(GTK_CONTAINER(vbox2), 50); - hbox1 = gtk_hbox_new(FALSE, 0); - gtk_widget_show(hbox1); + hbox1 = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); gtk_box_pack_start(GTK_BOX(vbox2), hbox1, FALSE, FALSE, 20); label_card_nr = gtk_label_new("Card Number:"); - gtk_widget_show(label_card_nr); gtk_box_pack_start(GTK_BOX(hbox1), label_card_nr, FALSE, FALSE, 20); gtk_label_set_justify(GTK_LABEL(label_card_nr), GTK_JUSTIFY_LEFT); - card_button_adj = gtk_adjustment_new(16, 0, MAX_CARD_NUMBERS - 1, 1, 10, 10); + card_button_adj = gtk_adjustment_new(16, 0, MAX_CARD_NUMBERS - 1, 1, 10, 0); card_number_adj = card_button_adj; - card_button = gtk_spin_button_new(GTK_ADJUSTMENT (card_button_adj), 1, 0); - gtk_widget_show(card_button); + card_button = gtk_spin_button_new(card_button_adj, 1, 0); gtk_box_pack_start(GTK_BOX (hbox1), card_button, TRUE, FALSE, 0); gtk_spin_button_set_numeric(GTK_SPIN_BUTTON (card_button), TRUE); - gtk_adjustment_set_value(GTK_ADJUSTMENT (card_button_adj), card_number); + gtk_adjustment_set_value(card_button_adj, card_number); delete_button = gtk_toggle_button_new_with_label("Delete card from profiles"); - gtk_widget_show(delete_button); gtk_box_pack_start(GTK_BOX (vbox2), delete_button, FALSE, FALSE, 20); - gtk_signal_connect(GTK_OBJECT (delete_button), "toggled", - GTK_SIGNAL_FUNC (delete_card_number), + g_signal_connect(delete_button, "toggled", + G_CALLBACK (delete_card_number), NULL); save_button = gtk_toggle_button_new_with_label("Save active profile"); - gtk_widget_show(save_button); gtk_box_pack_end(GTK_BOX (vbox2), save_button, FALSE, FALSE, 20); - gtk_signal_connect(GTK_OBJECT (save_button), "toggled", - GTK_SIGNAL_FUNC (save_active_profile), + g_signal_connect(save_button, "toggled", + G_CALLBACK (save_active_profile), NULL); gtk_container_add(GTK_CONTAINER(hbox), vbox1); + gtk_widget_set_hexpand(vbox1, TRUE); gtk_container_add(GTK_CONTAINER(hbox), vbox2); + gtk_widget_set_hexpand(vbox2, TRUE); if (default_profile != NULL) { @@ -1915,7 +1729,7 @@ static void create_profiles(GtkWidget *main, GtkWidget *notebook, int page) profile_number = get_profile_number(default_profile, card_number, profiles_file_name); } if ((profile_number > 0) && (profile_number <= MAX_PROFILES)) { - gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON (profiles_toggle_buttons[profile_number - 1].toggle_button), TRUE); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON (profiles_toggle_buttons[profile_number - 1].toggle_button), TRUE); } else { fprintf(stderr, "Cannot find profile '%s' for card '%d'.\n", default_profile, card_number); } @@ -1932,27 +1746,23 @@ static void create_outer(GtkWidget *main) GtkWidget *drawing; /* Create digital mixer frame */ - vbox = gtk_vbox_new(FALSE, 1); - gtk_widget_show(vbox); + vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 1); gtk_box_pack_start(GTK_BOX(main), vbox, FALSE, FALSE, 0); label = gtk_label_new(" Rt-clk Menu >>"); - //gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); - gtk_widget_show(label); + //gtk_widget_set_halign(label, GTK_ALIGN_START); + //gtk_widget_set_valign(label, GTK_ALIGN_CENTER); gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 3); frame = gtk_frame_new("Digital Mixer"); - gtk_widget_show(frame); gtk_box_pack_start(GTK_BOX(vbox), frame, FALSE, TRUE, 0); gtk_container_set_border_width(GTK_CONTAINER(frame), 6); /* Create controls in the digital mixer frame */ - vbox = gtk_vbox_new(FALSE, 0); - gtk_widget_show(vbox); + vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); gtk_container_add(GTK_CONTAINER(frame), vbox); - hbox1 = gtk_hbox_new(FALSE, 0); - gtk_widget_show(hbox1); + hbox1 = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); gtk_box_pack_start(GTK_BOX(vbox), hbox1, FALSE, FALSE, 6); drawing = gtk_drawing_area_new(); @@ -1960,60 +1770,37 @@ static void create_outer(GtkWidget *main) gtk_widget_set_name(drawing, "DigitalMixer"); gtk_box_pack_start(GTK_BOX(hbox1), drawing, TRUE, FALSE, 6); if (tall_equal_mixer_ht > 1 ) { - gtk_widget_set_usize(drawing, 60, 264 + 60 * (tall_equal_mixer_ht - 1)); + gtk_widget_set_size_request(drawing, 60, 264 + 60 * (tall_equal_mixer_ht - 1)); } else { - gtk_widget_set_usize(drawing, 60, 264); + gtk_widget_set_size_request(drawing, 60, 264); } - gtk_signal_connect(GTK_OBJECT(drawing), "expose_event", - (GtkSignalFunc)level_meters_expose_event, NULL); - gtk_signal_connect(GTK_OBJECT(drawing), "configure_event", - (GtkSignalFunc)level_meters_configure_event, NULL); + g_signal_connect(drawing, "draw", + G_CALLBACK(level_meters_draw_callback), NULL); gtk_widget_set_events(drawing, GDK_EXPOSURE_MASK); - gtk_widget_show(drawing); - hbox1 = gtk_hbox_new(TRUE, 0); - gtk_widget_show(hbox1); + hbox1 = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); + gtk_box_set_homogeneous(GTK_BOX(hbox1), TRUE); gtk_box_pack_start(GTK_BOX(vbox), hbox1, TRUE, FALSE, 0); gtk_container_set_border_width(GTK_CONTAINER(hbox1), 6); label = gtk_label_new("Left"); - gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); - gtk_widget_show(label); + gtk_widget_set_halign(label, GTK_ALIGN_START); + gtk_widget_set_valign(label, GTK_ALIGN_CENTER); gtk_box_pack_start(GTK_BOX(hbox1), label, FALSE, TRUE, 0); label = gtk_label_new("Right"); - gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5); - gtk_widget_show(label); + gtk_widget_set_halign(label, GTK_ALIGN_END); + gtk_widget_set_valign(label, GTK_ALIGN_CENTER); gtk_box_pack_start(GTK_BOX(hbox1), label, FALSE, TRUE, 0); mixer_clear_peaks_button = gtk_button_new_with_label("Reset Peaks"); - gtk_widget_show(mixer_clear_peaks_button); gtk_box_pack_start(GTK_BOX(vbox), mixer_clear_peaks_button, TRUE, FALSE, 0); gtk_container_set_border_width(GTK_CONTAINER(mixer_clear_peaks_button), 4); - gtk_signal_connect(GTK_OBJECT(mixer_clear_peaks_button), "clicked", - GTK_SIGNAL_FUNC(level_meters_reset_peaks), NULL); + g_signal_connect(mixer_clear_peaks_button, "clicked", + G_CALLBACK(level_meters_reset_peaks), NULL); }/* End create_outer */ -static void create_blank(GtkWidget *main, GtkWidget *notebook, int page) -{ -/* This is a little workaround for a problem with the pop-up menu. - For some reason the label of the last page is not accessed by the menu - so all it shows is 'page 7'. Here a blank extra page is created, unseen, - which seems to satisfy gtk, and we see the menu last page label correct. AH 12.7.2005 */ - - GtkWidget *label; - GtkWidget *hbox; - - hbox = gtk_hbox_new(FALSE, 0); - gtk_container_add(GTK_CONTAINER(notebook), hbox); - - label = gtk_label_new("Blank"); - gtk_notebook_set_tab_label(GTK_NOTEBOOK(notebook), - gtk_notebook_get_nth_page(GTK_NOTEBOOK(notebook), page), - label); -} - static void usage(void) { fprintf(stderr, "usage: envy24control [-c card#] [-D control-name] [-o num-outputs] [-i num-inputs] [-p num-pcm-outputs] [-s num-spdif-in/outs] [-v] [-f profiles-file] [profile name|profile id] [-m channel-num] [-w initial-window-width] [-t height-num]\n"); @@ -2035,6 +1822,7 @@ int main(int argc, char **argv) { GtkWidget *notebook; GtkWidget *outerbox; + GtkCssProvider *provider; char *name, tmpname[8], title[128]; int i, c, err; snd_ctl_card_info_t *hw_info; @@ -2176,7 +1964,7 @@ int main(int argc, char **argv) if (! name) { /* probe cards */ - static char cardname[8]; + static char cardname[16]; /* FIXME: hardcoded max number of cards */ for (card_number = 0; card_number < 8; card_number++) { sprintf(cardname, "hw:%d", card_number); @@ -2252,20 +2040,29 @@ int main(int argc, char **argv) fprintf(stderr, "using\t --- input_channels: %i\n\t --- output_channels: %i\n\t --- pcm_output_channels: %i\n\t --- spdif in/out channels: %i\n", \ input_channels, output_channels, pcm_output_channels, spdif_channels); + /* Reduce button padding so the mixers don't get so wide */ + provider = gtk_css_provider_new(); + gtk_css_provider_load_from_data(provider, + "button { padding-left: 6px; padding-right: 6px; }", + -1, NULL); + gtk_style_context_add_provider_for_screen(gdk_screen_get_default(), + GTK_STYLE_PROVIDER(provider), + GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); + g_object_unref(provider); + /* Make the title */ sprintf(title, "Envy24 Control Utility %s (%s)", VERSION, snd_ctl_card_info_get_longname(hw_info)); /* 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); + g_signal_connect(window, "delete_event", + G_CALLBACK(gtk_main_quit), NULL); signal(SIGINT, (void *)gtk_main_quit); gtk_window_set_default_size(GTK_WINDOW(window), wwidth, 300); - outerbox = gtk_hbox_new(FALSE, 3); - gtk_widget_show(outerbox); + outerbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 3); gtk_container_add(GTK_CONTAINER(window), outerbox); create_outer(outerbox); @@ -2274,8 +2071,7 @@ int main(int argc, char **argv) notebook = gtk_notebook_new(); gtk_notebook_set_scrollable(GTK_NOTEBOOK(notebook), TRUE); gtk_notebook_popup_enable(GTK_NOTEBOOK(notebook)); - gtk_widget_show(notebook); - gtk_container_add(GTK_CONTAINER(outerbox), notebook); + gtk_box_pack_start(GTK_BOX(outerbox), notebook, TRUE, TRUE, 0); page = 0; @@ -2287,30 +2083,34 @@ int main(int argc, char **argv) create_analog_volume(outerbox, notebook, page++); create_profiles(outerbox, notebook, page++); create_about(outerbox, notebook, page++); - create_blank(outerbox, notebook, page++); npfds = snd_ctl_poll_descriptors_count(ctl); if (npfds > 0) { pfds = alloca(sizeof(*pfds) * npfds); npfds = snd_ctl_poll_descriptors(ctl, pfds, npfds); - for (i = 0; i < npfds; i++) - gdk_input_add(pfds[i].fd, - GDK_INPUT_READ, - control_input_callback, - ctl); + for (i = 0; i < npfds; i++) { + GIOChannel *channel = g_io_channel_unix_new(pfds[i].fd); + g_io_add_watch(channel, + G_IO_IN, + control_input_callback, + ctl); + g_io_channel_unref(channel); + } snd_ctl_subscribe_events(ctl, 1); } if (midi_fd >= 0) { - gdk_input_add(midi_fd, GDK_INPUT_READ, midi_process, NULL); + GIOChannel *channel = g_io_channel_unix_new(midi_fd); + g_io_add_watch(channel, G_IO_IN, midi_process, NULL); + g_io_channel_unref(channel); } - gtk_timeout_add(40, level_meters_timeout_callback, NULL); - gtk_timeout_add(100, master_clock_status_timeout_callback, NULL); - gtk_timeout_add(100, internal_clock_status_timeout_callback, NULL); - gtk_timeout_add(100, rate_locking_status_timeout_callback, NULL); - gtk_timeout_add(100, rate_reset_status_timeout_callback, NULL); + g_timeout_add(40, level_meters_timeout_callback, NULL); + g_timeout_add(100, master_clock_status_timeout_callback, NULL); + g_timeout_add(100, internal_clock_status_timeout_callback, NULL); + g_timeout_add(100, rate_locking_status_timeout_callback, NULL); + g_timeout_add(100, rate_reset_status_timeout_callback, NULL); - gtk_widget_show(window); + gtk_widget_show_all(window); level_meters_postinit(); mixer_postinit(); diff --git a/envy24control/envy24control.h b/envy24control/envy24control.h index f5c1e39..0f887e7 100644 --- a/envy24control/envy24control.h +++ b/envy24control/envy24control.h @@ -85,7 +85,7 @@ extern ice1712_eeprom_t card_eeprom; extern GtkWidget *mixer_mix_drawing; extern GtkWidget *mixer_clear_peaks_button; extern GtkWidget *mixer_drawing[20]; -extern GtkObject *mixer_adj[20][2]; +extern GtkAdjustment *mixer_adj[20][2]; extern GtkWidget *mixer_vscale[20][2]; extern GtkWidget *mixer_solo_toggle[20][2]; extern GtkWidget *mixer_mute_toggle[20][2]; @@ -108,7 +108,7 @@ extern GtkWidget *hw_master_clock_actual_rate_label; extern GtkWidget *hw_rate_locking_check; extern GtkWidget *hw_rate_reset_check; -extern GtkObject *hw_volume_change_adj; +extern GtkAdjustment *hw_volume_change_adj; extern GtkWidget *hw_volume_change_spin; extern GtkWidget *hw_spdif_profi_nonaudio_radio; @@ -151,9 +151,9 @@ extern GtkWidget *input_interface_internal; extern GtkWidget *input_interface_front_input; extern GtkWidget *input_interface_rear_input; extern GtkWidget *input_interface_wavetable; -extern GtkObject *av_dac_volume_adj[]; -extern GtkObject *av_adc_volume_adj[]; -extern GtkObject *av_ipga_volume_adj[]; +extern GtkAdjustment *av_dac_volume_adj[]; +extern GtkAdjustment *av_adc_volume_adj[]; +extern GtkAdjustment *av_ipga_volume_adj[]; extern GtkLabel *av_dac_volume_label[]; extern GtkLabel *av_adc_volume_label[]; extern GtkLabel *av_ipga_volume_label[]; @@ -163,8 +163,7 @@ extern GtkWidget *av_adc_sense_radio[][4]; /* flags */ extern int card_is_dmx6fire; -gint level_meters_configure_event(GtkWidget *widget, GdkEventConfigure *event); -gint level_meters_expose_event(GtkWidget *widget, GdkEventExpose *event); +gboolean level_meters_draw_callback(GtkWidget *widget, cairo_t *cr, gpointer data); gint level_meters_timeout_callback(gpointer data); void level_meters_reset_peaks(GtkButton *button, gpointer data); void level_meters_init(void); @@ -238,6 +237,5 @@ void ipga_volume_adjust(GtkAdjustment *adj, gpointer data); void dac_sense_toggled(GtkWidget *togglebutton, gpointer data); void adc_sense_toggled(GtkWidget *togglebutton, gpointer data); -void control_input_callback(gpointer data, gint source, GdkInputCondition condition); -void mixer_input_callback(gpointer data, gint source, GdkInputCondition condition); +gboolean control_input_callback(GIOChannel *gio, GIOCondition condition, gpointer data); diff --git a/envy24control/hardware.c b/envy24control/hardware.c index 7e0094e..8db95c5 100644 --- a/envy24control/hardware.c +++ b/envy24control/hardware.c @@ -39,7 +39,14 @@ static inline int is_update_needed(void); static int is_active(GtkWidget *widget) { - return GTK_TOGGLE_BUTTON(widget)->active ? 1 : 0; + return gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)) ? 1 : 0; +} + +static void label_set(GtkWidget* widget, const char* str) +{ + const char* old = gtk_label_get_text(GTK_LABEL(widget)); + if (strcmp(old, str)) + gtk_label_set_text(GTK_LABEL(widget), str); } void master_clock_update(void) @@ -170,8 +177,8 @@ gint master_clock_status_timeout_callback(gpointer data) snd_ctl_elem_value_set_name(sw, "Word Clock Status"); if ((err = snd_ctl_elem_read(ctl, sw)) < 0) g_print("Unable to determine word clock status: %s\n", snd_strerror(err)); - gtk_label_set_text(GTK_LABEL(hw_master_clock_status_label), - snd_ctl_elem_value_get_boolean(sw, 0) ? "No signal" : "Locked"); + label_set(hw_master_clock_status_label, + snd_ctl_elem_value_get_boolean(sw, 0) ? "No signal" : "Locked"); return TRUE; } @@ -246,7 +253,7 @@ gint internal_clock_status_timeout_callback(gpointer data) } } } - gtk_label_set_text(GTK_LABEL(hw_master_clock_actual_rate_label), label); + label_set(hw_master_clock_actual_rate_label, label); return TRUE; } @@ -354,7 +361,7 @@ void volume_change_rate_adj(GtkAdjustment *adj, gpointer data) { int err; - snd_ctl_elem_value_set_integer(volume_rate, 0, adj->value); + snd_ctl_elem_value_set_integer(volume_rate, 0, gtk_adjustment_get_value(adj)); if ((err = snd_ctl_elem_write(ctl, volume_rate)) < 0) g_print("Unable to write volume change rate: %s\n", snd_strerror(err)); } @@ -455,9 +462,9 @@ void profi_stream_toggled(GtkWidget *togglebutton, gpointer data) return; iec958.status[1] &= ~IEC958_AES1_PRO_MODE; if (!strcmp(str, "NOTID")) { - iec958.status[0] |= IEC958_AES1_PRO_MODE_STEREOPHONIC; + iec958.status[1] |= IEC958_AES1_PRO_MODE_NOTID; } else if (!strcmp(str, "Stereo")) { - iec958.status[0] |= IEC958_AES1_PRO_MODE_NOTID; + iec958.status[1] |= IEC958_AES1_PRO_MODE_STEREOPHONIC; } snd_ctl_elem_value_set_iec958(spdif_output, &iec958); spdif_output_write(); @@ -500,7 +507,7 @@ void consumer_copyright_toggled(GtkWidget *togglebutton, gpointer data) if (!strcmp(str, "Copyright")) { iec958.status[0] &= ~IEC958_AES0_CON_NOT_COPYRIGHT; } else if (!strcmp(str, "Permitted")) { - iec958.status[1] |= IEC958_AES0_CON_NOT_COPYRIGHT; + iec958.status[0] |= IEC958_AES0_CON_NOT_COPYRIGHT; } snd_ctl_elem_value_set_iec958(spdif_output, &iec958); spdif_output_write(); @@ -517,9 +524,9 @@ void consumer_copy_toggled(GtkWidget *togglebutton, gpointer data) if (iec958.status[0] & IEC958_AES0_PROFESSIONAL) return; if (!strcmp(str, "1st")) { - iec958.status[0] |= IEC958_AES1_CON_ORIGINAL; - } else if (!strcmp(str, "Original")) { iec958.status[1] &= ~IEC958_AES1_CON_ORIGINAL; + } else if (!strcmp(str, "Original")) { + iec958.status[1] |= IEC958_AES1_CON_ORIGINAL; } snd_ctl_elem_value_set_iec958(spdif_output, &iec958); spdif_output_write(); @@ -539,7 +546,7 @@ void consumer_emphasis_toggled(GtkWidget *togglebutton, gpointer data) if (!strcmp(str, "No")) { iec958.status[0] |= IEC958_AES0_CON_EMPHASIS_NONE; } else if (!strcmp(str, "5015")) { - iec958.status[1] |= ~IEC958_AES0_CON_EMPHASIS_5015; + iec958.status[0] |= IEC958_AES0_CON_EMPHASIS_5015; } snd_ctl_elem_value_set_iec958(spdif_output, &iec958); spdif_output_write(); @@ -555,15 +562,15 @@ void consumer_category_toggled(GtkWidget *togglebutton, gpointer data) return; if (iec958.status[0] & IEC958_AES0_PROFESSIONAL) return; - iec958.status[0] &= ~IEC958_AES1_CON_CATEGORY; + iec958.status[1] &= ~IEC958_AES1_CON_CATEGORY; if (!strcmp(str, "DAT")) { - iec958.status[0] |= IEC958_AES1_CON_DAT; + iec958.status[1] |= IEC958_AES1_CON_DAT; } else if (!strcmp(str, "PCM")) { - iec958.status[0] |= IEC958_AES1_CON_PCM_CODER; + iec958.status[1] |= IEC958_AES1_CON_PCM_CODER; } else if (!strcmp(str, "CD")) { - iec958.status[0] |= IEC958_AES1_CON_IEC908_CD; + iec958.status[1] |= IEC958_AES1_CON_IEC908_CD; } else if (!strcmp(str, "General")) { - iec958.status[0] |= IEC958_AES1_CON_GENERAL; + iec958.status[1] |= IEC958_AES1_CON_GENERAL; } snd_ctl_elem_value_set_iec958(spdif_output, &iec958); spdif_output_write(); @@ -598,7 +605,7 @@ void spdif_output_toggled(GtkWidget *togglebutton, gpointer data) page = 1; } spdif_output_write(); - gtk_notebook_set_page(GTK_NOTEBOOK(hw_spdif_output_notebook), page); + gtk_notebook_set_current_page(GTK_NOTEBOOK(hw_spdif_output_notebook), page); spdif_output_update(); } } diff --git a/envy24control/levelmeters.c b/envy24control/levelmeters.c index 24e00db..c053995 100644 --- a/envy24control/levelmeters.c +++ b/envy24control/levelmeters.c @@ -19,13 +19,13 @@ #include "envy24control.h" -static GdkGC *penGreenShadow[21] = { NULL, }; -static GdkGC *penGreenLight[21] = { NULL, }; -static GdkGC *penOrangeShadow[21] = { NULL, }; -static GdkGC *penOrangeLight[21] = { NULL, }; -static GdkGC *penRedShadow[21] = { NULL, }; -static GdkGC *penRedLight[21] = { NULL, }; -static GdkPixmap *pixmap[21] = { NULL, }; +static GdkRGBA *penGreenShadow = NULL; +static GdkRGBA *penGreenLight = NULL; +static GdkRGBA *penOrangeShadow = NULL; +static GdkRGBA *penOrangeLight = NULL; +static GdkRGBA *penRedShadow = NULL; +static GdkRGBA *penRedLight = NULL; +static int level[22] = { 0 }; static snd_ctl_elem_value_t *peaks; extern int input_channels, output_channels, pcm_output_channels, spdif_channels, view_spdif_playback; @@ -50,22 +50,19 @@ static void get_levels(int idx, int *l1, int *l2) } } -static GdkGC *get_pen(int idx, int nRed, int nGreen, int nBlue) +static GdkRGBA *get_pen(int nRed, int nGreen, int nBlue) { - GdkColor *c; - GdkGC *gc; + GdkRGBA *c; - c = (GdkColor *)g_malloc(sizeof(GdkColor)); - c->red = nRed; - c->green = nGreen; - c->blue = nBlue; - gdk_color_alloc(gdk_colormap_get_system(), c); - gc = gdk_gc_new(pixmap[idx]); - gdk_gc_set_foreground(gc, c); - return gc; + c = (GdkRGBA *)g_malloc(sizeof(GdkRGBA)); + c->red = nRed / 65535.0; + c->green = nGreen / 65535.0; + c->blue = nBlue / 65535.0; + c->alpha = 1.0; + return c; } -static int get_index(gchar *name) +static int get_index(const gchar *name) { int result; @@ -79,7 +76,7 @@ static int get_index(gchar *name) return result; } -static void redraw_meters(int idx, int width, int height, int level1, int level2) +static void redraw_meters(int idx, int width, int height, int level1, int level2, cairo_t *cr) { int stereo = idx == 0; int segment_width = stereo ? (width / 2) - 8 : width - 12; @@ -90,167 +87,156 @@ static void redraw_meters(int idx, int width, int height, int level1, int level2 int seg; int segs_on1 = ((segments * level1) + 128) / 255; int segs_on2 = ((segments * level2) + 128) / 255; + int end_seg; + GdkRectangle clip; // g_print("segs_on1 = %i (%i), segs_on2 = %i (%i)\n", segs_on1, level1, segs_on2, level2); - for (seg = 0; seg < green_segments; seg++) { - gdk_draw_rectangle(pixmap[idx], - segs_on1 > 0 ? penGreenLight[idx] : penGreenShadow[idx], - TRUE, - 6, 3 + ((segments - seg - 1) * 4), - segment_width, - 3); - if (stereo) - gdk_draw_rectangle(pixmap[idx], - segs_on2 > 0 ? penGreenLight[idx] : penGreenShadow[idx], - TRUE, - 2 + (width / 2), - 3 + ((segments - seg - 1) * 4), - segment_width, - 3); + cairo_rectangle(cr, 0, 0, width, height); + cairo_fill(cr); + + gdk_cairo_get_clip_rectangle(cr, &clip); + seg = segments - (clip.y + clip.height) / 4; + if (seg < 0) + seg = 0; + segs_on1 -= seg; + segs_on2 -= seg; + end_seg = segments - (clip.y - 2) / 4; + + for (; seg < green_segments && seg < end_seg; seg++) { + gdk_cairo_set_source_rgba(cr, + segs_on1 > 0 ? penGreenLight : penGreenShadow); + cairo_rectangle(cr, + 6, 3 + ((segments - seg - 1) * 4), + segment_width, + 3); + cairo_fill(cr); + if (stereo) { + gdk_cairo_set_source_rgba(cr, + segs_on2 > 0 ? penGreenLight : penGreenShadow); + cairo_rectangle(cr, + 2 + (width / 2), + 3 + ((segments - seg - 1) * 4), + segment_width, + 3); + cairo_fill(cr); + } segs_on1--; segs_on2--; } - for (seg = green_segments; seg < green_segments + orange_segments; seg++) { - gdk_draw_rectangle(pixmap[idx], - segs_on1 > 0 ? penOrangeLight[idx] : penOrangeShadow[idx], - TRUE, - 6, 3 + ((segments - seg - 1) * 4), - segment_width, - 3); - if (stereo) - gdk_draw_rectangle(pixmap[idx], - segs_on2 > 0 ? penOrangeLight[idx] : penOrangeShadow[idx], - TRUE, - 2 + (width / 2), - 3 + ((segments - seg - 1) * 4), - segment_width, - 3); + for (; seg < green_segments + orange_segments && seg < end_seg; seg++) { + gdk_cairo_set_source_rgba(cr, + segs_on1 > 0 ? penOrangeLight : penOrangeShadow); + cairo_rectangle(cr, + 6, 3 + ((segments - seg - 1) * 4), + segment_width, + 3); + cairo_fill(cr); + if (stereo) { + gdk_cairo_set_source_rgba(cr, + segs_on2 > 0 ? penOrangeLight : penOrangeShadow); + cairo_rectangle(cr, + 2 + (width / 2), + 3 + ((segments - seg - 1) * 4), + segment_width, + 3); + cairo_fill(cr); + } segs_on1--; segs_on2--; } - for (seg = green_segments + orange_segments; seg < segments; seg++) { - gdk_draw_rectangle(pixmap[idx], - segs_on1 > 0 ? penRedLight[idx] : penRedShadow[idx], - TRUE, - 6, 3 + ((segments - seg - 1) * 4), - segment_width, - 3); - if (stereo) - gdk_draw_rectangle(pixmap[idx], - segs_on2 > 0 ? penRedLight[idx] : penRedShadow[idx], - TRUE, - 2 + (width / 2), - 3 + ((segments - seg - 1) * 4), - segment_width, - 3); + for (; seg < segments && seg < end_seg; seg++) { + gdk_cairo_set_source_rgba(cr, + segs_on1 > 0 ? penRedLight : penRedShadow); + cairo_rectangle(cr, + 6, 3 + ((segments - seg - 1) * 4), + segment_width, + 3); + cairo_fill(cr); + if (stereo) { + gdk_cairo_set_source_rgba(cr, + segs_on2 > 0 ? penRedLight : penRedShadow); + cairo_rectangle(cr, + 2 + (width / 2), + 3 + ((segments - seg - 1) * 4), + segment_width, + 3); + cairo_fill(cr); + } segs_on1--; segs_on2--; } } -gint level_meters_configure_event(GtkWidget *widget, GdkEventConfigure *event) -{ - int idx = get_index(gtk_widget_get_name(widget)); - - if (pixmap[idx] != NULL) - gdk_pixmap_unref(pixmap[idx]); - pixmap[idx] = gdk_pixmap_new(widget->window, - widget->allocation.width, - widget->allocation.height, - -1); - penGreenShadow[idx] = get_pen(idx, 0, 0x77ff, 0); - penGreenLight[idx] = get_pen(idx, 0, 0xffff, 0); - penOrangeShadow[idx] = get_pen(idx, 0xddff, 0x55ff, 0); - penOrangeLight[idx] = get_pen(idx, 0xffff, 0x99ff, 0); - penRedShadow[idx] = get_pen(idx, 0xaaff, 0, 0); - penRedLight[idx] = get_pen(idx, 0xffff, 0, 0); - gdk_draw_rectangle(pixmap[idx], - widget->style->black_gc, - TRUE, - 0, 0, - widget->allocation.width, - widget->allocation.height); - // g_print("configure: %i:%i\n", widget->allocation.width, widget->allocation.height); - redraw_meters(idx, widget->allocation.width, widget->allocation.height, 0, 0); - return TRUE; -} - -gint level_meters_expose_event(GtkWidget *widget, GdkEventExpose *event) +gboolean level_meters_draw_callback(GtkWidget *widget, cairo_t *cr, gpointer data) { int idx = get_index(gtk_widget_get_name(widget)); int l1, l2; get_levels(idx, &l1, &l2); - redraw_meters(idx, widget->allocation.width, widget->allocation.height, l1, l2); - gdk_draw_pixmap(widget->window, - widget->style->black_gc, - pixmap[idx], - event->area.x, event->area.y, - event->area.x, event->area.y, - event->area.width, event->area.height); + redraw_meters(idx, gtk_widget_get_allocated_width(widget), gtk_widget_get_allocated_height(widget), l1, l2, cr); return FALSE; } +static void update_meter(int idx) +{ + int stereo = idx == 0; + GtkWidget *widget = stereo ? mixer_mix_drawing : mixer_drawing[idx - 1]; + int width = gtk_widget_get_allocated_width(widget); + int height = gtk_widget_get_allocated_height(widget); + int segments = (height - 6) / 4; + int level_idx = stereo ? 20 : idx - 1; + int l1, l2, segs_on, old_segs_on, h; + + get_levels(idx, &l1, &l2); + segs_on = ((segments * l1) + 128) / 255; + old_segs_on = ((segments * level[level_idx]) + 128) / 255; + h = abs(old_segs_on - segs_on); + level[level_idx] = l1; + + if (h > 0) { + int y = segments - MAX(old_segs_on, segs_on); + gtk_widget_queue_draw_area(widget, + 6, 4 * y + 3, + stereo ? (width / 2) - 8 : width - 12, + 4 * h - 1); + } + + if (stereo) { + level_idx++; + segs_on = ((segments * l2) + 128) / 255; + old_segs_on = ((segments * level[level_idx]) + 128) / 255; + h = abs(old_segs_on - segs_on); + level[level_idx] = l2; + + if (h > 0) { + int y = segments - MAX(old_segs_on, segs_on); + gtk_widget_queue_draw_area(widget, + 2 + (width / 2), 4 * y + 3, + (width / 2) - 8, + 4 * h - 1); + } + } +} + gint level_meters_timeout_callback(gpointer data) { - GtkWidget *widget; - int idx, l1, l2; + int idx; update_peak_switch(); for (idx = 0; idx <= pcm_output_channels; idx++) { - get_levels(idx, &l1, &l2); - widget = idx == 0 ? mixer_mix_drawing : mixer_drawing[idx-1]; - if (GTK_WIDGET_VISIBLE(widget) && (pixmap[idx] != NULL)) { - redraw_meters(idx, widget->allocation.width, widget->allocation.height, l1, l2); - gdk_draw_pixmap(widget->window, - widget->style->black_gc, - pixmap[idx], - 0, 0, - 0, 0, - widget->allocation.width, widget->allocation.height); - } + update_meter(idx); } if (view_spdif_playback) { for (idx = MAX_PCM_OUTPUT_CHANNELS + 1; idx <= MAX_OUTPUT_CHANNELS + spdif_channels; idx++) { - get_levels(idx, &l1, &l2); - widget = idx == 0 ? mixer_mix_drawing : mixer_drawing[idx-1]; - if (GTK_WIDGET_VISIBLE(widget) && (pixmap[idx] != NULL)) { - redraw_meters(idx, widget->allocation.width, widget->allocation.height, l1, l2); - gdk_draw_pixmap(widget->window, - widget->style->black_gc, - pixmap[idx], - 0, 0, - 0, 0, - widget->allocation.width, widget->allocation.height); - } + update_meter(idx); } } for (idx = MAX_PCM_OUTPUT_CHANNELS + MAX_SPDIF_CHANNELS + 1; idx <= input_channels + MAX_PCM_OUTPUT_CHANNELS + MAX_SPDIF_CHANNELS; idx++) { - get_levels(idx, &l1, &l2); - widget = idx == 0 ? mixer_mix_drawing : mixer_drawing[idx-1]; - if (GTK_WIDGET_VISIBLE(widget) && (pixmap[idx] != NULL)) { - redraw_meters(idx, widget->allocation.width, widget->allocation.height, l1, l2); - gdk_draw_pixmap(widget->window, - widget->style->black_gc, - pixmap[idx], - 0, 0, - 0, 0, - widget->allocation.width, widget->allocation.height); - } + update_meter(idx); } for (idx = MAX_PCM_OUTPUT_CHANNELS + MAX_SPDIF_CHANNELS + MAX_INPUT_CHANNELS + 1; \ idx <= spdif_channels + MAX_PCM_OUTPUT_CHANNELS + MAX_SPDIF_CHANNELS + MAX_INPUT_CHANNELS; idx++) { - get_levels(idx, &l1, &l2); - widget = idx == 0 ? mixer_mix_drawing : mixer_drawing[idx-1]; - if (GTK_WIDGET_VISIBLE(widget) && (pixmap[idx] != NULL)) { - redraw_meters(idx, widget->allocation.width, widget->allocation.height, l1, l2); - gdk_draw_pixmap(widget->window, - widget->style->black_gc, - pixmap[idx], - 0, 0, - 0, 0, - widget->allocation.width, widget->allocation.height); - } + update_meter(idx); } return TRUE; } @@ -270,6 +256,13 @@ void level_meters_init(void) /* older ALSA driver, using MIXER type */ snd_ctl_elem_value_set_interface(peaks, SND_CTL_ELEM_IFACE_MIXER); + + penGreenShadow = get_pen(0, 0x77ff, 0); + penGreenLight = get_pen(0, 0xffff, 0); + penOrangeShadow = get_pen(0xddff, 0x55ff, 0); + penOrangeLight = get_pen(0xffff, 0x99ff, 0); + penRedShadow = get_pen(0xaaff, 0, 0); + penRedLight = get_pen(0xffff, 0, 0); } void level_meters_postinit(void) diff --git a/envy24control/midi.c b/envy24control/midi.c index ff12537..dce8d46 100644 --- a/envy24control/midi.c +++ b/envy24control/midi.c @@ -243,7 +243,7 @@ int midi_init(char *appname, int channel, int midi_enhanced) void mixer_adjust(GtkAdjustment *adj, gpointer data); void mixer_set_mute(int stream, int left, int right); -void midi_process(gpointer data, gint source, GdkInputCondition condition) +gboolean midi_process(GIOChannel *gio, GIOCondition condition, gpointer data) { snd_seq_event_t *ev; static GtkAdjustment *adj=0; @@ -306,6 +306,7 @@ void midi_process(gpointer data, gint source, GdkInputCondition condition) snd_seq_free_event(ev); } while (snd_seq_event_input_pending(seq, 0) > 0); + return TRUE; } /* ************************************************* */ diff --git a/envy24control/midi.h b/envy24control/midi.h index f821d42..b71eafd 100644 --- a/envy24control/midi.h +++ b/envy24control/midi.h @@ -7,7 +7,7 @@ int midi_init(char *appname, int channel, int midi_enhanced); int midi_close(); void midi_maxstreams(int); int midi_controller(int c, int v); -void midi_process(gpointer data, gint source, GdkInputCondition condition); +gboolean midi_process(GIOChannel *gio, GIOCondition condition, gpointer data); int midi_button(int b, int v); #endif diff --git a/envy24control/mixer.c b/envy24control/mixer.c index dd42681..46171cc 100644 --- a/envy24control/mixer.c +++ b/envy24control/mixer.c @@ -39,7 +39,7 @@ extern int input_channels, output_channels, pcm_output_channels, spdif_channels, static int is_active(GtkWidget *widget) { - return GTK_TOGGLE_BUTTON(widget)->active ? 1 : 0; + return gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)) ? 1 : 0; } void mixer_update_stream(int stream, int vol_flag, int sw_flag) @@ -181,10 +181,10 @@ void mixer_adjust(GtkAdjustment *adj, gpointer data) int stereo = is_active(mixer_stereo_toggle[stream-1]) ? 1 : 0; int vol[2] = { -1, -1 }; - vol[button] = 96 - adj->value; + vol[button] = 96 - gtk_adjustment_get_value(adj); if (stereo) { - gtk_adjustment_set_value(GTK_ADJUSTMENT(mixer_adj[stream-1][button ^ 1]), adj->value); - vol[button ^ 1] = 96 - adj->value; + gtk_adjustment_set_value(GTK_ADJUSTMENT(mixer_adj[stream-1][button ^ 1]), gtk_adjustment_get_value(adj)); + vol[button ^ 1] = 96 - gtk_adjustment_get_value(adj); } set_volume1(stream, vol[0], vol[1]); } diff --git a/envy24control/new_process.c b/envy24control/new_process.c index 7ea89a6..2168489 100644 --- a/envy24control/new_process.c +++ b/envy24control/new_process.c @@ -20,9 +20,9 @@ int new_process(char * const cmd_line[MAX_PARAM]) struct stat file_status; /* memory for storage of function pointers from the signal handling routines */ - void (*int_stat)(); - void (*quit_stat)(); - void (*usr2_stat)(); + void (*int_stat)(int); + void (*quit_stat)(int); + void (*usr2_stat)(int); /* * check command file diff --git a/envy24control/patchbay.c b/envy24control/patchbay.c index 89bdf72..57ddf13 100644 --- a/envy24control/patchbay.c +++ b/envy24control/patchbay.c @@ -30,7 +30,7 @@ extern int output_channels, input_channels, pcm_output_channels, spdif_channels; static int is_active(GtkWidget *widget) { - return GTK_TOGGLE_BUTTON(widget)->active ? 1 : 0; + return gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)) ? 1 : 0; } static int get_toggle_index(int stream) diff --git a/envy24control/profiles.c b/envy24control/profiles.c index 8e23bfd..9e5cde1 100644 --- a/envy24control/profiles.c +++ b/envy24control/profiles.c @@ -54,9 +54,9 @@ void subst_tilde_in_filename(char * const filename) if ((pos_after_tilde = strchr(filename, '~')) != NULL) { pos_after_tilde++; - strncpy(new_filename, getenv("HOME"), MAX_FILE_NAME_LENGTH); - strncpy(new_filename + strlen(new_filename), pos_after_tilde, MAX_FILE_NAME_LENGTH - strlen(new_filename)); - new_filename[MAX_FILE_NAME_LENGTH - 1] = '\0'; + strncpy(new_filename, getenv("HOME"), sizeof(new_filename) - 1); + strncpy(new_filename + strlen(new_filename), pos_after_tilde, sizeof(new_filename) - strlen(new_filename) - 1); + new_filename[sizeof(new_filename) - 1] = '\0'; strncpy(filename, new_filename, MAX_FILE_NAME_LENGTH); } } @@ -78,7 +78,9 @@ int which_cfgfile(char ** const cfgfile) (inputFile = fopen(SYS_PROFILERC, "r")) == NULL) { res = -ENOENT; } else { - fclose(inputFile); + if (inputFile != NULL) { + fclose(inputFile); + } *cfgfile = SYS_PROFILERC; res = EXIT_SUCCESS; } @@ -94,7 +96,9 @@ int get_file_size(const char * const filename) { struct stat file_status; - strncpy(filename_without_tilde, filename, MAX_FILE_NAME_LENGTH); + if (filename_without_tilde != filename) { + strncpy(filename_without_tilde, filename, MAX_FILE_NAME_LENGTH); + } filename_without_tilde[MAX_FILE_NAME_LENGTH - 1] = '\0'; subst_tilde_in_filename(filename_without_tilde); if (stat(filename_without_tilde, &file_status) < 0) { @@ -470,7 +474,8 @@ int get_pos_name_header_from_card(const char * const buffer, const int profile_n char place_holder; int pos_card_begin, pos_card_end, pos_name_header; - pos_card_begin = get_card_begin(buffer, profile_number, card_number); + if ((pos_card_begin = get_card_begin(buffer, profile_number, card_number)) < 0) + return pos_card_begin; pos_card_end = get_card_end(buffer, profile_number, card_number); place_holder = PLACE_HOLDER_STR; strncpy(header, PROFILE_NAME_TEMPL, MAX_SEARCH_FIELD_LENGTH); @@ -522,7 +527,7 @@ int reorganize_profiles(char * const buffer, const int max_length) { int profile_number, card_number, card_number_max; int res; - int pos_profile_begin, pos_profile_end, pos_card_begin, pos_card_end, pos_name_header; + int pos_profile_begin, pos_card_begin, pos_card_end, pos_name_header; int pos_alsa_section_begin, pos_after_alsa_section; char header[MAX_SEARCH_FIELD_LENGTH]; void *buffer_copy = NULL; @@ -547,7 +552,6 @@ int reorganize_profiles(char * const buffer, const int max_length) compose_search_string(header, PROFILE_HEADER_TEMPL, profile_or_card_number_as_str, place_holder, MAX_SEARCH_FIELD_LENGTH); header[MAX_SEARCH_FIELD_LENGTH - 1] = '\0'; snprintf(buffer_copy + strlen(buffer_copy), max_length - strlen(buffer_copy), "%s\n", header); - pos_profile_end = get_profile_end(buffer, profile_number); /* search max card number in profile */ card_number_max = get_max_card_number_in_profile(buffer, profile_number); for (card_number = 0; card_number <= card_number_max; card_number++) @@ -641,9 +645,9 @@ int save_restore_alsactl_settings(char * const tmpfile, const int card_number, c void compose_tmpfile_name(char * const tmpfile, const char * const cfgfile) { - strncpy(tmpfile, cfgfile, MAX_FILE_NAME_LENGTH); + strncpy(tmpfile, cfgfile, MAX_FILE_NAME_LENGTH - 1); tmpfile[MAX_FILE_NAME_LENGTH - 1] = '\0'; - strncpy(tmpfile + strlen(tmpfile), "_alsactl_tmp", MAX_FILE_NAME_LENGTH - strlen(tmpfile)); + strncpy(tmpfile + strlen(tmpfile), "_alsactl_tmp", MAX_FILE_NAME_LENGTH - strlen(tmpfile) - 1); tmpfile[MAX_FILE_NAME_LENGTH - 1] = '\0'; } @@ -1145,13 +1149,16 @@ int save_restore(const char * const operation, const int profile_number, const i fprintf(stderr, "Cannot save settings for card '%d' in profile '%d'.\n", card_number, profile_number); return -errno; } + close(res); unlink(cfgfile); } else { + close(res); if ((res = open(cfgfile, O_RDWR | 0400000 /* O_NOFOLLOW */, FILE_CREA_MODE)) < 0) { fprintf(stderr, "Cannot open configuration file '%s' for writing.\n", cfgfile); fprintf(stderr, "Cannot save settings for card '%d' in profile '%d'.\n", card_number, profile_number); return -errno; } + close(res); } res = save_profile(profile_number, card_number, profile_name, cfgfile); } else if (!strcmp(operation, ALSACTL_OP_RESTORE)) { diff --git a/envy24control/profiles.h b/envy24control/profiles.h index 2063bff..b586291 100644 --- a/envy24control/profiles.h +++ b/envy24control/profiles.h @@ -44,7 +44,7 @@ #define MAX_PROFILE_SIZE 32768 #define MAX_SEARCH_FIELD_LENGTH 1024 #define MAX_FILE_NAME_LENGTH 1024 -#define MAX_NUM_STR_LENGTH 10 +#define MAX_NUM_STR_LENGTH 11 #define TOKEN_SEP "|" #define SEP_CHAR ' ' diff --git a/envy24control/strstr_icase_blank.c b/envy24control/strstr_icase_blank.c index 8078d2a..6b7c500 100644 --- a/envy24control/strstr_icase_blank.c +++ b/envy24control/strstr_icase_blank.c @@ -48,6 +48,7 @@ int strstr_icase_blank(const char * const string1, const char * const string2) char search_string[MAX_SEARCH_FIELD_LENGTH]; char *pstr; int pos_first_non_blank; + size_t len; strncpy(search_string, string2, MAX_SEARCH_FIELD_LENGTH); search_string[MAX_SEARCH_FIELD_LENGTH - 1] = '\0'; @@ -84,7 +85,11 @@ int strstr_icase_blank(const char * const string1, const char * const string2) } } } - strncpy(search_string, cmp_line, strlen(search_string)); + len = strlen(search_string); + if (len > sizeof(search_string) - 1) + len = sizeof(search_string) - 1; + strncpy(search_string, cmp_line, len); + search_string[len] = '\0'; position = 0; while (position < strlen(string1)) diff --git a/envy24control/volume.c b/envy24control/volume.c index 471f9ce..b071ad6 100644 --- a/envy24control/volume.c +++ b/envy24control/volume.c @@ -217,7 +217,7 @@ void dac_volume_adjust(GtkAdjustment *adj, gpointer data) { int idx = (int)(long)data; snd_ctl_elem_value_t *val; - int err, ival = -(int)adj->value; + int err, ival = -(int)gtk_adjustment_get_value(adj); char text[16]; snd_ctl_elem_value_alloca(&val); @@ -235,7 +235,7 @@ void adc_volume_adjust(GtkAdjustment *adj, gpointer data) { int idx = (int)(long)data; snd_ctl_elem_value_t *val; - int err, ival = -(int)adj->value; + int err, ival = -(int)gtk_adjustment_get_value(adj); char text[16]; snd_ctl_elem_value_alloca(&val); @@ -253,7 +253,7 @@ void ipga_volume_adjust(GtkAdjustment *adj, gpointer data) { int idx = (int)(long)data; snd_ctl_elem_value_t *val; - int err, ival = -(int)adj->value; + int err, ival = -(int)gtk_adjustment_get_value(adj); char text[16]; snd_ctl_elem_value_alloca(&val); diff --git a/hdajackretask/apply-changes.c b/hdajackretask/apply-changes.c index 0d558f7..381ccf2 100644 --- a/hdajackretask/apply-changes.c +++ b/hdajackretask/apply-changes.c @@ -213,9 +213,11 @@ cleanup: static gboolean restore_soundserver(struct soundserver* state, GError** err) { gboolean ok = FALSE; + gchar* clientconf; + switch (state->type) { case PULSEAUDIO: - gchar* clientconf = get_pulseaudio_client_conf(); + clientconf = get_pulseaudio_client_conf(); if (state->was_killed && g_unlink(clientconf) != 0) { g_set_error(err, quark(), 0, "%s", g_strerror(errno)); g_free(clientconf); diff --git a/hdajackretask/apply-changes.h b/hdajackretask/apply-changes.h index e08d66d..e431a0d 100644 --- a/hdajackretask/apply-changes.h +++ b/hdajackretask/apply-changes.h @@ -9,7 +9,7 @@ gboolean apply_changes_reconfig(pin_configs_t* pins, int entries, int card, int gboolean apply_changes_boot(pin_configs_t* pins, int entries, int card, int device, const char* model, const char* hints, GError** err); -gboolean reset_changes_boot(); +gboolean reset_changes_boot(GError ** err); #endif diff --git a/hdspconf/src/HC_AboutText.h b/hdspconf/src/HC_AboutText.h index 2a76c40..1b579e5 100644 --- a/hdspconf/src/HC_AboutText.h +++ b/hdspconf/src/HC_AboutText.h @@ -32,7 +32,7 @@ public: HC_AboutText(int x, int y, int w, int h); void draw(); private: - char *text; + const char *text; }; #endif diff --git a/hdspconf/src/HC_Aeb.cxx b/hdspconf/src/HC_Aeb.cxx index d7a98d6..6df4848 100644 --- a/hdspconf/src/HC_Aeb.cxx +++ b/hdspconf/src/HC_Aeb.cxx @@ -21,7 +21,7 @@ #pragma implementation #include "HC_Aeb.h" -static void setAebStatus(char *ctl_name, int val, int card_index) +static void setAebStatus(const char *ctl_name, int val, int card_index) { int err; char card_name[6]; diff --git a/hdspconf/src/HC_SpdifOut.cxx b/hdspconf/src/HC_SpdifOut.cxx index 71c7bfe..674140b 100644 --- a/hdspconf/src/HC_SpdifOut.cxx +++ b/hdspconf/src/HC_SpdifOut.cxx @@ -21,7 +21,7 @@ #pragma implementation #include "HC_SpdifOut.h" -static void setSpdifBit(char *ctl_name, int val, int card_index) +static void setSpdifBit(const char *ctl_name, int val, int card_index) { int err; char card_name[6]; diff --git a/hdspconf/src/HC_SyncCheck.h b/hdspconf/src/HC_SyncCheck.h index 6aa6d13..c79d21f 100644 --- a/hdspconf/src/HC_SyncCheck.h +++ b/hdspconf/src/HC_SyncCheck.h @@ -51,7 +51,7 @@ public: void setAdatSyncStatus(unsigned char s); void setWCStatus(unsigned char s); private: - char *adat_name; + const char *adat_name; int h_step; Fl_Box_Draw_F *draw_box; }; diff --git a/hdspmixer/src/HDSPMixerOutput.cxx b/hdspmixer/src/HDSPMixerOutput.cxx index 7f80a74..8b4db34 100644 --- a/hdspmixer/src/HDSPMixerOutput.cxx +++ b/hdspmixer/src/HDSPMixerOutput.cxx @@ -93,7 +93,7 @@ static char const *labels_aio_ss_input[18] = { "AES.L", "AES.R", "A 1", "A 2", "A 3", "A 4", "A 5", "A 6", "A 7", "A 8", - "AEB 1", "AEB 2", "AEB 3," "AEB 4" + "AEB 1", "AEB 2", "AEB 3", "AEB 4" }; static char const *labels_aio_ss_playback[20] = { diff --git a/ld10k1/src/dl10k1.c b/ld10k1/src/dl10k1.c index 42d54a1..b2f3a54 100644 --- a/ld10k1/src/dl10k1.c +++ b/ld10k1/src/dl10k1.c @@ -354,7 +354,7 @@ int dump_load(int audigy, char *file_name) fctrl = (ld10k1_ctl_dump_t *)ptr; memset(ctrl, 0, sizeof(emu10k1_fx8010_control_gpr_t) * header->ctl_count); for (i = 0; i < header->ctl_count; i++) { - strcpy(ctrl[i].id.name, fctrl[i].name); + strcpy((char *)ctrl[i].id.name, fctrl[i].name); ctrl[i].id.iface = EMU10K1_CTL_ELEM_IFACE_MIXER; ctrl[i].id.index = fctrl[i].index; ctrl[i].vcount = fctrl[i].vcount; diff --git a/ld10k1/src/ld10k1.c b/ld10k1/src/ld10k1.c index b0b5a9b..97be2c0 100644 --- a/ld10k1/src/ld10k1.c +++ b/ld10k1/src/ld10k1.c @@ -77,7 +77,7 @@ void error(const char *fmt, ...) va_end(va); } -static void log(const char *fmt, ...) +static void alog(const char *fmt, ...) { va_list va; @@ -116,7 +116,7 @@ static void cleanup() { if (pidpath[0]) unlink(pidpath); - log("Exiting daemon"); + alog("Exiting daemon"); } static void term_handler(int i) @@ -247,7 +247,7 @@ int main(int argc, char *argv[]) pidfile = fopen(pidpath, "wt"); if (!pidfile) { - log("%s: pidfile (%s)\n", strerror(errno), pidpath); + alog("%s: pidfile (%s)\n", strerror(errno), pidpath); return 1; } @@ -263,7 +263,7 @@ int main(int argc, char *argv[]) dup2(fileno(logfile), fileno(stdout)); } - log("Starting daemon"); + alog("Starting daemon"); } params.type = uses_pipe ? COMM_TYPE_LOCAL : COMM_TYPE_IP; diff --git a/ld10k1/src/ld10k1_driver.c b/ld10k1/src/ld10k1_driver.c index 38ee873..05b1415 100644 --- a/ld10k1/src/ld10k1_driver.c +++ b/ld10k1/src/ld10k1_driver.c @@ -199,7 +199,7 @@ int ld10k1_update_driver(ld10k1_dsp_mgr_t *dsp_mgr) if (!add_ctrl) return LD10K1_ERR_NO_MEM; for (i = 0, item = dsp_mgr->add_ctl_list; item != NULL; item = item->next, i++) { - strcpy(add_ctrl[i].id.name, item->ctl.name); + strcpy((char *)add_ctrl[i].id.name, item->ctl.name); add_ctrl[i].id.iface = EMU10K1_CTL_ELEM_IFACE_MIXER; add_ctrl[i].id.index = item->ctl.index; add_ctrl[i].vcount = item->ctl.vcount; @@ -225,7 +225,7 @@ int ld10k1_update_driver(ld10k1_dsp_mgr_t *dsp_mgr) if (!del_ids) return LD10K1_ERR_NO_MEM; for (i = 0, item = dsp_mgr->del_ctl_list; item != NULL; item = item->next, i++) { - strcpy(del_ids[i].name, item->ctl.name); + strcpy((char *)del_ids[i].name, item->ctl.name); del_ids[i].iface = EMU10K1_CTL_ELEM_IFACE_MIXER; del_ids[i].index = item->ctl.index; } diff --git a/ld10k1/src/ld10k1_fnc.c b/ld10k1/src/ld10k1_fnc.c index c88f4c0..7e99d55 100644 --- a/ld10k1/src/ld10k1_fnc.c +++ b/ld10k1/src/ld10k1_fnc.c @@ -2152,7 +2152,7 @@ int ld10k1_conn_point_add(ld10k1_dsp_mgr_t *dsp_mgr, ld10k1_conn_point_t *point, int allocgprcount = 0; int allocinstrcount = 0; unsigned int reserved[2]; - unsigned int res[2]; + int res[2]; int reservedcount = 0; int usedreserved = 0; diff --git a/ld10k1/src/ld10k1_fnc1.c b/ld10k1/src/ld10k1_fnc1.c index ddc43c6..c3ea754 100644 --- a/ld10k1/src/ld10k1_fnc1.c +++ b/ld10k1/src/ld10k1_fnc1.c @@ -792,12 +792,9 @@ int ld10k1_fnc_name_find(int data_conn, int op, int size) int ld10k1_fnc_name_rename(int data_conn, int op, int size) { ld10k1_fnc_name_t name_info; - int ret; int err; ld10k1_patch_t *patch; - ret = -1; - if ((err = receive_msg_data(data_conn, &name_info, sizeof(ld10k1_fnc_name_t))) < 0) return err; diff --git a/ld10k1/src/lo10k1.c b/ld10k1/src/lo10k1.c index 93a9369..c1223cb 100644 --- a/ld10k1/src/lo10k1.c +++ b/ld10k1/src/lo10k1.c @@ -473,8 +473,9 @@ static int transfer_patch(int udin, char *ctrl_opt, liblo10k1_emu_patch_t *ep, l if (*ctrl_opt != ',') { error("wrong ctrl option format - wrong separator beetwen subfunctions"); return 1; - } else - *ctrl_opt++; + } else { + ctrl_opt++; + } } } @@ -691,8 +692,9 @@ static int transfer_native_patch(liblo10k1_dsp_patch_t *p, char *ctrl_opt) if (*ctrl_opt != ',') { error("wrong ctrl option format - wrong separator beetwen subfunctions"); return 1; - } else - *ctrl_opt++; + } else { + ctrl_opt++; + } } } @@ -1466,7 +1468,6 @@ int main(int argc, char *argv[]) int opt_list; int opt_setup; - int opt_info; int opt_add; int opt_del; int opt_con_add; @@ -1526,7 +1527,6 @@ int main(int argc, char *argv[]) opt_add = 0; opt_del = 0; opt_list_patch = NULL; - opt_info = 0; opt_con_add = 0; opt_con_del = 0; opt_debug = 0; @@ -1618,7 +1618,7 @@ int main(int argc, char *argv[]) opt_list_patch = optarg; break; case 'i': - opt_info = 1; + /* nothing */ break; case 'q': opt_con_add = 1; diff --git a/mixartloader/mixartloader.c b/mixartloader/mixartloader.c index f34ed58..19a1615 100644 --- a/mixartloader/mixartloader.c +++ b/mixartloader/mixartloader.c @@ -89,7 +89,8 @@ static int get_file_name(const char *key, unsigned int idx, char *fname) for (p = buf + len; *p && isspace(*p); p++) ; if (*p == '/') { - strncpy(fname, p, MAX_PATH); + strncpy(fname, p, MAX_PATH - 1); + fname[MAX_PATH - 1] = '\0'; } else { snprintf(fname, MAX_PATH, "%s/%s", DATAPATH, p); } diff --git a/pcxhrloader/pcxhrloader.c b/pcxhrloader/pcxhrloader.c index de9420e..5cd1845 100644 --- a/pcxhrloader/pcxhrloader.c +++ b/pcxhrloader/pcxhrloader.c @@ -89,7 +89,8 @@ static int get_file_name(const char *key, unsigned int idx, char *fname) for (p = buf + len; *p && isspace(*p); p++) ; if (*p == '/') { - strncpy(fname, p, MAX_PATH); + strncpy(fname, p, MAX_PATH - 1); + fname[MAX_PATH - 1] = '\0'; } else { snprintf(fname, MAX_PATH, "%s/%s", DATAPATH, p); } diff --git a/rmedigicontrol/rmedigicontrol.c b/rmedigicontrol/rmedigicontrol.c index 973299b..1119637 100644 --- a/rmedigicontrol/rmedigicontrol.c +++ b/rmedigicontrol/rmedigicontrol.c @@ -29,7 +29,7 @@ void destroy(GtkWidget *widget,gpointer data) int main(int argc, char *argv[]) { int card; - char name[8],*err; + char name[16],*err; snd_ctl_card_info_t *hw_info; card_type_t type; diff --git a/usx2yloader/usx2yloader.c b/usx2yloader/usx2yloader.c index 61583c2..363cbdc 100644 --- a/usx2yloader/usx2yloader.c +++ b/usx2yloader/usx2yloader.c @@ -225,7 +225,8 @@ static int get_file_name(const char *key, unsigned int idx, char *fname) for (p = buf + len; *p && isspace(*p); p++) ; if (*p == '/') { - strncpy(fname, p, MAX_PATH); + strncpy(fname, p, MAX_PATH - 1); + fname[MAX_PATH - 1] = '\0'; } else { snprintf(fname, MAX_PATH, "%s/%s", DATAPATH, p); } diff --git a/vxloader/vxloader.c b/vxloader/vxloader.c index 69d654d..cc62e1e 100644 --- a/vxloader/vxloader.c +++ b/vxloader/vxloader.c @@ -214,7 +214,8 @@ static int get_file_name(const char *key, unsigned int idx, char *fname) for (p = buf + len; *p && isspace(*p); p++) ; if (*p == '/') { - strncpy(fname, p, MAX_PATH); + strncpy(fname, p, MAX_PATH - 1); + fname[MAX_PATH - 1] = '\0'; } else { snprintf(fname, MAX_PATH, "%s/%s", DATAPATH, p); }