From 471ba9b3cfd6242a8670ef6e4f4b876241b0b89e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Aulery?= Date: Wed, 25 Mar 2015 18:38:53 +0100 Subject: [PATCH 01/66] cspctl.1: remove ".LO" macro. This macro don't exist for manpages syntax. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Stéphane Aulery Signed-off-by: Takashi Iwai --- sb16_csp/cspctl.1 | 1 - 1 file changed, 1 deletion(-) diff --git a/sb16_csp/cspctl.1 b/sb16_csp/cspctl.1 index 10249f8..e9ccf6d 100644 --- a/sb16_csp/cspctl.1 +++ b/sb16_csp/cspctl.1 @@ -1,5 +1,4 @@ .TH cspctl 1 "April 27, 2000" -.LO 1 .SH NAME cspctl \- Sound Blaster 16 ASP/CSP control program From 8a241fa7db659de7066270515f1390a5e7904443 Mon Sep 17 00:00:00 2001 From: Takashi Iwai Date: Fri, 2 Oct 2015 12:38:33 +0200 Subject: [PATCH 02/66] Add some hdajacksensetest/* files to .gitignore Signed-off-by: Takashi Iwai --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index 93127b4..3b1f302 100644 --- a/.gitignore +++ b/.gitignore @@ -123,6 +123,9 @@ hdajackretask/configure hdajackretask/Makefile hdajackretask/README.generated.h hdajackretask/hdajackretask +hdajacksensetest/Makefile +hdajacksensetest/configure +hdajacksensetest/hdajacksensetest hda-verb/Makefile hda-verb/configure hda-verb/hda-verb From ed9c1b7b4e82e3ea07044ed019f5bf3862bde60a Mon Sep 17 00:00:00 2001 From: Takashi Iwai Date: Fri, 2 Oct 2015 12:41:02 +0200 Subject: [PATCH 03/66] Add */compile to .gitignore Recent autotools give more garbages. Signed-off-by: Takashi Iwai --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 3b1f302..120b234 100644 --- a/.gitignore +++ b/.gitignore @@ -30,6 +30,7 @@ autom4te.cache stamp-h1 version distdir +*/compile ac3dec/Makefile ac3dec/ac3dec @@ -62,7 +63,6 @@ hdsploader/configure hwmixvolume/Makefile hwmixvolume/configure ld10k1/Makefile -ld10k1/compile ld10k1/ld10k1d ld10k1/configure ld10k1/m4/ From 44f37501714a6f61fc44d36b9d9f1a5cff805696 Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Tue, 27 Oct 2015 14:34:05 +0100 Subject: [PATCH 04/66] Release v1.1.0 Signed-off-by: Jaroslav Kysela --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index dd8898a..42423ed 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -VERSION = 1.0.29 +VERSION = 1.1.0 TOP = . SUBDIRS = as10k1 envy24control hdsploader hdspconf hdspmixer \ mixartloader pcxhrloader rmedigicontrol sb16_csp seq sscape_ctl \ From 70118f5f93a4179a0df61925e64baf873f126be0 Mon Sep 17 00:00:00 2001 From: Michel Normand Date: Mon, 20 Jun 2016 15:26:06 +0200 Subject: [PATCH 05/66] gcc6 narrowing error gcc6 narrowing error compiling for PowerPC archi === [ 51s] Cus428Midi.cc: At global scope: [ 51s] Cus428Midi.cc:83:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing] [ 51s] }; === proposed patch as suggested in https://gcc.gnu.org/gcc-6/porting_to.html Signed-off-by: Michel Normand Signed-off-by: Takashi Iwai --- hdspmixer/src/channelmap.cxx | 158 +++++++++++++++++------------------ us428control/Cus428Midi.cc | 30 +++---- 2 files changed, 94 insertions(+), 94 deletions(-) diff --git a/hdspmixer/src/channelmap.cxx b/hdspmixer/src/channelmap.cxx index b7bdded..bfb136d 100644 --- a/hdspmixer/src/channelmap.cxx +++ b/hdspmixer/src/channelmap.cxx @@ -55,7 +55,7 @@ char channel_map_mf_ss[26] = { 16, 17, 18, 19, 20, 21, 22, 23, /* ADAT */ 24, 25, /* SPDIF */ 26, 27, /* Phones L+R, only a destination channel */ - -1, -1, -1, -1, -1, -1 + (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1 }; // Digiface/Multiface @@ -65,13 +65,13 @@ char meter_map_ds[26] = { 16, 17, 18, 19, /* ADAT on Multiface, ADAT3 on Digiface */ 24, 25, /* SPDIF */ 26, 27, /* Headphones */ - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 + (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1 }; char channel_map_ds[26] = { 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 24, 25, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 + (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1 }; char dest_map_ds[8] = { @@ -84,10 +84,10 @@ char dest_map_rpm[3] = { }; char channel_map_rpm[26] = { - 0, 1, 2, 3, 4, 5, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1 + 0, 1, 2, 3, 4, 5, (char)-1, (char)-1, + (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, + (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, + (char)-1, (char)-1 }; // HDSP 9652 @@ -158,21 +158,21 @@ char channel_map_unity_ds[HDSPM_MAX_CHANNELS] = { 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, + (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, + (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, + (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, + (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, }; char channel_map_unity_qs[HDSPM_MAX_CHANNELS] = { 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, + (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, + (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, + (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, + (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, + (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, + (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, }; // HDSPe RayDAT @@ -208,10 +208,10 @@ char channel_map_raydat_ss[HDSPM_MAX_CHANNELS] = { 28, 29, 30, 31, 32, 33, 34, 35, /* ADAT 4 */ 0, 1, /* AES */ 2, 3, /* SPDIF */ - -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, + (char)-1, (char)-1, (char)-1, (char)-1, + (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, + (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, + (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, }; char channel_map_raydat_ds[HDSPM_MAX_CHANNELS] = { @@ -221,12 +221,12 @@ char channel_map_raydat_ds[HDSPM_MAX_CHANNELS] = { 16, 17, 18, 19, /* ADAT 4 */ 0, 1, /* AES */ 2, 3, /* SPDIF */ - -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, + (char)-1, (char)-1, (char)-1, (char)-1, + (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, + (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, + (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, + (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, + (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, }; char channel_map_raydat_qs[HDSPM_MAX_CHANNELS] = { @@ -236,13 +236,13 @@ char channel_map_raydat_qs[HDSPM_MAX_CHANNELS] = { 10, 11, /* ADAT 4 */ 0, 1, /* AES */ 2, 3, /* SPDIF */ - -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, + (char)-1, (char)-1, (char)-1, (char)-1, + (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, + (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, + (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, + (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, + (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, + (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, }; // HDSPe AIO @@ -284,12 +284,12 @@ char channel_map_aio_in_ss[HDSPM_MAX_CHANNELS] = { 10, 11, /* spdif in */ 12, 13, 14, 15, 16, 17, 18, 19, /* ADAT in */ 2, 3, 4, 5, /* AEB */ - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, + (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, + (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, + (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, + (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, + (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, + (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, }; char channel_map_aio_out_ss[HDSPM_MAX_CHANNELS] = { @@ -299,12 +299,12 @@ char channel_map_aio_out_ss[HDSPM_MAX_CHANNELS] = { 12, 13, 14, 15, 16, 17, 18, 19, /* ADAT out */ 6, 7, /* phone out */ 2, 3, 4, 5, /* AEB */ - -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, + (char)-1, (char)-1, (char)-1, (char)-1, + (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, + (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, + (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, + (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, + (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, }; char channel_map_aio_in_ds[HDSPM_MAX_CHANNELS] = { @@ -313,13 +313,13 @@ char channel_map_aio_in_ds[HDSPM_MAX_CHANNELS] = { 10, 11, /* spdif in */ 12, 14, 16, 18, /* adat in */ 2, 3, 4, 5, /* AEB */ - -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1 + (char)-1, (char)-1, + (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, + (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, + (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, + (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, + (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, + (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1 }; char channel_map_aio_out_ds[HDSPM_MAX_CHANNELS] = { @@ -329,12 +329,12 @@ char channel_map_aio_out_ds[HDSPM_MAX_CHANNELS] = { 12, 14, 16, 18, /* adat out */ 6, 7, /* phone out */ 2, 3, 4, 5, /* AEB */ - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1 + (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, + (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, + (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, + (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, + (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, + (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1 }; char channel_map_aio_in_qs[HDSPM_MAX_CHANNELS] = { @@ -343,13 +343,13 @@ char channel_map_aio_in_qs[HDSPM_MAX_CHANNELS] = { 10, 11, /* spdif in */ 12, 16, /* adat in */ 2, 3, 4, 5, /* AEB */ - -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1 + (char)-1, (char)-1, (char)-1, (char)-1, + (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, + (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, + (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, + (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, + (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, + (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1 }; char channel_map_aio_out_qs[HDSPM_MAX_CHANNELS] = { @@ -359,13 +359,13 @@ char channel_map_aio_out_qs[HDSPM_MAX_CHANNELS] = { 12, 16, /* adat out */ 6, 7, /* phone out */ 2, 3, 4, 5, /* AEB */ - -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1 + (char)-1, (char)-1, + (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, + (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, + (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, + (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, + (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, + (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1 }; // HDSP AES32 and HDSPe AES @@ -383,11 +383,11 @@ char channel_map_aes32[HDSPM_MAX_CHANNELS] = { 10, 11, /* AES 6 */ 12, 13, /* AES 7 */ 14, 15, /* AES 8 */ - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1 + (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, + (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, + (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, + (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, + (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, + (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1 }; diff --git a/us428control/Cus428Midi.cc b/us428control/Cus428Midi.cc index b9e6783..374eb29 100644 --- a/us428control/Cus428Midi.cc +++ b/us428control/Cus428Midi.cc @@ -32,22 +32,22 @@ char Cus428Midi::KnobParam[] = { 0x2A, 0x29, 0x28, - -1, + (char)-1, 0x10, 0x11, 0x18, 0x19, 0x1A, - -1, - -1, - -1, - -1, + (char)-1, + (char)-1, + (char)-1, + (char)-1, 0x2C, 0x2D, 0x2E, 0x2F, - -1, - -1, + (char)-1, + (char)-1, 0x20, 0x21, 0x22, @@ -64,14 +64,14 @@ char Cus428Midi::KnobParam[] = { 5, 6, 7, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, + (char)-1, + (char)-1, + (char)-1, + (char)-1, + (char)-1, + (char)-1, + (char)-1, + (char)-1, 0x30, 0x31, 0x32, From b01cf309bd040a5922c989150900e0005336807c Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Tue, 20 Dec 2016 10:12:29 +0100 Subject: [PATCH 06/66] Release v1.1.3 Signed-off-by: Jaroslav Kysela --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 42423ed..8a47f0c 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -VERSION = 1.1.0 +VERSION = 1.1.3 TOP = . SUBDIRS = as10k1 envy24control hdsploader hdspconf hdspmixer \ mixartloader pcxhrloader rmedigicontrol sb16_csp seq sscape_ctl \ From e9268227476c08fcefe58f24709ae433c0ab0a45 Mon Sep 17 00:00:00 2001 From: Takashi Iwai Date: Tue, 22 Aug 2017 14:38:10 +0200 Subject: [PATCH 07/66] as10k1: Drop superfluous inline prefix output_tram_line() has a superfluous inline prefix and this interferes the build with clang. Let's drop it. Signed-off-by: Takashi Iwai --- as10k1/as10k1.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/as10k1/as10k1.c b/as10k1/as10k1.c index 96af0c3..e226051 100644 --- a/as10k1/as10k1.c +++ b/as10k1/as10k1.c @@ -366,8 +366,8 @@ void as_exit(const char *message) exit(1); } -inline void output_tram_line( struct list_head *line_head, int type){ - +void output_tram_line(struct list_head *line_head, int type) +{ struct tram *tram_sym; struct list_head *entry; From f0ffe1b732f80abd29cbb319e1feeaa37be5a0a6 Mon Sep 17 00:00:00 2001 From: Takashi Sakamoto Date: Sat, 4 Nov 2017 11:28:35 +0900 Subject: [PATCH 08/66] echomixer: obsolete usage of dimension information In current implementation for a series of echoaudio drivers, some control element set delivers information to use element values for multi-dimensional array. Essentially, ALSA control interface of asound.h has no common way to parse the information. As a result, the drivers forces 'echomixer' application to parse the information by several ways. This issue was reported by a commit 51db452df07b ('Revert "ALSA: echoaudio: purge contradictions between dimension matrix members and total number of members"') to Linux kernel. As a result of discussion at Linux miniconference 2017, usage of 'dimen' member of 'struct snd_ctl_elem_info' is going to be deprecated for future removal. According to the above decision, this commit obsoletes usage of 'dimen' information in 'echomixer' application. In a series of echoaudio drivers, a control element set named as 'Channels info' includes duplicated information of the dimension information on value array. Additionally, some of dimension information have fixed values. This commit utilizes them to obsolete usage of dimension information. This patch is tested with Echo Gina 3G. Signed-off-by: Takashi Sakamoto Signed-off-by: Takashi Iwai --- echomixer/echomixer.c | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/echomixer/echomixer.c b/echomixer/echomixer.c index 54d1520..ac9b51a 100644 --- a/echomixer/echomixer.c +++ b/echomixer/echomixer.c @@ -525,6 +525,25 @@ void GetChannels(void) { nLOut=snd_ctl_elem_value_get_integer(control, 2); // Number of output channels fdOut=snd_ctl_elem_value_get_integer(control, 3); // First digital out nPOut=snd_ctl_elem_value_get_integer(control, 4); // Number of virtual output channels (==nLOut on non-vmixer cards) + + mixerControl.outputs = nLOut; + mixerControl.inputs = nIn; + + if (vmixerId) { + vmixerControl.outputs = nLOut; + vmixerControl.inputs = nPOut; + + /* For outputs and inputs. */ + metersStreams = 2; + } else { + /* For outputs, inputs and system outputs. */ + metersStreams = 3; + } + + /* For the number of channels. */ + metersNumber = 16; + /* For each of levels and peaks. */ + metersTypes = 2; } ClockMask=snd_ctl_elem_value_get_integer(control, 5); // Bitmask of available input clocks } @@ -1712,15 +1731,11 @@ int OpenControls(const char *card, const char *cardname) { if (!mixerId) { mixerId=numid; CTLID_DEBUG(("First Mixer id=%d\n", mixerId)); - mixerControl.outputs=snd_ctl_elem_info_get_dimension(info, 0); - mixerControl.inputs=snd_ctl_elem_info_get_dimension(info, 1); } } else if (!strcmp("VMixer Volume", snd_ctl_elem_id_get_name(id))) { if (!vmixerId) { vmixerId=vmixerControl.id=numid; CTLID_DEBUG(("First Vmixer id=%d\n", vmixerId)); - vmixerControl.outputs=snd_ctl_elem_info_get_dimension(info, 0); - vmixerControl.inputs=snd_ctl_elem_info_get_dimension(info, 1); } } else if (!strcmp("PCM Playback Volume", snd_ctl_elem_id_get_name(id))) { pcmoutId=pcmoutControl.id=numid; @@ -1789,9 +1804,6 @@ int OpenControls(const char *card, const char *cardname) { CTLID_DEBUG(("VU-meter switch id=%d\n", numid)); } else if (!strcmp("VU-meters", snd_ctl_elem_id_get_name(id))) { vumetersId=numid; - metersStreams=snd_ctl_elem_info_get_dimension(info, 0); // 2 or 3: output, input and (vmixer cards only) pcm - metersNumber=snd_ctl_elem_info_get_dimension(info, 1); // Number of channels - metersTypes=snd_ctl_elem_info_get_dimension(info, 2); // 2: level and peak CTLID_DEBUG(("VU-meters id=%d\n", numid)); } else if (!strcmp("Channels info", snd_ctl_elem_id_get_name(id))) { channelsId=numid; From 3f45efedad0230ebe24778a14af09cd2a84fdf70 Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Tue, 14 Nov 2017 08:52:10 +0100 Subject: [PATCH 09/66] Release v1.1.5 Signed-off-by: Jaroslav Kysela --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 8a47f0c..8497281 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -VERSION = 1.1.3 +VERSION = 1.1.5 TOP = . SUBDIRS = as10k1 envy24control hdsploader hdspconf hdspmixer \ mixartloader pcxhrloader rmedigicontrol sb16_csp seq sscape_ctl \ From 2639ca055e30859de41cc60545d02b50880ae604 Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Tue, 14 Nov 2017 10:52:50 +0100 Subject: [PATCH 10/66] hwmixvolume: use python2 directly Signed-off-by: Jaroslav Kysela --- hwmixvolume/hwmixvolume | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hwmixvolume/hwmixvolume b/hwmixvolume/hwmixvolume index f25062b..ef80bc8 100755 --- a/hwmixvolume/hwmixvolume +++ b/hwmixvolume/hwmixvolume @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/python2 # hwmixvolume - ALSA hardware mixer volume control applet # Copyright (c) 2009-2010 Clemens Ladisch From 38f7504af220737b8f503aff821f6bb17d30308a Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Tue, 14 Nov 2017 14:46:35 +0100 Subject: [PATCH 11/66] Change FSF address (Franklin Street) Signed-off-by: Jaroslav Kysela --- as10k1/COPYING | 4 ++-- echomixer/COPYING | 4 ++-- echomixer/echomixer.c | 2 +- envy24control/COPYING | 4 ++-- envy24control/driverevents.c | 2 +- envy24control/envy24control.c | 2 +- envy24control/hardware.c | 2 +- envy24control/levelmeters.c | 2 +- envy24control/midi.c | 2 +- envy24control/mixer.c | 2 +- envy24control/patchbay.c | 2 +- envy24control/profiles.c | 2 +- envy24control/strstr_icase_blank.c | 2 +- envy24control/volume.c | 2 +- hda-verb/hda_hwdep.h | 2 +- hdspconf/COPYING | 4 ++-- hdsploader/COPYING | 4 ++-- hdspmixer/COPYING | 4 ++-- ld10k1/COPYING | 4 ++-- ld10k1/COPYING.LIB | 4 ++-- ld10k1/contrib/emu10k1MIDIEffects/freberv.asm | 2 +- ld10k1/contrib/emu10k1MIDIEffects/fv-basstreble.inc | 2 +- ld10k1/contrib/emu10k1MIDIEffects/fv-controls.inc | 2 +- ld10k1/contrib/emu10k1MIDIEffects/fv-filters-reduced.inc | 2 +- ld10k1/contrib/emu10k1MIDIEffects/fv-filters.inc | 2 +- ld10k1/contrib/emu10k1MIDIEffects/fv-routes.inc | 2 +- ld10k1/include/comm.h | 2 +- ld10k1/include/ld10k1_error.h | 2 +- ld10k1/include/ld10k1_fnc.h | 2 +- ld10k1/include/liblo10k1.h | 2 +- ld10k1/include/liblo10k1ef.h | 2 +- ld10k1/include/liblo10k1lf.h | 2 +- ld10k1/include/lo10k1.h | 2 +- ld10k1/src/comm.c | 2 +- ld10k1/src/dl10k1.c | 2 +- ld10k1/src/ld10k1.c | 2 +- ld10k1/src/ld10k1.h | 2 +- ld10k1/src/ld10k1_debug.c | 2 +- ld10k1/src/ld10k1_debug.h | 2 +- ld10k1/src/ld10k1_driver.c | 2 +- ld10k1/src/ld10k1_driver.h | 2 +- ld10k1/src/ld10k1_dump.c | 2 +- ld10k1/src/ld10k1_dump.h | 2 +- ld10k1/src/ld10k1_dump_file.h | 2 +- ld10k1/src/ld10k1_fnc.c | 2 +- ld10k1/src/ld10k1_fnc1.c | 2 +- ld10k1/src/ld10k1_fnc1.h | 2 +- ld10k1/src/ld10k1_fnc_int.h | 2 +- ld10k1/src/ld10k1_mixer.c | 2 +- ld10k1/src/ld10k1_mixer.h | 2 +- ld10k1/src/ld10k1_tram.c | 2 +- ld10k1/src/ld10k1_tram.h | 2 +- ld10k1/src/liblo10k1.c | 2 +- ld10k1/src/liblo10k1ef.c | 2 +- ld10k1/src/liblo10k1lf.c | 2 +- ld10k1/src/lo10k1.c | 2 +- mixartloader/mixartloader.c | 2 +- pcxhrloader/pcxhrloader.c | 2 +- qlo10k1/COPYING | 4 ++-- qlo10k1/src/aboutdialog.cpp | 2 +- qlo10k1/src/aboutdialog.h | 2 +- qlo10k1/src/connectionwizard.cpp | 2 +- qlo10k1/src/connectionwizard.h | 2 +- qlo10k1/src/custom_colors.h | 2 +- qlo10k1/src/filecontroldialog.cpp | 2 +- qlo10k1/src/filecontroldialog.h | 2 +- qlo10k1/src/icons/routing_effect.xpm | 2 +- qlo10k1/src/icons/routing_effect_stack.xpm | 2 +- qlo10k1/src/icons/routing_fx.xpm | 2 +- qlo10k1/src/icons/routing_in.xpm | 2 +- qlo10k1/src/icons/routing_normal.xpm | 2 +- qlo10k1/src/icons/routing_out.xpm | 2 +- qlo10k1/src/icons/routing_route.xpm | 2 +- qlo10k1/src/icons/routing_zoom_minus.xpm | 2 +- qlo10k1/src/icons/routing_zoom_plus.xpm | 2 +- qlo10k1/src/ld10k1file.cpp | 2 +- qlo10k1/src/ld10k1file.h | 2 +- qlo10k1/src/loadpatchdialog.cpp | 2 +- qlo10k1/src/loadpatchdialog.h | 2 +- qlo10k1/src/main.cpp | 2 +- qlo10k1/src/mainwnd.cpp | 2 +- qlo10k1/src/mainwnd.h | 2 +- qlo10k1/src/newiodialog.cpp | 2 +- qlo10k1/src/newiodialog.h | 2 +- qlo10k1/src/patchdialog.cpp | 2 +- qlo10k1/src/patchdialog.h | 2 +- qlo10k1/src/preferences.cpp | 2 +- qlo10k1/src/preferences.h | 2 +- qlo10k1/src/routingwidget.cpp | 2 +- qlo10k1/src/routingwidget.h | 2 +- qlo10k1/src/routingwidget_menu.cpp | 2 +- qlo10k1/src/routingwidget_new.cpp | 2 +- qlo10k1/src/strglobal.cpp | 2 +- qlo10k1/src/strglobal.h | 2 +- qlo10k1/src/strparam.cpp | 2 +- qlo10k1/src/strparam.h | 2 +- qlo10k1/src/structure.cpp | 2 +- qlo10k1/src/structure.h | 2 +- qlo10k1/src/structure_aa.cpp | 2 +- qlo10k1/src/structure_io.cpp | 2 +- qlo10k1/src/structure_io.h | 2 +- qlo10k1/src/structure_link.cpp | 2 +- qlo10k1/src/structure_link.h | 2 +- qlo10k1/src/structure_patch.cpp | 2 +- qlo10k1/src/structure_patch.h | 2 +- qlo10k1/src/transformpatchdialog.cpp | 2 +- qlo10k1/src/transformpatchdialog.h | 2 +- rmedigicontrol/COPYING | 4 ++-- sb16_csp/COPYING | 4 ++-- sb16_csp/cspctl.c | 2 +- seq/sbiload/COPYING | 4 ++-- seq/sbiload/sbiload.c | 2 +- sscape_ctl/sscape_ctl.c | 2 +- us428control/Cus428Midi.cc | 2 +- us428control/Cus428Midi.h | 2 +- us428control/Cus428State.cc | 2 +- us428control/Cus428State.h | 2 +- us428control/Cus428_ctls.cc | 2 +- us428control/Cus428_ctls.h | 2 +- us428control/us428control.cc | 2 +- us428control/usbus428ctldefs.h | 2 +- usx2yloader/usx2yloader.c | 2 +- vxloader/vxloader.c | 2 +- 123 files changed, 135 insertions(+), 135 deletions(-) diff --git a/as10k1/COPYING b/as10k1/COPYING index 5b6e7c6..b74ec10 100644 --- a/as10k1/COPYING +++ b/as10k1/COPYING @@ -2,7 +2,7 @@ Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. @@ -305,7 +305,7 @@ the "copyright" line and a pointer to where the full notice is found. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Also add information on how to contact you by electronic and paper mail. diff --git a/echomixer/COPYING b/echomixer/COPYING index d60c31a..623b625 100644 --- a/echomixer/COPYING +++ b/echomixer/COPYING @@ -2,7 +2,7 @@ Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. @@ -305,7 +305,7 @@ the "copyright" line and a pointer to where the full notice is found. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Also add information on how to contact you by electronic and paper mail. diff --git a/echomixer/echomixer.c b/echomixer/echomixer.c index ac9b51a..4946a5d 100644 --- a/echomixer/echomixer.c +++ b/echomixer/echomixer.c @@ -13,7 +13,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ #define EM_VERSION "%s Echomixer v" VERSION diff --git a/envy24control/COPYING b/envy24control/COPYING index 5b6e7c6..c13faf0 100644 --- a/envy24control/COPYING +++ b/envy24control/COPYING @@ -2,7 +2,7 @@ Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. @@ -305,7 +305,7 @@ the "copyright" line and a pointer to where the full notice is found. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Also add information on how to contact you by electronic and paper mail. diff --git a/envy24control/driverevents.c b/envy24control/driverevents.c index a05cc35..377363d 100644 --- a/envy24control/driverevents.c +++ b/envy24control/driverevents.c @@ -14,7 +14,7 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA ******************************************************************************/ #include "envy24control.h" diff --git a/envy24control/envy24control.c b/envy24control/envy24control.c index 0b2749e..107a843 100644 --- a/envy24control/envy24control.c +++ b/envy24control/envy24control.c @@ -24,7 +24,7 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA ******************************************************************************/ #include "envy24control.h" diff --git a/envy24control/hardware.c b/envy24control/hardware.c index 73e3f0a..7e0094e 100644 --- a/envy24control/hardware.c +++ b/envy24control/hardware.c @@ -14,7 +14,7 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA ******************************************************************************/ #include "envy24control.h" diff --git a/envy24control/levelmeters.c b/envy24control/levelmeters.c index fa44979..24e00db 100644 --- a/envy24control/levelmeters.c +++ b/envy24control/levelmeters.c @@ -14,7 +14,7 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA ******************************************************************************/ #include "envy24control.h" diff --git a/envy24control/midi.c b/envy24control/midi.c index 327f6cf..ff12537 100644 --- a/envy24control/midi.c +++ b/envy24control/midi.c @@ -15,7 +15,7 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA ******************************************************************************/ #include diff --git a/envy24control/mixer.c b/envy24control/mixer.c index f2b4e9a..dd42681 100644 --- a/envy24control/mixer.c +++ b/envy24control/mixer.c @@ -14,7 +14,7 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA ******************************************************************************/ #include "envy24control.h" diff --git a/envy24control/patchbay.c b/envy24control/patchbay.c index 88f697d..89bdf72 100644 --- a/envy24control/patchbay.c +++ b/envy24control/patchbay.c @@ -14,7 +14,7 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA ******************************************************************************/ #include "envy24control.h" diff --git a/envy24control/profiles.c b/envy24control/profiles.c index 443e475..8e23bfd 100644 --- a/envy24control/profiles.c +++ b/envy24control/profiles.c @@ -17,7 +17,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ diff --git a/envy24control/strstr_icase_blank.c b/envy24control/strstr_icase_blank.c index 4c325cf..8078d2a 100644 --- a/envy24control/strstr_icase_blank.c +++ b/envy24control/strstr_icase_blank.c @@ -16,7 +16,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ diff --git a/envy24control/volume.c b/envy24control/volume.c index 4386e35..471f9ce 100644 --- a/envy24control/volume.c +++ b/envy24control/volume.c @@ -17,7 +17,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ #include "envy24control.h" diff --git a/hda-verb/hda_hwdep.h b/hda-verb/hda_hwdep.h index 1c0034e..c603724 100644 --- a/hda-verb/hda_hwdep.h +++ b/hda-verb/hda_hwdep.h @@ -15,7 +15,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef __SOUND_HDA_HWDEP_H diff --git a/hdspconf/COPYING b/hdspconf/COPYING index d60c31a..623b625 100644 --- a/hdspconf/COPYING +++ b/hdspconf/COPYING @@ -2,7 +2,7 @@ Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. @@ -305,7 +305,7 @@ the "copyright" line and a pointer to where the full notice is found. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Also add information on how to contact you by electronic and paper mail. diff --git a/hdsploader/COPYING b/hdsploader/COPYING index d60c31a..623b625 100644 --- a/hdsploader/COPYING +++ b/hdsploader/COPYING @@ -2,7 +2,7 @@ Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. @@ -305,7 +305,7 @@ the "copyright" line and a pointer to where the full notice is found. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Also add information on how to contact you by electronic and paper mail. diff --git a/hdspmixer/COPYING b/hdspmixer/COPYING index d60c31a..623b625 100644 --- a/hdspmixer/COPYING +++ b/hdspmixer/COPYING @@ -2,7 +2,7 @@ Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. @@ -305,7 +305,7 @@ the "copyright" line and a pointer to where the full notice is found. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Also add information on how to contact you by electronic and paper mail. diff --git a/ld10k1/COPYING b/ld10k1/COPYING index d60c31a..623b625 100644 --- a/ld10k1/COPYING +++ b/ld10k1/COPYING @@ -2,7 +2,7 @@ Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. @@ -305,7 +305,7 @@ the "copyright" line and a pointer to where the full notice is found. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Also add information on how to contact you by electronic and paper mail. diff --git a/ld10k1/COPYING.LIB b/ld10k1/COPYING.LIB index b1e3f5a..ae23fcf 100644 --- a/ld10k1/COPYING.LIB +++ b/ld10k1/COPYING.LIB @@ -2,7 +2,7 @@ Version 2.1, February 1999 Copyright (C) 1991, 1999 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. @@ -485,7 +485,7 @@ convey the exclusion of warranty; and each file should have at least the You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Also add information on how to contact you by electronic and paper mail. diff --git a/ld10k1/contrib/emu10k1MIDIEffects/freberv.asm b/ld10k1/contrib/emu10k1MIDIEffects/freberv.asm index 3fe1b9e..a7f91b1 100644 --- a/ld10k1/contrib/emu10k1MIDIEffects/freberv.asm +++ b/ld10k1/contrib/emu10k1MIDIEffects/freberv.asm @@ -15,7 +15,7 @@ ;; ;; You should have received a copy of the GNU General Public License ;; along with this program; if not, write to the Free Software -;; Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA ;; ;; $Id: fv10k1.m4,v 1.1 2001/09/28 01:56:20 dbertrand Exp $ diff --git a/ld10k1/contrib/emu10k1MIDIEffects/fv-basstreble.inc b/ld10k1/contrib/emu10k1MIDIEffects/fv-basstreble.inc index e727673..d4d7216 100644 --- a/ld10k1/contrib/emu10k1MIDIEffects/fv-basstreble.inc +++ b/ld10k1/contrib/emu10k1MIDIEffects/fv-basstreble.inc @@ -16,7 +16,7 @@ ;; ;; You should have received a copy of the GNU General Public License ;; along with this program; if not, write to the Free Software -;; Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA ;; ;; $Id: fv-basstreble.inc,v 1.1 2001/09/28 01:56:20 dbertrand Exp $ diff --git a/ld10k1/contrib/emu10k1MIDIEffects/fv-controls.inc b/ld10k1/contrib/emu10k1MIDIEffects/fv-controls.inc index d2ac8cb..749a4b1 100644 --- a/ld10k1/contrib/emu10k1MIDIEffects/fv-controls.inc +++ b/ld10k1/contrib/emu10k1MIDIEffects/fv-controls.inc @@ -15,7 +15,7 @@ ;; ;; You should have received a copy of the GNU General Public License ;; along with this program; if not, write to the Free Software -;; Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA ;; ;; $Id: fv-controls.inc,v 1.1 2001/09/28 01:56:20 dbertrand Exp $ diff --git a/ld10k1/contrib/emu10k1MIDIEffects/fv-filters-reduced.inc b/ld10k1/contrib/emu10k1MIDIEffects/fv-filters-reduced.inc index e7357cd..bd50b2f 100644 --- a/ld10k1/contrib/emu10k1MIDIEffects/fv-filters-reduced.inc +++ b/ld10k1/contrib/emu10k1MIDIEffects/fv-filters-reduced.inc @@ -15,7 +15,7 @@ ;; ;; You should have received a copy of the GNU General Public License ;; along with this program; if not, write to the Free Software -;; Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA ;; ;; $Id: fv-filters.m4,v 1.1 2001/09/28 01:56:20 dbertrand Exp $ diff --git a/ld10k1/contrib/emu10k1MIDIEffects/fv-filters.inc b/ld10k1/contrib/emu10k1MIDIEffects/fv-filters.inc index 12ee8a0..84c2b06 100644 --- a/ld10k1/contrib/emu10k1MIDIEffects/fv-filters.inc +++ b/ld10k1/contrib/emu10k1MIDIEffects/fv-filters.inc @@ -15,7 +15,7 @@ ;; ;; You should have received a copy of the GNU General Public License ;; along with this program; if not, write to the Free Software -;; Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA ;; ;; $Id: fv-filters.m4,v 1.1 2001/09/28 01:56:20 dbertrand Exp $ diff --git a/ld10k1/contrib/emu10k1MIDIEffects/fv-routes.inc b/ld10k1/contrib/emu10k1MIDIEffects/fv-routes.inc index a45a9cb..a4ea931 100644 --- a/ld10k1/contrib/emu10k1MIDIEffects/fv-routes.inc +++ b/ld10k1/contrib/emu10k1MIDIEffects/fv-routes.inc @@ -15,7 +15,7 @@ ;; ;; You should have received a copy of the GNU General Public License ;; along with this program; if not, write to the Free Software -;; Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA ;; ;; $Id: fv-routes.inc,v 1.1 2001/09/28 01:56:20 dbertrand Exp $ diff --git a/ld10k1/include/comm.h b/ld10k1/include/comm.h index 2293aaa..e8f2458 100644 --- a/ld10k1/include/comm.h +++ b/ld10k1/include/comm.h @@ -15,7 +15,7 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ diff --git a/ld10k1/include/ld10k1_error.h b/ld10k1/include/ld10k1_error.h index a36ba78..9f7d455 100644 --- a/ld10k1/include/ld10k1_error.h +++ b/ld10k1/include/ld10k1_error.h @@ -15,7 +15,7 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ diff --git a/ld10k1/include/ld10k1_fnc.h b/ld10k1/include/ld10k1_fnc.h index b027336..c296ac6 100644 --- a/ld10k1/include/ld10k1_fnc.h +++ b/ld10k1/include/ld10k1_fnc.h @@ -15,7 +15,7 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ diff --git a/ld10k1/include/liblo10k1.h b/ld10k1/include/liblo10k1.h index 9f57850..2cc12c0 100644 --- a/ld10k1/include/liblo10k1.h +++ b/ld10k1/include/liblo10k1.h @@ -15,7 +15,7 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ diff --git a/ld10k1/include/liblo10k1ef.h b/ld10k1/include/liblo10k1ef.h index fb95025..8c233e3 100644 --- a/ld10k1/include/liblo10k1ef.h +++ b/ld10k1/include/liblo10k1ef.h @@ -15,7 +15,7 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ diff --git a/ld10k1/include/liblo10k1lf.h b/ld10k1/include/liblo10k1lf.h index c51bb44..3207321 100644 --- a/ld10k1/include/liblo10k1lf.h +++ b/ld10k1/include/liblo10k1lf.h @@ -15,7 +15,7 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ diff --git a/ld10k1/include/lo10k1.h b/ld10k1/include/lo10k1.h index 67a8af1..d3ab084 100644 --- a/ld10k1/include/lo10k1.h +++ b/ld10k1/include/lo10k1.h @@ -15,7 +15,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ diff --git a/ld10k1/src/comm.c b/ld10k1/src/comm.c index f010e20..a9d2965 100644 --- a/ld10k1/src/comm.c +++ b/ld10k1/src/comm.c @@ -15,7 +15,7 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ diff --git a/ld10k1/src/dl10k1.c b/ld10k1/src/dl10k1.c index 7ca3f43..42d54a1 100644 --- a/ld10k1/src/dl10k1.c +++ b/ld10k1/src/dl10k1.c @@ -17,7 +17,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ diff --git a/ld10k1/src/ld10k1.c b/ld10k1/src/ld10k1.c index e31c5af..b0b5a9b 100644 --- a/ld10k1/src/ld10k1.c +++ b/ld10k1/src/ld10k1.c @@ -17,7 +17,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ diff --git a/ld10k1/src/ld10k1.h b/ld10k1/src/ld10k1.h index aa10304..7654e82 100644 --- a/ld10k1/src/ld10k1.h +++ b/ld10k1/src/ld10k1.h @@ -15,7 +15,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ diff --git a/ld10k1/src/ld10k1_debug.c b/ld10k1/src/ld10k1_debug.c index 6ba0ec6..2b98160 100644 --- a/ld10k1/src/ld10k1_debug.c +++ b/ld10k1/src/ld10k1_debug.c @@ -15,7 +15,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ diff --git a/ld10k1/src/ld10k1_debug.h b/ld10k1/src/ld10k1_debug.h index 519eab3..aa015c1 100644 --- a/ld10k1/src/ld10k1_debug.h +++ b/ld10k1/src/ld10k1_debug.h @@ -14,7 +14,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ diff --git a/ld10k1/src/ld10k1_driver.c b/ld10k1/src/ld10k1_driver.c index c22418e..38ee873 100644 --- a/ld10k1/src/ld10k1_driver.c +++ b/ld10k1/src/ld10k1_driver.c @@ -15,7 +15,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ diff --git a/ld10k1/src/ld10k1_driver.h b/ld10k1/src/ld10k1_driver.h index 2a3bc4d..13b2840 100644 --- a/ld10k1/src/ld10k1_driver.h +++ b/ld10k1/src/ld10k1_driver.h @@ -15,7 +15,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ diff --git a/ld10k1/src/ld10k1_dump.c b/ld10k1/src/ld10k1_dump.c index f2167b0..f4cab49 100644 --- a/ld10k1/src/ld10k1_dump.c +++ b/ld10k1/src/ld10k1_dump.c @@ -15,7 +15,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ diff --git a/ld10k1/src/ld10k1_dump.h b/ld10k1/src/ld10k1_dump.h index f5e50ef..bf04c8c 100644 --- a/ld10k1/src/ld10k1_dump.h +++ b/ld10k1/src/ld10k1_dump.h @@ -15,7 +15,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ diff --git a/ld10k1/src/ld10k1_dump_file.h b/ld10k1/src/ld10k1_dump_file.h index 6a2a5fb..aa4a6be 100644 --- a/ld10k1/src/ld10k1_dump_file.h +++ b/ld10k1/src/ld10k1_dump_file.h @@ -15,7 +15,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ diff --git a/ld10k1/src/ld10k1_fnc.c b/ld10k1/src/ld10k1_fnc.c index bf4c28a..c88f4c0 100644 --- a/ld10k1/src/ld10k1_fnc.c +++ b/ld10k1/src/ld10k1_fnc.c @@ -15,7 +15,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ diff --git a/ld10k1/src/ld10k1_fnc1.c b/ld10k1/src/ld10k1_fnc1.c index ff8010a..343584c 100644 --- a/ld10k1/src/ld10k1_fnc1.c +++ b/ld10k1/src/ld10k1_fnc1.c @@ -15,7 +15,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ diff --git a/ld10k1/src/ld10k1_fnc1.h b/ld10k1/src/ld10k1_fnc1.h index 696abc8..81e1714 100644 --- a/ld10k1/src/ld10k1_fnc1.h +++ b/ld10k1/src/ld10k1_fnc1.h @@ -15,7 +15,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ diff --git a/ld10k1/src/ld10k1_fnc_int.h b/ld10k1/src/ld10k1_fnc_int.h index b7e4af7..d5961d0 100644 --- a/ld10k1/src/ld10k1_fnc_int.h +++ b/ld10k1/src/ld10k1_fnc_int.h @@ -15,7 +15,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ diff --git a/ld10k1/src/ld10k1_mixer.c b/ld10k1/src/ld10k1_mixer.c index 772b98c..20db26e 100644 --- a/ld10k1/src/ld10k1_mixer.c +++ b/ld10k1/src/ld10k1_mixer.c @@ -15,7 +15,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ diff --git a/ld10k1/src/ld10k1_mixer.h b/ld10k1/src/ld10k1_mixer.h index e1251bc..50b86ce 100644 --- a/ld10k1/src/ld10k1_mixer.h +++ b/ld10k1/src/ld10k1_mixer.h @@ -15,7 +15,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ diff --git a/ld10k1/src/ld10k1_tram.c b/ld10k1/src/ld10k1_tram.c index 840f552..1272ca3 100644 --- a/ld10k1/src/ld10k1_tram.c +++ b/ld10k1/src/ld10k1_tram.c @@ -15,7 +15,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ diff --git a/ld10k1/src/ld10k1_tram.h b/ld10k1/src/ld10k1_tram.h index 380f8e0..871282a 100644 --- a/ld10k1/src/ld10k1_tram.h +++ b/ld10k1/src/ld10k1_tram.h @@ -15,7 +15,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ diff --git a/ld10k1/src/liblo10k1.c b/ld10k1/src/liblo10k1.c index 8861876..afe37a4 100644 --- a/ld10k1/src/liblo10k1.c +++ b/ld10k1/src/liblo10k1.c @@ -15,7 +15,7 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ diff --git a/ld10k1/src/liblo10k1ef.c b/ld10k1/src/liblo10k1ef.c index c01ac58..84fda78 100644 --- a/ld10k1/src/liblo10k1ef.c +++ b/ld10k1/src/liblo10k1ef.c @@ -15,7 +15,7 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ diff --git a/ld10k1/src/liblo10k1lf.c b/ld10k1/src/liblo10k1lf.c index 3cb1ffc..132d3fe 100644 --- a/ld10k1/src/liblo10k1lf.c +++ b/ld10k1/src/liblo10k1lf.c @@ -15,7 +15,7 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ diff --git a/ld10k1/src/lo10k1.c b/ld10k1/src/lo10k1.c index 962c3ef..93a9369 100644 --- a/ld10k1/src/lo10k1.c +++ b/ld10k1/src/lo10k1.c @@ -15,7 +15,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ diff --git a/mixartloader/mixartloader.c b/mixartloader/mixartloader.c index 663ca32..f34ed58 100644 --- a/mixartloader/mixartloader.c +++ b/mixartloader/mixartloader.c @@ -15,7 +15,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ #include diff --git a/pcxhrloader/pcxhrloader.c b/pcxhrloader/pcxhrloader.c index a5ef079..de9420e 100644 --- a/pcxhrloader/pcxhrloader.c +++ b/pcxhrloader/pcxhrloader.c @@ -15,7 +15,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ #include diff --git a/qlo10k1/COPYING b/qlo10k1/COPYING index 5b6e7c6..c13faf0 100644 --- a/qlo10k1/COPYING +++ b/qlo10k1/COPYING @@ -2,7 +2,7 @@ Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. @@ -305,7 +305,7 @@ the "copyright" line and a pointer to where the full notice is found. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Also add information on how to contact you by electronic and paper mail. diff --git a/qlo10k1/src/aboutdialog.cpp b/qlo10k1/src/aboutdialog.cpp index ab34666..a32b488 100644 --- a/qlo10k1/src/aboutdialog.cpp +++ b/qlo10k1/src/aboutdialog.cpp @@ -15,7 +15,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ diff --git a/qlo10k1/src/aboutdialog.h b/qlo10k1/src/aboutdialog.h index b72ca18..3f29622 100644 --- a/qlo10k1/src/aboutdialog.h +++ b/qlo10k1/src/aboutdialog.h @@ -15,7 +15,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ diff --git a/qlo10k1/src/connectionwizard.cpp b/qlo10k1/src/connectionwizard.cpp index 25aef79..6c3a8fd 100644 --- a/qlo10k1/src/connectionwizard.cpp +++ b/qlo10k1/src/connectionwizard.cpp @@ -15,7 +15,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ diff --git a/qlo10k1/src/connectionwizard.h b/qlo10k1/src/connectionwizard.h index 0db31ec..d04fa38 100644 --- a/qlo10k1/src/connectionwizard.h +++ b/qlo10k1/src/connectionwizard.h @@ -15,7 +15,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ diff --git a/qlo10k1/src/custom_colors.h b/qlo10k1/src/custom_colors.h index 6acef2f..62f8aaf 100644 --- a/qlo10k1/src/custom_colors.h +++ b/qlo10k1/src/custom_colors.h @@ -15,7 +15,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ diff --git a/qlo10k1/src/filecontroldialog.cpp b/qlo10k1/src/filecontroldialog.cpp index 3776f6d..37fae6a 100644 --- a/qlo10k1/src/filecontroldialog.cpp +++ b/qlo10k1/src/filecontroldialog.cpp @@ -15,7 +15,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ diff --git a/qlo10k1/src/filecontroldialog.h b/qlo10k1/src/filecontroldialog.h index 7a69230..c4591b6 100644 --- a/qlo10k1/src/filecontroldialog.h +++ b/qlo10k1/src/filecontroldialog.h @@ -15,7 +15,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ diff --git a/qlo10k1/src/icons/routing_effect.xpm b/qlo10k1/src/icons/routing_effect.xpm index a83c5f1..e0f7961 100644 --- a/qlo10k1/src/icons/routing_effect.xpm +++ b/qlo10k1/src/icons/routing_effect.xpm @@ -15,7 +15,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ diff --git a/qlo10k1/src/icons/routing_effect_stack.xpm b/qlo10k1/src/icons/routing_effect_stack.xpm index 0a1ed97..7a207e1 100644 --- a/qlo10k1/src/icons/routing_effect_stack.xpm +++ b/qlo10k1/src/icons/routing_effect_stack.xpm @@ -15,7 +15,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ diff --git a/qlo10k1/src/icons/routing_fx.xpm b/qlo10k1/src/icons/routing_fx.xpm index a8becfa..958625f 100644 --- a/qlo10k1/src/icons/routing_fx.xpm +++ b/qlo10k1/src/icons/routing_fx.xpm @@ -15,7 +15,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ diff --git a/qlo10k1/src/icons/routing_in.xpm b/qlo10k1/src/icons/routing_in.xpm index 7f0858a..7ba3940 100644 --- a/qlo10k1/src/icons/routing_in.xpm +++ b/qlo10k1/src/icons/routing_in.xpm @@ -15,7 +15,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ diff --git a/qlo10k1/src/icons/routing_normal.xpm b/qlo10k1/src/icons/routing_normal.xpm index 2eaf424..3336ef1 100644 --- a/qlo10k1/src/icons/routing_normal.xpm +++ b/qlo10k1/src/icons/routing_normal.xpm @@ -15,7 +15,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ diff --git a/qlo10k1/src/icons/routing_out.xpm b/qlo10k1/src/icons/routing_out.xpm index 8a9fb22..bde1fd0 100644 --- a/qlo10k1/src/icons/routing_out.xpm +++ b/qlo10k1/src/icons/routing_out.xpm @@ -15,7 +15,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ diff --git a/qlo10k1/src/icons/routing_route.xpm b/qlo10k1/src/icons/routing_route.xpm index a771bbe..d7b6cfe 100644 --- a/qlo10k1/src/icons/routing_route.xpm +++ b/qlo10k1/src/icons/routing_route.xpm @@ -15,7 +15,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ diff --git a/qlo10k1/src/icons/routing_zoom_minus.xpm b/qlo10k1/src/icons/routing_zoom_minus.xpm index 0fc331b..baa0ea3 100644 --- a/qlo10k1/src/icons/routing_zoom_minus.xpm +++ b/qlo10k1/src/icons/routing_zoom_minus.xpm @@ -15,7 +15,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ diff --git a/qlo10k1/src/icons/routing_zoom_plus.xpm b/qlo10k1/src/icons/routing_zoom_plus.xpm index a694cde..f5aabc9 100644 --- a/qlo10k1/src/icons/routing_zoom_plus.xpm +++ b/qlo10k1/src/icons/routing_zoom_plus.xpm @@ -15,7 +15,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ diff --git a/qlo10k1/src/ld10k1file.cpp b/qlo10k1/src/ld10k1file.cpp index c85e709..ecb4870 100644 --- a/qlo10k1/src/ld10k1file.cpp +++ b/qlo10k1/src/ld10k1file.cpp @@ -15,7 +15,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ diff --git a/qlo10k1/src/ld10k1file.h b/qlo10k1/src/ld10k1file.h index c22f0bd..068b8d0 100644 --- a/qlo10k1/src/ld10k1file.h +++ b/qlo10k1/src/ld10k1file.h @@ -15,7 +15,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ diff --git a/qlo10k1/src/loadpatchdialog.cpp b/qlo10k1/src/loadpatchdialog.cpp index 5cf6721..f3d9a8e 100644 --- a/qlo10k1/src/loadpatchdialog.cpp +++ b/qlo10k1/src/loadpatchdialog.cpp @@ -15,7 +15,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ diff --git a/qlo10k1/src/loadpatchdialog.h b/qlo10k1/src/loadpatchdialog.h index 832a029..6522c55 100644 --- a/qlo10k1/src/loadpatchdialog.h +++ b/qlo10k1/src/loadpatchdialog.h @@ -15,7 +15,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ diff --git a/qlo10k1/src/main.cpp b/qlo10k1/src/main.cpp index b156d57..61c0c5a 100644 --- a/qlo10k1/src/main.cpp +++ b/qlo10k1/src/main.cpp @@ -15,7 +15,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ diff --git a/qlo10k1/src/mainwnd.cpp b/qlo10k1/src/mainwnd.cpp index c7372ba..0f6fd6e 100644 --- a/qlo10k1/src/mainwnd.cpp +++ b/qlo10k1/src/mainwnd.cpp @@ -15,7 +15,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ diff --git a/qlo10k1/src/mainwnd.h b/qlo10k1/src/mainwnd.h index 50eec11..4b4aba7 100644 --- a/qlo10k1/src/mainwnd.h +++ b/qlo10k1/src/mainwnd.h @@ -15,7 +15,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ diff --git a/qlo10k1/src/newiodialog.cpp b/qlo10k1/src/newiodialog.cpp index 81453a9..58cfcba 100644 --- a/qlo10k1/src/newiodialog.cpp +++ b/qlo10k1/src/newiodialog.cpp @@ -15,7 +15,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ diff --git a/qlo10k1/src/newiodialog.h b/qlo10k1/src/newiodialog.h index 29df240..c33081b 100644 --- a/qlo10k1/src/newiodialog.h +++ b/qlo10k1/src/newiodialog.h @@ -15,7 +15,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ diff --git a/qlo10k1/src/patchdialog.cpp b/qlo10k1/src/patchdialog.cpp index 035c763..81ea7d2 100644 --- a/qlo10k1/src/patchdialog.cpp +++ b/qlo10k1/src/patchdialog.cpp @@ -15,7 +15,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ diff --git a/qlo10k1/src/patchdialog.h b/qlo10k1/src/patchdialog.h index adbf891..3aa82be 100644 --- a/qlo10k1/src/patchdialog.h +++ b/qlo10k1/src/patchdialog.h @@ -15,7 +15,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ diff --git a/qlo10k1/src/preferences.cpp b/qlo10k1/src/preferences.cpp index 913a28b..d7a78e1 100644 --- a/qlo10k1/src/preferences.cpp +++ b/qlo10k1/src/preferences.cpp @@ -15,7 +15,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ diff --git a/qlo10k1/src/preferences.h b/qlo10k1/src/preferences.h index 640672d..94dd6cd 100644 --- a/qlo10k1/src/preferences.h +++ b/qlo10k1/src/preferences.h @@ -15,7 +15,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ diff --git a/qlo10k1/src/routingwidget.cpp b/qlo10k1/src/routingwidget.cpp index ef96cf9..9af85eb 100644 --- a/qlo10k1/src/routingwidget.cpp +++ b/qlo10k1/src/routingwidget.cpp @@ -15,7 +15,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ diff --git a/qlo10k1/src/routingwidget.h b/qlo10k1/src/routingwidget.h index 9e4b6a8..c9bff50 100644 --- a/qlo10k1/src/routingwidget.h +++ b/qlo10k1/src/routingwidget.h @@ -15,7 +15,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ diff --git a/qlo10k1/src/routingwidget_menu.cpp b/qlo10k1/src/routingwidget_menu.cpp index dc913ee..b2dd0e2 100644 --- a/qlo10k1/src/routingwidget_menu.cpp +++ b/qlo10k1/src/routingwidget_menu.cpp @@ -15,7 +15,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ diff --git a/qlo10k1/src/routingwidget_new.cpp b/qlo10k1/src/routingwidget_new.cpp index 34d708b..ca7273f 100644 --- a/qlo10k1/src/routingwidget_new.cpp +++ b/qlo10k1/src/routingwidget_new.cpp @@ -15,7 +15,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ diff --git a/qlo10k1/src/strglobal.cpp b/qlo10k1/src/strglobal.cpp index e5bc7d9..2682702 100644 --- a/qlo10k1/src/strglobal.cpp +++ b/qlo10k1/src/strglobal.cpp @@ -15,7 +15,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ diff --git a/qlo10k1/src/strglobal.h b/qlo10k1/src/strglobal.h index d988de5..9a6b118 100644 --- a/qlo10k1/src/strglobal.h +++ b/qlo10k1/src/strglobal.h @@ -15,7 +15,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ diff --git a/qlo10k1/src/strparam.cpp b/qlo10k1/src/strparam.cpp index b042d75..83066bc 100644 --- a/qlo10k1/src/strparam.cpp +++ b/qlo10k1/src/strparam.cpp @@ -15,7 +15,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ diff --git a/qlo10k1/src/strparam.h b/qlo10k1/src/strparam.h index 7ceef2c..5c1678e 100644 --- a/qlo10k1/src/strparam.h +++ b/qlo10k1/src/strparam.h @@ -15,7 +15,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ diff --git a/qlo10k1/src/structure.cpp b/qlo10k1/src/structure.cpp index 57d5c6e..034d707 100644 --- a/qlo10k1/src/structure.cpp +++ b/qlo10k1/src/structure.cpp @@ -15,7 +15,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ diff --git a/qlo10k1/src/structure.h b/qlo10k1/src/structure.h index 3342fa0..380ee17 100644 --- a/qlo10k1/src/structure.h +++ b/qlo10k1/src/structure.h @@ -15,7 +15,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ diff --git a/qlo10k1/src/structure_aa.cpp b/qlo10k1/src/structure_aa.cpp index d0bddb9..277a089 100644 --- a/qlo10k1/src/structure_aa.cpp +++ b/qlo10k1/src/structure_aa.cpp @@ -15,7 +15,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ diff --git a/qlo10k1/src/structure_io.cpp b/qlo10k1/src/structure_io.cpp index 466b023..61df365 100644 --- a/qlo10k1/src/structure_io.cpp +++ b/qlo10k1/src/structure_io.cpp @@ -15,7 +15,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ diff --git a/qlo10k1/src/structure_io.h b/qlo10k1/src/structure_io.h index 728647c..c9fa5aa 100644 --- a/qlo10k1/src/structure_io.h +++ b/qlo10k1/src/structure_io.h @@ -15,7 +15,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ diff --git a/qlo10k1/src/structure_link.cpp b/qlo10k1/src/structure_link.cpp index bd7e7bb..381fff6 100644 --- a/qlo10k1/src/structure_link.cpp +++ b/qlo10k1/src/structure_link.cpp @@ -15,7 +15,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ diff --git a/qlo10k1/src/structure_link.h b/qlo10k1/src/structure_link.h index dc5c00f..d6f27ca 100644 --- a/qlo10k1/src/structure_link.h +++ b/qlo10k1/src/structure_link.h @@ -15,7 +15,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ diff --git a/qlo10k1/src/structure_patch.cpp b/qlo10k1/src/structure_patch.cpp index 0fa1871..7d1041a 100644 --- a/qlo10k1/src/structure_patch.cpp +++ b/qlo10k1/src/structure_patch.cpp @@ -15,7 +15,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ diff --git a/qlo10k1/src/structure_patch.h b/qlo10k1/src/structure_patch.h index 1e66336..00efbe7 100644 --- a/qlo10k1/src/structure_patch.h +++ b/qlo10k1/src/structure_patch.h @@ -15,7 +15,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ diff --git a/qlo10k1/src/transformpatchdialog.cpp b/qlo10k1/src/transformpatchdialog.cpp index 9313053..05c171a 100644 --- a/qlo10k1/src/transformpatchdialog.cpp +++ b/qlo10k1/src/transformpatchdialog.cpp @@ -15,7 +15,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ diff --git a/qlo10k1/src/transformpatchdialog.h b/qlo10k1/src/transformpatchdialog.h index 8962180..88a1603 100644 --- a/qlo10k1/src/transformpatchdialog.h +++ b/qlo10k1/src/transformpatchdialog.h @@ -15,7 +15,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ diff --git a/rmedigicontrol/COPYING b/rmedigicontrol/COPYING index 5b6e7c6..c13faf0 100644 --- a/rmedigicontrol/COPYING +++ b/rmedigicontrol/COPYING @@ -2,7 +2,7 @@ Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. @@ -305,7 +305,7 @@ the "copyright" line and a pointer to where the full notice is found. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Also add information on how to contact you by electronic and paper mail. diff --git a/sb16_csp/COPYING b/sb16_csp/COPYING index 5b6e7c6..c13faf0 100644 --- a/sb16_csp/COPYING +++ b/sb16_csp/COPYING @@ -2,7 +2,7 @@ Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. @@ -305,7 +305,7 @@ the "copyright" line and a pointer to where the full notice is found. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Also add information on how to contact you by electronic and paper mail. diff --git a/sb16_csp/cspctl.c b/sb16_csp/cspctl.c index 3fd1d3f..d29fa12 100644 --- a/sb16_csp/cspctl.c +++ b/sb16_csp/cspctl.c @@ -15,7 +15,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ diff --git a/seq/sbiload/COPYING b/seq/sbiload/COPYING index 5b6e7c6..c13faf0 100644 --- a/seq/sbiload/COPYING +++ b/seq/sbiload/COPYING @@ -2,7 +2,7 @@ Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. @@ -305,7 +305,7 @@ the "copyright" line and a pointer to where the full notice is found. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Also add information on how to contact you by electronic and paper mail. diff --git a/seq/sbiload/sbiload.c b/seq/sbiload/sbiload.c index 7465a82..2315974 100644 --- a/seq/sbiload/sbiload.c +++ b/seq/sbiload/sbiload.c @@ -14,7 +14,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * * Oct. 2007 - Takashi Iwai diff --git a/sscape_ctl/sscape_ctl.c b/sscape_ctl/sscape_ctl.c index 0bea604..4239757 100644 --- a/sscape_ctl/sscape_ctl.c +++ b/sscape_ctl/sscape_ctl.c @@ -15,7 +15,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ #include diff --git a/us428control/Cus428Midi.cc b/us428control/Cus428Midi.cc index 374eb29..455ee90 100644 --- a/us428control/Cus428Midi.cc +++ b/us428control/Cus428Midi.cc @@ -16,7 +16,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ #include diff --git a/us428control/Cus428Midi.h b/us428control/Cus428Midi.h index 63c91e7..1c1a220 100644 --- a/us428control/Cus428Midi.h +++ b/us428control/Cus428Midi.h @@ -16,7 +16,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ #include "Cus428State.h" diff --git a/us428control/Cus428State.cc b/us428control/Cus428State.cc index 280c21d..70131bc 100644 --- a/us428control/Cus428State.cc +++ b/us428control/Cus428State.cc @@ -17,7 +17,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ #include diff --git a/us428control/Cus428State.h b/us428control/Cus428State.h index 657e656..af08096 100644 --- a/us428control/Cus428State.h +++ b/us428control/Cus428State.h @@ -17,7 +17,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef Cus428State_h diff --git a/us428control/Cus428_ctls.cc b/us428control/Cus428_ctls.cc index 3d59aba..bfac10f 100644 --- a/us428control/Cus428_ctls.cc +++ b/us428control/Cus428_ctls.cc @@ -16,7 +16,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ #include diff --git a/us428control/Cus428_ctls.h b/us428control/Cus428_ctls.h index 29da790..695f342 100644 --- a/us428control/Cus428_ctls.h +++ b/us428control/Cus428_ctls.h @@ -16,7 +16,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef Cus428_ctls_h diff --git a/us428control/us428control.cc b/us428control/us428control.cc index 3163402..e839bf4 100644 --- a/us428control/us428control.cc +++ b/us428control/us428control.cc @@ -17,7 +17,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ #include diff --git a/us428control/usbus428ctldefs.h b/us428control/usbus428ctldefs.h index 1063bae..f698e38 100644 --- a/us428control/usbus428ctldefs.h +++ b/us428control/usbus428ctldefs.h @@ -15,7 +15,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ #ifdef __cplusplus diff --git a/usx2yloader/usx2yloader.c b/usx2yloader/usx2yloader.c index ab76acc..61583c2 100644 --- a/usx2yloader/usx2yloader.c +++ b/usx2yloader/usx2yloader.c @@ -15,7 +15,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ #include diff --git a/vxloader/vxloader.c b/vxloader/vxloader.c index 6539674..69d654d 100644 --- a/vxloader/vxloader.c +++ b/vxloader/vxloader.c @@ -15,7 +15,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ #include From 089e69d8800c9068bb6bfd11679153fadf31a618 Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Tue, 14 Nov 2017 17:37:58 +0100 Subject: [PATCH 12/66] hdspconf, hdspmixer: validate the .desktop files Signed-off-by: Jaroslav Kysela --- hdspconf/hdspconf.desktop | 6 ++---- hdspmixer/hdspmixer.desktop | 6 ++---- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/hdspconf/hdspconf.desktop b/hdspconf/hdspconf.desktop index 732745c..3ce6429 100644 --- a/hdspconf/hdspconf.desktop +++ b/hdspconf/hdspconf.desktop @@ -1,10 +1,8 @@ [Desktop Entry] -Encoding=UTF-8 Name=HDSPConf Comment=Hammerfall DSP control application Exec=hdspconf -FilePattern=hdspconf -Icon=hdspconf.png +Icon=hdspconf Terminal=false Type=Application -Categories=Application;AudioVideo; +Categories=AudioVideo; diff --git a/hdspmixer/hdspmixer.desktop b/hdspmixer/hdspmixer.desktop index eb5615e..4cfee66 100644 --- a/hdspmixer/hdspmixer.desktop +++ b/hdspmixer/hdspmixer.desktop @@ -1,10 +1,8 @@ [Desktop Entry] -Encoding=UTF-8 Name=HDSPMixer Comment=Hammerfall DSP matrix mixer control GUI Exec=hdspmixer -FilePattern=hdspmixer -Icon=hdspmixer.png +Icon=hdspmixer Terminal=false Type=Application -Categories=Application;AudioVideo; +Categories=AudioVideo; From fc8858cae3250a8c1416dc1301ebc3bcaed9da89 Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Wed, 15 Nov 2017 09:55:15 +0100 Subject: [PATCH 13/66] hdajackretask: add .desktop and icon files Signed-off-by: Jaroslav Kysela --- .gitignore | 1 + hdajackretask/Makefile.am | 2 +- hdajackretask/configure.ac | 2 +- hdajackretask/desktop/Makefile.am | 36 ++++++++++++++++++ hdajackretask/desktop/hdajackretask.desktop | 8 ++++ .../hicolor_apps_128x128_hdajackretask.png | Bin 0 -> 5180 bytes .../hicolor_apps_256x256_hdajackretask.png | Bin 0 -> 12414 bytes .../hicolor_apps_48x48_hdajackretask.png | Bin 0 -> 1705 bytes 8 files changed, 47 insertions(+), 2 deletions(-) create mode 100644 hdajackretask/desktop/Makefile.am create mode 100644 hdajackretask/desktop/hdajackretask.desktop create mode 100644 hdajackretask/desktop/hicolor_apps_128x128_hdajackretask.png create mode 100644 hdajackretask/desktop/hicolor_apps_256x256_hdajackretask.png create mode 100644 hdajackretask/desktop/hicolor_apps_48x48_hdajackretask.png diff --git a/.gitignore b/.gitignore index 120b234..c5debca 100644 --- a/.gitignore +++ b/.gitignore @@ -123,6 +123,7 @@ hdajackretask/configure hdajackretask/Makefile hdajackretask/README.generated.h hdajackretask/hdajackretask +hdajackretask/desktop/Makefile hdajacksensetest/Makefile hdajacksensetest/configure hdajacksensetest/hdajacksensetest diff --git a/hdajackretask/Makefile.am b/hdajackretask/Makefile.am index e313159..a9f0a67 100644 --- a/hdajackretask/Makefile.am +++ b/hdajackretask/Makefile.am @@ -1,3 +1,4 @@ +SUBDIRS = desktop EXTRA_DIST = gitcompile README AM_CFLAGS = @GTK3_CFLAGS@ -Wno-deprecated-declarations bin_PROGRAMS = hdajackretask @@ -21,4 +22,3 @@ alsa-dist: distdir @mkdir -p ../distdir/hdajackretask @cp -RLpv $(distdir)/* ../distdir/hdajackretask @rm -rf $(distdir) - diff --git a/hdajackretask/configure.ac b/hdajackretask/configure.ac index 050c731..f836306 100644 --- a/hdajackretask/configure.ac +++ b/hdajackretask/configure.ac @@ -8,4 +8,4 @@ AC_HEADER_STDC PKG_CHECK_MODULES(GTK3, gtk+-3.0) -AC_OUTPUT(Makefile) +AC_OUTPUT(Makefile desktop/Makefile) diff --git a/hdajackretask/desktop/Makefile.am b/hdajackretask/desktop/Makefile.am new file mode 100644 index 0000000..263d892 --- /dev/null +++ b/hdajackretask/desktop/Makefile.am @@ -0,0 +1,36 @@ +APPNAME = hdajackretask + +desktopdir = $(datadir)/applications +desktop_DATA = $(APPNAME).desktop + +public_icons = \ + hicolor_apps_48x48_$(APPNAME).png \ + hicolor_apps_128x128_$(APPNAME).png \ + hicolor_apps_256x256_$(APPNAME).png + +EXTRA_DIST = \ + $(public_icons) \ + $(desktop_DATA) + +install-icons: + for icon in $(public_icons); do \ + THEME=`echo $$icon | cut -d_ -f1`; \ + CONTEXT=`echo $$icon | cut -d_ -f2`; \ + SIZE=`echo $$icon | cut -d_ -f3`; \ + ICONFILE=`echo $$icon | cut -d_ -f4`; \ + mkdir -p $(DESTDIR)$(datadir)/icons/$$THEME/$$SIZE/$$CONTEXT; \ + $(INSTALL_DATA) $(srcdir)/$$icon $(DESTDIR)$(datadir)/icons/$$THEME/$$SIZE/$$CONTEXT/$$ICONFILE; \ + done + +uninstall-icons: + -for icon in $(public_icons); do \ + THEME=`echo $$icon | cut -d_ -f1`; \ + CONTEXT=`echo $$icon | cut -d_ -f2`; \ + SIZE=`echo $$icon | cut -d_ -f3`; \ + ICONFILE=`echo $$icon | cut -d_ -f4`; \ + rm -f $(DESTDIR)$(datadir)/icons/$$THEME/$$SIZE/$$CONTEXT/$$ICONFILE; \ + done + +install-data-local: install-icons + +uninstall-local: uninstall-icons diff --git a/hdajackretask/desktop/hdajackretask.desktop b/hdajackretask/desktop/hdajackretask.desktop new file mode 100644 index 0000000..f45ba06 --- /dev/null +++ b/hdajackretask/desktop/hdajackretask.desktop @@ -0,0 +1,8 @@ +[Desktop Entry] +Name=HDAJackRetask +GenericName=Retask the audio jacks for the HDA sound driver +Exec=hdajackretask +Terminal=false +Type=Application +Categories=AudioVideo; +Version=0.9.4 diff --git a/hdajackretask/desktop/hicolor_apps_128x128_hdajackretask.png b/hdajackretask/desktop/hicolor_apps_128x128_hdajackretask.png new file mode 100644 index 0000000000000000000000000000000000000000..b95d433e8456fa2f080f8bcb115598abfa78eeec GIT binary patch literal 5180 zcmeAS@N?(olHy`uVBq!ia0y~yU}ykg4mJh`hQoG=rx_STm_1z_Ln>~)om)9a#C6*7 z{a5d_%QQ7SV4NhUk->DbOI~y)>rrmmqoLvDw(jo7xsQL1b9Ya>bFq*u-SuK=+1{{n z+1R^+M@36RL|8dhN<|_#Y%+GTJk64twK)4<$BLCJR;+oqX4RWluh#vkwfp;W&8eOf zD=PHk_Edbl$K4^Q?A9Y;m~;ff5N$Cl6yL(}hLMN;8`D14Nl&lrnB2hLP|mPYdIv{^ z><{q=A7<3C@}ALbxNv0K|1!qS4cfCdPYh>{E;70BFPg`v>!lRe_m(%8uf*#X6lzNE z(Es2&uh-}AS@v7ZoiolwzTmHkPuQ>4XxZxX@~6}~jXU_wKB zIRkUUSHrXayAD?U+F~ePAyvU0!C1o7#;BgndFN(To$Q6>no=_u+}H~4Dm|FNcB+(V z9goI#;TM9JWw#`ye?MPcHNm9KxS?usjO~ZgV3SSK8*XPkF|C~Pe!=n{KCtW=;nS0H1-_`S?wdee}9`*O*Wu;e9iC0YxR=M$Q)!Mi1 z#IIFre`!f(_tsTxKe6lEwqIZE7iB#$c3XPiCE)&q2rh<#Iam4bDzEr_Zka^PR=3vW zt|8B57N7gBJ%#b#*%!^`%BwbSKg#gmp(QD`yv6?Cn+mCf&X2$KyEoi>RWs$_Dz|s? zsWJ6(iOTW35vn1NKIykg3SRp?t8j1pMxF$zqG|3oPOPooo*Q3Z^8B5q^5F|yDGhqZ zzRu!!9h({R{^pItxzao1^JA{NUOhDPH^21W_}_h@oC$x|&DFURW}Nj&YUcu>74NL$ zW~$K8`W%hV>9JOTlYeimK0LN%e^B;@t01Fgy`@RJiAD$Gz0-!WBCXu3#m}!> zdH#~7I%9Or@!bnVh5iZM|F~`8wzL1c?y9^D31$6om?OS?QsLeW8`}@(u+^rYQT^L^ z_2@PO#^A{Ym09-f!rxw;JeP9KDM8TS+|(prZuLKz2TJbdN4}V{;?adv`Hj-knAqJv zoJu^fd|J`o#S)wh9~KqX#*4^KZaK+tef`8cJJNnGK5&h}aNDi&J({{xJ}j<1{<+cq znUdXsQ?aEhw|;dz(7_Q`yMC+G4Z&8H7x`yZ{U&NR#ZSEV;YQ~t{sZNEb_Yz;kzUFR0QF3Vq!_C8!wxM}MiJGRt<#Sxqvy#B8cNn@7f z&UwOr;?CP$R;3TU3a86)dNWA`{OJ3>;(bM@k!p?k{g3n9-@fVPjn4C#F8BR~rq~qG z_x`MA4-+1UW`8-)8ElZ#UUord)}>4P8Tc-HAKox+&&LDO*SL~1`uO&;KJ}lm7?M)21p)tHAH2i{2i9`PXeak1{px4%zFD5Qq| zva;=+%yRC^=a}U86+AnxXhd^=xf1NKuJ7#<_aiSFZog+x-yM{b?RMxs@12Q{zqw7R zESKT6$lDd9Qq+;(Aiww{(1o>ziKGbLZH#MhRXUnCp+~HlC`yTtU z#BJ-z;#~ZG+K!+Z-meW=@;U2QEIp(a`;Fm>-=f@SvAv%ToI8DW-2}_6?5F;}&*#$k zEmDv;Pj=pgU8lClEY1`x=+ZtK?(6eIxKX`fpQT*om8p-o{^sPLeW6z8z3lLD<8>n6 z@?!NLL_TP-nf*O`ZS>Q<8^b~!;&WK~t}L!jJYn>oeaBCs`0kTSw2$V6cWHku*h_V)Bj&RVU(x(!P<7} zJ(tGas{%8w+BV8(KH|AD|N5(yN%Q1(1`0oo`@1+dhsm#C=?{%Vw9=cr->F=n$ z=DGakzY`C!OHf#G#dluivTleByc#5VU}{pY_R)nb z)qCeWwZ5l!|Kqvd2cg1SnznLCy!R?B;d@lReTrSf>sU>(m#>q1-~W%%`+Gx6sifxk zZDvu2!m0yr%eTHwa2DSFklU7Z*{_m$+D9{L-*aT2t3NRH(XR+57j@okJA(cQJl(wG zM}T(w)oW}2HZI-w*tfsqhwWFP^GDXM6ESOa zk9r#|W9)F*_@GdD*Iy34l%0pl_w??2+^he|bo0qApU)RB{SkVg_*uz^Ld&ngt5X@8 z1?60JZoj=d`EH~67VW6#Om6=Vr{txn20n}VZCO3P-t7#-+07|7Y*RfBZd>QewCz`4 zd7Q@~^_t_-&0SSyhIghaohT~b^R+VX48z&u9R3SxB;z=D{Ox&PA^*GY`ix+=^iAfu z%NV3+{7mn62h9=o zZupemv~I=T-^s-`lUVFZmlhOH*}lF1eBsg`&O86zTQ%cJq!%a|Nlcl4Z=Fo@vzu(I zEYAJc^GmGcMm1R3jVkE%CIU z!QrWkCOnZ+4!C#4Iq;*z-oU(HLZXac+`G!&P}P*P0|2NNc^# zP2S19>_zH=*niPR%(i}oOJ_)a`nvqJ-D~+rH~Sl2fBm#2CD1n;Qko=Xf&oUuKCntF{gfzHs zI`FCVfZ&1u(?7m2KYTst#XGN!H_P|@TOoU3!GdW#;U@P#%CYMiy|aJmRT$WJozJzB zi}ma4c8&k1&T7aXoctvuJGnc|!ThpIA*1@FnN2FGJUjif&lUHImtQV^F_T5z*p6qa zi&dmsi+{$mEqmu4-x0JY-L{(XLyCi`b;IXa&A1P;>wO!PEH6!cl-$kcs93nVL0US% z;`gFEPu?5NP!lb=%>Q(XkR~(B)6H|;cJwUVYx4L;*+<*JxXn)wG2{l^+mxi68548*cNj)>$|QK6-CKLy z*!k45=p*}0_#Z9r332v#Z>09+x%8qb4A&PcMF&}Mi*ki=%wsvDqww5((>lGYFZQ1e z`c%eT{d{xfW9xguEbRMhx~Cqs=KS3|VUe%UK9ha>W#0uX=v>naaNt4AnO!{Yz zrY-!Bem^nGY)@-o_f#*cn0lt*Nm9UaQH6%v9QUT_vVMG?^;c!7t9N);bIhSU036)N804Pm@fa4?=YL>+A6;GJa3fI?Y0#cY<51n%OSmsVX6b8(wW@( z$E*Ga7){n<^eI|;BPH|K=Ejz5!fmg%@j1^t_}z3#grmgOmD2xjEPj7!x%s-@SI=`V zZ)@My)|lyN$g`n+X{uXm)Z<-OjvwE`{bGuGjAmR;!pZFlE0k-Gzg|!}<8Pp}8T*1g zZ81iB8<{p5N1pHKi`{O2_LfHd{F4lwNva2|F3py@+o7Q|)2IH|Rn@eH>$(?r+?l#) z!Q$&Nny&&j{?g{WG2x=)V)hI+$rbmCKdHXMZe+BdA`SMvBmmpHp1Vp3JL!A7yGz>;ZMUGQXIcU zBJZF5$+u?1Y{%^q*DrUAgioI!sau`R*->w)<*j)(w|c_{nW;Ap#iWU630TQYZ8L8T zkoNky=Z)>99fJ4+S?RzgeWV&v~2nt)J^e&Iif8=(%;#du`XW z3|7mD?)UlBWlQI{q-w}YEM;N%5q;?#uWbM)=jW566}uh(EQyPaiEQHACc1F>sg56- zhkJK&Swv`eBs)*rKmW{x&nl+^L@kAG$pvJeHC}IW>Bi}RK9#hYrXuqStma>|zdY;v z{-rgBbKV%Y*k28PB5=CSh;i!LE!ToBY|oHV{iK++@5SQhtDKqM?d>cI&Rf5;D&>H2 z@fV>D`#L-8RZnfc=29Qtbv5-2%iqA2@3|~(9{D~Hahf9-pu@bRK>EYy3CC2n>?`2? zP!YWTd!X8lr>QpY&D*?7@3&bx{waQ-#dT+SXA<`(rI57O7cJkNciP#sH{#IOeU)c; z4|uN=Nx$^TK*A#Yb$olq%jn)ua&_WQ=LAoYcfIoOXZ1oEhu5Wtz1}@}XnpT;iduin zYp;v_5{((sg|)9woSPKu^(fw_?Ae8hhBFsOvQ0CsIWFz7?e(?Rbt2lyM&S(16W(t7 z*QI?l*s#-kHM7a}7xj!&-)gt=t`n&~_GB#s=L73|D&0RO%$;TGmYu?I|Km5txDEUE z-J1Gn_KYo46&atgocYavG-WLV+l6y7&rU{4cYG6gHiPlhj34RD_4&27r=}*A`&C42NXM6UaoSGElbBrs2;r_>S zN}p})GMwuF&0sv${iF6IpU>WF7L#<{w5KzC(~REy#Z$rXQ~>9jhELI}do#Y+=bim+ zx*{iaYRkf1{NJ2hg+mt`t+_g_ndJue(~rM*UOTmYa+!F1?u3qr|)m!T643jsC@s18Pi3Q*(Ex>GKHooTs`nK~Hg@RZ@4x>v^Tv=;j*UQBe{qMt)+URbl8v={ZoT1B_&0Zj49m~9 zj#8F+iy8Kxb}DIzOqt)(Di+8cpn1{ZCtIJwZ=3tVU#}QgT$g!feb2;bvUbk8hRXkn zA%3aC_Zj}L`(3v0-n6!zRwOTV}Y$UDes>b;UiUI`P^!yFLHR zj<)>R9#Q+r_UCi%H=Umjn7!tleAIS}(2dqJcN(+YMF{KB<4da5>-F+3=0XRH2I9Un?sbkN9WqRC|1PdFOxY zvmu<1*?aPy9E;_Z(Y%}98(IX7ctUkZxsQ<%m{`KDUX6ux>cj7do_b~UqE*0d{IdNvU#hM5< z17>Yy>#wg5e485+dk>mue&z;Gh@$k z?0m31L@aFPW5q|ien+hCUQ{5Q`8sHdq?w%YtJ>aEM~oKpv$=&lXHfDxbaVQ$ldm#o z>8)QCz*ceNMe_=!S#lYO6mia%^8m8LujU;8O|_Ns;7?(CiUM&Yc&oW4zEGgIq@FWWM2 zkNCTpw=^Mr-OFvZrzRdbcjs44u=y93O|}8s7XD#TUv%!2rOZ~%LiMcKm+JoAn{lsk zhsJ{SLFtV4Og$Tzg$n#1B-f`E4P?j zJHWf7-^lZb314e-z;o00SqtLlFFSE|^NNm(%uml6MQC@2R!M%EYUZZX_cBuC+m+he p;rz?i2g)6W549mNS`NoEboy<`JiGOSD+2=qgQu&X%Q~loCIGFrCSm{p literal 0 HcmV?d00001 diff --git a/hdajackretask/desktop/hicolor_apps_256x256_hdajackretask.png b/hdajackretask/desktop/hicolor_apps_256x256_hdajackretask.png new file mode 100644 index 0000000000000000000000000000000000000000..686215f8080fa8ad1ec6616600bcd34a05006969 GIT binary patch literal 12414 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 literal 0 HcmV?d00001 diff --git a/hdajackretask/desktop/hicolor_apps_48x48_hdajackretask.png b/hdajackretask/desktop/hicolor_apps_48x48_hdajackretask.png new file mode 100644 index 0000000000000000000000000000000000000000..875456cc22e12577225caa2c4fd17d5c98cafbf5 GIT binary patch literal 1705 zcmeAS@N?(olHy`uVBq!ia0y~yU@!n-4mJh`hH$2z?Fo9f;OK&; z6@|R({P%E_9#m)T6=e(*yrO4(-u~A_pJU(Stl#?da;ncf^W^SZ>+f@a&wW3y@$I&| zR+|syu!}H1XX-sL|A7C2xelrNjD8I28Gjw-r#*PH&LWs=58EGxGmPgL(-`J6*fTAz zI@lonp11t|J61JIrW?bNZ=RxGBnv7$giyl}$xNXy1-e~q0}vu5sZXRKw^PioT7{x$W#(V`V!F4Qc%zc~M+#Dmt3 zXABX1A2#cb{GI+mFS^c*K8L}e~YxXHM0yG8hcwaI1P2Oih6u1uVK zechUjy!_r*x8!fgd}XU+oz*aF!^F+k*WWF#nf!J-SA^&RrPnjqUeEX>$FzP+-%f9z za;Heg#8o@@e(mAdrYUA^EBut%laAOE(^53yH*#ZMhV+qSFdmXvRfwN-LHE=uV*+O@Ot|}ruCe{_3zhGXKy>H zIQtE&4WA674O`5MUvUB#zZ-9SV3ELOAZ&5s>)!ayk((8kXI}X}E9Snn&<>Z4dk$JH zJ7%@afca1D0mcJ7*T0)FZ?zJS-W+SZoNtNcrwI&tB8oPdvc^si)L*YT!@4Z$IM0N8 zKTmz#d+nXZ{yj5GedHe~c(!;gh+Fl^^g)s3_OK;|Yj5{Hk$8T9VS$Tg4fls~ei==X z?f#5W4A;NzUB5P2t!tP1&VAbrR9=4z56Wh&W4^Up$m!^#|K(e(?{~e*sul?HRMkE5 z`}Er6JjQz>toEt0lh-x)Gu{jP_cKUB$|>a2ei;oWIi`0^a%|tG|GG0RWLe2)UZ1c> zvp8kAViumcwW4&}D%pfh7XMQha7nCOQ$I!MZo>`%tH9l{tTpmV#?QRMa?UXQN$`9k zy6*ke$m4I8OjyG(Pt0I8LwWF~+BX+{zs0&b)Ow_tFnw-(y-4N^XdzK0_P_;USw7IVR`dc`Q2HfucMo<6evg<-K`8_{kzC%h1N5tiI=Vx z#fUw4uF0ZbTD#sg>Q&SO+uVB0GqaC6VU@f&*e`#bkWTD+aS`0jjF&Vog+tM~t3?{)l|q41jIplgQP|BJs?uj1GjG^=j!>*~k< zxY-{$t=NAh!}>$3N#!!rj;QQU4Y}+O1Rh4P*UUKkVCSMWOER`d?$Aj7{(eHpj4A9N zf?2C>|7Z5hO)5=i?k*|5rSvvV*KXZ)m&+{wBwo)j>)aX>J@?wI)lA~6MCw)vJ$YBy ztj-|)LSt$Atw@Ir^`4Qrk53rhk2t<(BKwD>lejNC-Qrrx_w2au2Qh);YNw^x!vEg1 zC_0lB8&Z@T+~8X><>%p?Mfdztl%&`F^4W1}mCUv;9h*Kqx~4GW;jg%2Ihh;oiI>DK z-dnQmm4?`_-oE{lopLYA?|*aa&b=i0dtWa9vDvst|E+K;v#3{HNc&4IH_FsqPwkIar{CE5Qan?GoPNM|K+jo~{ hUgGZD?RRe3uUWzTpVcyJ69WSSgQu&X%Q~loCIE` Date: Wed, 15 Nov 2017 10:24:14 +0100 Subject: [PATCH 14/66] hdspmixer: move .desktop and icon files to desktop, use modern destination for icons Signed-off-by: Jaroslav Kysela --- .gitignore | 1 + hdspmixer/Makefile.am | 7 ++-- hdspmixer/configure.ac | 21 +---------- hdspmixer/desktop/Makefile.am | 34 ++++++++++++++++++ hdspmixer/{ => desktop}/hdspmixer.desktop | 0 .../hicolor_apps_48x48_hdspmixer.png} | Bin hdspmixer/pixmaps/Makefile.am | 3 +- 7 files changed, 39 insertions(+), 27 deletions(-) create mode 100644 hdspmixer/desktop/Makefile.am rename hdspmixer/{ => desktop}/hdspmixer.desktop (100%) rename hdspmixer/{pixmaps/hdspmixer.png => desktop/hicolor_apps_48x48_hdspmixer.png} (100%) diff --git a/.gitignore b/.gitignore index c5debca..f765810 100644 --- a/.gitignore +++ b/.gitignore @@ -57,6 +57,7 @@ hdspmixer/Makefile hdspmixer/configure hdspmixer/src/hdspmixer hdspmixer/pixmaps/Makefile +hdspmixer/desktop/Makefile hdspmixer/src/Makefile hdsploader/Makefile hdsploader/configure diff --git a/hdspmixer/Makefile.am b/hdspmixer/Makefile.am index 86a759c..85c1177 100644 --- a/hdspmixer/Makefile.am +++ b/hdspmixer/Makefile.am @@ -1,8 +1,5 @@ -EXTRA_DIST = gitcompile hdspmixer.desktop depcomp -SUBDIRS = src pixmaps - -desktopdir = $(DESKTOP_DIR) -desktop_DATA = hdspmixer.desktop +EXTRA_DIST = gitcompile depcomp +SUBDIRS = src pixmaps desktop alsa-dist: distdir @rm -rf ../distdir/hdspmixer diff --git a/hdspmixer/configure.ac b/hdspmixer/configure.ac index 0b32dba..167e4f4 100644 --- a/hdspmixer/configure.ac +++ b/hdspmixer/configure.ac @@ -9,25 +9,6 @@ AC_PATH_X AM_PATH_ALSA(1.0.0) -dnl desktop install -AC_ARG_WITH(desktop-dir, - [ --with-desktop-dir specify the path to install desktop file], - [desktopdir="$withval"], [desktopdir=""]) -if test -z "$desktopdir"; then - desktopdir=$datadir/applications -fi -DESKTOP_DIR="$desktopdir" -AC_SUBST(DESKTOP_DIR) - -AC_ARG_WITH(pixmap-dir, - [ --with-pixmap-dir specify the path to install desktop pixmap file], - [pixmapdir="$withval"], [pixmapdir=""]) -if test -z "$pixmapdir"; then - pixmapdir=$datadir/pixmaps -fi -PIXMAP_DIR="$pixmapdir" -AC_SUBST(PIXMAP_DIR) - dnl library check AC_PATH_PROG(FLTK_CONFIG, fltk-config, no) if test "$FLTK_CONFIG" = "no" && ! test "`hostname -f`" = "alsa.alsa-project.org"; then @@ -39,4 +20,4 @@ FLTK_LIBS="`$FLTK_CONFIG --ldflags`" CXXFLAGS="$CXXFLAGS $ALSA_CFLAGS $FLTK_CXXFLAGS" LIBS="$LIBS $ALSA_LIBS $FLTK_LIBS" -AC_OUTPUT(Makefile src/Makefile pixmaps/Makefile) +AC_OUTPUT(Makefile src/Makefile pixmaps/Makefile desktop/Makefile) diff --git a/hdspmixer/desktop/Makefile.am b/hdspmixer/desktop/Makefile.am new file mode 100644 index 0000000..adafcd8 --- /dev/null +++ b/hdspmixer/desktop/Makefile.am @@ -0,0 +1,34 @@ +APPNAME = hdspmixer + +desktopdir = $(datadir)/applications +desktop_DATA = $(APPNAME).desktop + +public_icons = \ + hicolor_apps_48x48_$(APPNAME).png + +EXTRA_DIST = \ + $(public_icons) \ + $(desktop_DATA) + +install-icons: + for icon in $(public_icons); do \ + THEME=`echo $$icon | cut -d_ -f1`; \ + CONTEXT=`echo $$icon | cut -d_ -f2`; \ + SIZE=`echo $$icon | cut -d_ -f3`; \ + ICONFILE=`echo $$icon | cut -d_ -f4`; \ + mkdir -p $(DESTDIR)$(datadir)/icons/$$THEME/$$SIZE/$$CONTEXT; \ + $(INSTALL_DATA) $(srcdir)/$$icon $(DESTDIR)$(datadir)/icons/$$THEME/$$SIZE/$$CONTEXT/$$ICONFILE; \ + done + +uninstall-icons: + -for icon in $(public_icons); do \ + THEME=`echo $$icon | cut -d_ -f1`; \ + CONTEXT=`echo $$icon | cut -d_ -f2`; \ + SIZE=`echo $$icon | cut -d_ -f3`; \ + ICONFILE=`echo $$icon | cut -d_ -f4`; \ + rm -f $(DESTDIR)$(datadir)/icons/$$THEME/$$SIZE/$$CONTEXT/$$ICONFILE; \ + done + +install-data-local: install-icons + +uninstall-local: uninstall-icons diff --git a/hdspmixer/hdspmixer.desktop b/hdspmixer/desktop/hdspmixer.desktop similarity index 100% rename from hdspmixer/hdspmixer.desktop rename to hdspmixer/desktop/hdspmixer.desktop diff --git a/hdspmixer/pixmaps/hdspmixer.png b/hdspmixer/desktop/hicolor_apps_48x48_hdspmixer.png similarity index 100% rename from hdspmixer/pixmaps/hdspmixer.png rename to hdspmixer/desktop/hicolor_apps_48x48_hdspmixer.png diff --git a/hdspmixer/pixmaps/Makefile.am b/hdspmixer/pixmaps/Makefile.am index c81fc95..c1cdf2c 100644 --- a/hdspmixer/pixmaps/Makefile.am +++ b/hdspmixer/pixmaps/Makefile.am @@ -1,4 +1,3 @@ pixmapdir = $(PIXMAP_DIR) -pixmap_DATA = hdspmixer.png -EXTRA_DIST = $(wildcard *.xpm) hdspmixer.png +EXTRA_DIST = $(wildcard *.xpm) From ecf4884564e570a96d21d9cb637a903311e73b02 Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Wed, 15 Nov 2017 10:43:48 +0100 Subject: [PATCH 15/66] hdspconf: move .desktop and icon files to desktop, use modern destination for icons Signed-off-by: Jaroslav Kysela --- .gitignore | 1 + hdspconf/Makefile.am | 7 ++-- hdspconf/configure.ac | 2 +- hdspconf/desktop/Makefile.am | 34 ++++++++++++++++++ hdspconf/{ => desktop}/hdspconf.desktop | 0 .../hicolor_apps_48x48_hdspconf.png} | Bin hdspconf/pixmaps/Makefile.am | 5 +-- 7 files changed, 39 insertions(+), 10 deletions(-) create mode 100644 hdspconf/desktop/Makefile.am rename hdspconf/{ => desktop}/hdspconf.desktop (100%) rename hdspconf/{pixmaps/hdspconf.png => desktop/hicolor_apps_48x48_hdspconf.png} (100%) diff --git a/.gitignore b/.gitignore index f765810..57c5d65 100644 --- a/.gitignore +++ b/.gitignore @@ -53,6 +53,7 @@ hdspconf/configure hdspconf/src/hdspconf hdspconf/src/Makefile hdspconf/pixmaps/Makefile +hdspconf/desktop/Makefile hdspmixer/Makefile hdspmixer/configure hdspmixer/src/hdspmixer diff --git a/hdspconf/Makefile.am b/hdspconf/Makefile.am index e4a4bd8..3fdfb34 100644 --- a/hdspconf/Makefile.am +++ b/hdspconf/Makefile.am @@ -1,8 +1,5 @@ -EXTRA_DIST = gitcompile hdspconf.desktop depcomp -SUBDIRS = src pixmaps - -desktopdir = $(DESKTOP_DIR) -desktop_DATA = hdspconf.desktop +EXTRA_DIST = gitcompile depcomp +SUBDIRS = src pixmaps desktop alsa-dist: distdir @rm -rf ../distdir/hdspconf diff --git a/hdspconf/configure.ac b/hdspconf/configure.ac index f0b0c95..e11d481 100644 --- a/hdspconf/configure.ac +++ b/hdspconf/configure.ac @@ -39,4 +39,4 @@ FLTK_LIBS=`$FLTK_CONFIG $fltk_config_args --ldflags` CXXFLAGS="$CXXFLAGS $ALSA_CFLAGS $FLTK_CXXFLAGS" LIBS="$LIBS $ALSA_LIBS $FLTK_LIBS" -AC_OUTPUT(Makefile src/Makefile pixmaps/Makefile) +AC_OUTPUT(Makefile src/Makefile pixmaps/Makefile desktop/Makefile) diff --git a/hdspconf/desktop/Makefile.am b/hdspconf/desktop/Makefile.am new file mode 100644 index 0000000..c143498 --- /dev/null +++ b/hdspconf/desktop/Makefile.am @@ -0,0 +1,34 @@ +APPNAME = hdspconf + +desktopdir = $(datadir)/applications +desktop_DATA = $(APPNAME).desktop + +public_icons = \ + hicolor_apps_48x48_$(APPNAME).png + +EXTRA_DIST = \ + $(public_icons) \ + $(desktop_DATA) + +install-icons: + for icon in $(public_icons); do \ + THEME=`echo $$icon | cut -d_ -f1`; \ + CONTEXT=`echo $$icon | cut -d_ -f2`; \ + SIZE=`echo $$icon | cut -d_ -f3`; \ + ICONFILE=`echo $$icon | cut -d_ -f4`; \ + mkdir -p $(DESTDIR)$(datadir)/icons/$$THEME/$$SIZE/$$CONTEXT; \ + $(INSTALL_DATA) $(srcdir)/$$icon $(DESTDIR)$(datadir)/icons/$$THEME/$$SIZE/$$CONTEXT/$$ICONFILE; \ + done + +uninstall-icons: + -for icon in $(public_icons); do \ + THEME=`echo $$icon | cut -d_ -f1`; \ + CONTEXT=`echo $$icon | cut -d_ -f2`; \ + SIZE=`echo $$icon | cut -d_ -f3`; \ + ICONFILE=`echo $$icon | cut -d_ -f4`; \ + rm -f $(DESTDIR)$(datadir)/icons/$$THEME/$$SIZE/$$CONTEXT/$$ICONFILE; \ + done + +install-data-local: install-icons + +uninstall-local: uninstall-icons diff --git a/hdspconf/hdspconf.desktop b/hdspconf/desktop/hdspconf.desktop similarity index 100% rename from hdspconf/hdspconf.desktop rename to hdspconf/desktop/hdspconf.desktop diff --git a/hdspconf/pixmaps/hdspconf.png b/hdspconf/desktop/hicolor_apps_48x48_hdspconf.png similarity index 100% rename from hdspconf/pixmaps/hdspconf.png rename to hdspconf/desktop/hicolor_apps_48x48_hdspconf.png diff --git a/hdspconf/pixmaps/Makefile.am b/hdspconf/pixmaps/Makefile.am index d8b3822..7278f3b 100644 --- a/hdspconf/pixmaps/Makefile.am +++ b/hdspconf/pixmaps/Makefile.am @@ -1,4 +1 @@ -pixmapdir = $(PIXMAP_DIR) -pixmap_DATA = hdspconf.png - -EXTRA_DIST = $(wildcard *.xpm) hdspconf.png +EXTRA_DIST = $(wildcard *.xpm) From 46eb8fb6090c9e2be56d2430b87b3efc476e9b31 Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Wed, 15 Nov 2017 11:05:11 +0100 Subject: [PATCH 16/66] echomixer: add .desktop and icon files Signed-off-by: Jaroslav Kysela --- echomixer/Makefile.am | 1 + echomixer/configure.ac | 2 +- echomixer/desktop/Makefile.am | 34 ++++++++++++++++++ echomixer/desktop/echomixer.desktop | 10 ++++++ .../desktop/hicolor_apps_48x48_echomixer.png | Bin 0 -> 841 bytes 5 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 echomixer/desktop/Makefile.am create mode 100644 echomixer/desktop/echomixer.desktop create mode 100644 echomixer/desktop/hicolor_apps_48x48_echomixer.png diff --git a/echomixer/Makefile.am b/echomixer/Makefile.am index ee08822..beae8fc 100644 --- a/echomixer/Makefile.am +++ b/echomixer/Makefile.am @@ -1,3 +1,4 @@ +SUBDIRS = desktop AM_CFLAGS = @ECHOMIXER_CFLAGS@ bin_PROGRAMS = echomixer man_MANS = diff --git a/echomixer/configure.ac b/echomixer/configure.ac index 769c829..c360442 100644 --- a/echomixer/configure.ac +++ b/echomixer/configure.ac @@ -7,4 +7,4 @@ AM_MAINTAINER_MODE([enable]) PKG_CHECK_MODULES(ECHOMIXER, gtk+-2.0 alsa >= 1.0.0) -AC_OUTPUT(Makefile) +AC_OUTPUT(Makefile desktop/Makefile) diff --git a/echomixer/desktop/Makefile.am b/echomixer/desktop/Makefile.am new file mode 100644 index 0000000..3314702 --- /dev/null +++ b/echomixer/desktop/Makefile.am @@ -0,0 +1,34 @@ +APPNAME = echomixer + +desktopdir = $(datadir)/applications +desktop_DATA = $(APPNAME).desktop + +public_icons = \ + hicolor_apps_48x48_$(APPNAME).png + +EXTRA_DIST = \ + $(public_icons) \ + $(desktop_DATA) + +install-icons: + for icon in $(public_icons); do \ + THEME=`echo $$icon | cut -d_ -f1`; \ + CONTEXT=`echo $$icon | cut -d_ -f2`; \ + SIZE=`echo $$icon | cut -d_ -f3`; \ + ICONFILE=`echo $$icon | cut -d_ -f4`; \ + mkdir -p $(DESTDIR)$(datadir)/icons/$$THEME/$$SIZE/$$CONTEXT; \ + $(INSTALL_DATA) $(srcdir)/$$icon $(DESTDIR)$(datadir)/icons/$$THEME/$$SIZE/$$CONTEXT/$$ICONFILE; \ + done + +uninstall-icons: + -for icon in $(public_icons); do \ + THEME=`echo $$icon | cut -d_ -f1`; \ + CONTEXT=`echo $$icon | cut -d_ -f2`; \ + SIZE=`echo $$icon | cut -d_ -f3`; \ + ICONFILE=`echo $$icon | cut -d_ -f4`; \ + rm -f $(DESTDIR)$(datadir)/icons/$$THEME/$$SIZE/$$CONTEXT/$$ICONFILE; \ + done + +install-data-local: install-icons + +uninstall-local: uninstall-icons diff --git a/echomixer/desktop/echomixer.desktop b/echomixer/desktop/echomixer.desktop new file mode 100644 index 0000000..80753f9 --- /dev/null +++ b/echomixer/desktop/echomixer.desktop @@ -0,0 +1,10 @@ +[Desktop Entry] +Name=Echomixer +GenericName=Control Echo Digital Audio sound cards +Comment=Mixer and GUI control utility for Echo Digital Audio sound cards +Exec=echomixer +Icon=echomixer +Terminal=false +Type=Application +Categories=AudioVideo; +Version=0.9.4 diff --git a/echomixer/desktop/hicolor_apps_48x48_echomixer.png b/echomixer/desktop/hicolor_apps_48x48_echomixer.png new file mode 100644 index 0000000000000000000000000000000000000000..48c4b92a7ba27f9b9d5d43197a6ad4791adab1b8 GIT binary patch literal 841 zcmeAS@N?(olHy`uVBq!ia0y~yU@!n-4mJh`hH$2z?FRrek3O`Ffd*7ba4#HxOa8d*=*rJ zk)!pWCz`}>^R-Ws(hYOn*j1>Q_v%#Zi}?@dKlc(4yrcPInU(H2MECSjZPT zw)dDd@;g1z`{0(}<-5Wj``sJMjBIL72n9a)G%-dTIgqsvCP*GXO z#4eRu!WAK4Z?JA6^WTkJK^Lw#oM1b4gk7I8zOnLw=#D(D>z&W_Z?pgARG%Pvsp=B@ z&EtJJMMcwACRtu9%YHq-Ek#qd(J$`I-UzSz>$N8ahD+^a$jF>>amoQrf0Mb@%Y5DR zPd8UjYO#|1tLD8{dG!g+9F8ehEH}xnJSMte-NvaN-7|lxuHCA|7x9So*M`84ZO7DR zwcm0P-YL51;W}=SM)3(}#ZIIYZQRD&w6;ZP1IvHi#`8O7{1Q$zoO^DEKWJ=QRsJc+1rHMf=<2327cnZA1B<=3p;vP+#c+C-N zJ;d^y%atK&>4c4~X6&ymrHZ3>yft|l*0wk4L`7}a-BV`CXLa5_-J8-O{5^Z>>Z3{T wJ-6P{e*Rhc&(>4%i^N#2G(GV7_K$bPdhN8+Gu$H>7#J8lUHx3vIVCg!0Lid)w*UYD literal 0 HcmV?d00001 From 39a388e01b15c7a9d420c31bc946e6ec23d4fbe3 Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Wed, 15 Nov 2017 11:09:04 +0100 Subject: [PATCH 17/66] envy24control: add .desktop and icon files Signed-off-by: Jaroslav Kysela --- .gitignore | 2 ++ envy24control/Makefile.am | 1 + envy24control/configure.ac | 2 +- envy24control/desktop/Makefile.am | 34 ++++++++++++++++++ envy24control/desktop/envy24control.desktop | 10 ++++++ .../hicolor_apps_48x48_envy24control.png | Bin 0 -> 945 bytes 6 files changed, 48 insertions(+), 1 deletion(-) create mode 100644 envy24control/desktop/Makefile.am create mode 100644 envy24control/desktop/envy24control.desktop create mode 100644 envy24control/desktop/hicolor_apps_48x48_envy24control.png diff --git a/.gitignore b/.gitignore index 57c5d65..e72c2e5 100644 --- a/.gitignore +++ b/.gitignore @@ -46,8 +46,10 @@ as10k1/configure echomixer/echomixer echomixer/Makefile echomixer/configure +echomixer/desktop/Makefile envy24control/Makefile envy24control/configure +envy24control/desktop/Makefile hdspconf/Makefile hdspconf/configure hdspconf/src/hdspconf diff --git a/envy24control/Makefile.am b/envy24control/Makefile.am index aaa50ee..72ced31 100644 --- a/envy24control/Makefile.am +++ b/envy24control/Makefile.am @@ -1,3 +1,4 @@ +SUBDIRS = desktop AM_CFLAGS = @ENVY24CONTROL_CFLAGS@ bin_PROGRAMS = envy24control man_MANS = envy24control.1 diff --git a/envy24control/configure.ac b/envy24control/configure.ac index 08dcdd8..776f290 100644 --- a/envy24control/configure.ac +++ b/envy24control/configure.ac @@ -7,4 +7,4 @@ AM_MAINTAINER_MODE([enable]) PKG_CHECK_MODULES(ENVY24CONTROL, gtk+-2.0 alsa >= 0.9.0) -AC_OUTPUT(Makefile) +AC_OUTPUT(Makefile desktop/Makefile) diff --git a/envy24control/desktop/Makefile.am b/envy24control/desktop/Makefile.am new file mode 100644 index 0000000..0a6d6ca --- /dev/null +++ b/envy24control/desktop/Makefile.am @@ -0,0 +1,34 @@ +APPNAME = envy24control + +desktopdir = $(datadir)/applications +desktop_DATA = $(APPNAME).desktop + +public_icons = \ + hicolor_apps_48x48_$(APPNAME).png + +EXTRA_DIST = \ + $(public_icons) \ + $(desktop_DATA) + +install-icons: + for icon in $(public_icons); do \ + THEME=`echo $$icon | cut -d_ -f1`; \ + CONTEXT=`echo $$icon | cut -d_ -f2`; \ + SIZE=`echo $$icon | cut -d_ -f3`; \ + ICONFILE=`echo $$icon | cut -d_ -f4`; \ + mkdir -p $(DESTDIR)$(datadir)/icons/$$THEME/$$SIZE/$$CONTEXT; \ + $(INSTALL_DATA) $(srcdir)/$$icon $(DESTDIR)$(datadir)/icons/$$THEME/$$SIZE/$$CONTEXT/$$ICONFILE; \ + done + +uninstall-icons: + -for icon in $(public_icons); do \ + THEME=`echo $$icon | cut -d_ -f1`; \ + CONTEXT=`echo $$icon | cut -d_ -f2`; \ + SIZE=`echo $$icon | cut -d_ -f3`; \ + ICONFILE=`echo $$icon | cut -d_ -f4`; \ + rm -f $(DESTDIR)$(datadir)/icons/$$THEME/$$SIZE/$$CONTEXT/$$ICONFILE; \ + done + +install-data-local: install-icons + +uninstall-local: uninstall-icons diff --git a/envy24control/desktop/envy24control.desktop b/envy24control/desktop/envy24control.desktop new file mode 100644 index 0000000..391c647 --- /dev/null +++ b/envy24control/desktop/envy24control.desktop @@ -0,0 +1,10 @@ +[Desktop Entry] +Name=Envy24 Control +GenericName=Envy24 Control Utility +Comment=Mixer and GUI control utility for Envy24-based sound cards +Exec=envy24control +Icon=envy24control +Terminal=false +Type=Application +Categories=AudioVideo; +Version=0.9.4 diff --git a/envy24control/desktop/hicolor_apps_48x48_envy24control.png b/envy24control/desktop/hicolor_apps_48x48_envy24control.png new file mode 100644 index 0000000000000000000000000000000000000000..73c47d67a25ee245181731883e709d0f7f5f4c15 GIT binary patch literal 945 zcmeAS@N?(olHy`uVBq!ia0y~yU@!n-4kiW$h8qca7Z?~AI14-?iy0V1R2djV4l`cO z-FlaSfq}im)7O>#ItQPqz6}3{{WS~>%mJP*jv*0;-_G>S7V(rg{y#MKu5E6Qq~{{F zq$#}`5$*6le33t4{jhUp8(z7XCQfpJh{CxVqYSoYuD=UAkT=)O;>*cHF>8*I&1CDJm$t8!(Gjs3Wh6| z9c4IrYf_hS@SGD39gR^RUof3CS-Jkol#n^aIf;cbfvdx|cts0u=MK@E9&cA)mGf`O zV+-Bx^BZq#AIm;RD=qrGmwsD%vh8|s z?=daGw;W{_PG4gDkDgsN< Date: Wed, 15 Nov 2017 11:13:04 +0100 Subject: [PATCH 18/66] hwmixvolume: add .desktop and icon files Resized version of public domain clipart found here: http://www.openclipart.org/detail/17428 Signed-off-by: Jaroslav Kysela --- .gitignore | 1 + hwmixvolume/Makefile.am | 3 +- hwmixvolume/configure.ac | 2 +- hwmixvolume/desktop/Makefile.am | 36 ++++++++++++++++++ .../hicolor_apps_128x128_hwmixvolume.png | Bin 0 -> 4822 bytes .../hicolor_apps_256x256_hwmixvolume.png | Bin 0 -> 10069 bytes .../hicolor_apps_48x48_hwmixvolume.png | Bin 0 -> 1928 bytes hwmixvolume/desktop/hwmixvolume.desktop | 9 +++++ 8 files changed, 49 insertions(+), 2 deletions(-) create mode 100644 hwmixvolume/desktop/Makefile.am create mode 100644 hwmixvolume/desktop/hicolor_apps_128x128_hwmixvolume.png create mode 100644 hwmixvolume/desktop/hicolor_apps_256x256_hwmixvolume.png create mode 100644 hwmixvolume/desktop/hicolor_apps_48x48_hwmixvolume.png create mode 100644 hwmixvolume/desktop/hwmixvolume.desktop diff --git a/.gitignore b/.gitignore index e72c2e5..0909477 100644 --- a/.gitignore +++ b/.gitignore @@ -66,6 +66,7 @@ hdsploader/Makefile hdsploader/configure hwmixvolume/Makefile hwmixvolume/configure +hwmixvolume/desktop/Makefile ld10k1/Makefile ld10k1/ld10k1d ld10k1/configure diff --git a/hwmixvolume/Makefile.am b/hwmixvolume/Makefile.am index 38690eb..0437723 100644 --- a/hwmixvolume/Makefile.am +++ b/hwmixvolume/Makefile.am @@ -1,4 +1,5 @@ -# # Process this file with automake to procude Makefile.in. +# Process this file with automake to produce Makefile.in. +SUBDIRS = desktop bin_SCRIPTS = hwmixvolume #man_MANS = EXTRA_DIST = gitcompile hwmixvolume diff --git a/hwmixvolume/configure.ac b/hwmixvolume/configure.ac index 09d5f09..84f8473 100644 --- a/hwmixvolume/configure.ac +++ b/hwmixvolume/configure.ac @@ -4,4 +4,4 @@ AM_INIT_AUTOMAKE AM_MAINTAINER_MODE([enable]) AC_CONFIG_SRCDIR([hwmixvolume]) AC_PROG_INSTALL -AC_OUTPUT([Makefile]) +AC_OUTPUT([Makefile desktop/Makefile]) diff --git a/hwmixvolume/desktop/Makefile.am b/hwmixvolume/desktop/Makefile.am new file mode 100644 index 0000000..d15b5e5 --- /dev/null +++ b/hwmixvolume/desktop/Makefile.am @@ -0,0 +1,36 @@ +APPNAME = hwmixvolume + +desktopdir = $(datadir)/applications +desktop_DATA = $(APPNAME).desktop + +public_icons = \ + hicolor_apps_256x256_$(APPNAME).png \ + hicolor_apps_128x128_$(APPNAME).png \ + hicolor_apps_48x48_$(APPNAME).png + +EXTRA_DIST = \ + $(public_icons) \ + $(desktop_DATA) + +install-icons: + for icon in $(public_icons); do \ + THEME=`echo $$icon | cut -d_ -f1`; \ + CONTEXT=`echo $$icon | cut -d_ -f2`; \ + SIZE=`echo $$icon | cut -d_ -f3`; \ + ICONFILE=`echo $$icon | cut -d_ -f4`; \ + mkdir -p $(DESTDIR)$(datadir)/icons/$$THEME/$$SIZE/$$CONTEXT; \ + $(INSTALL_DATA) $(srcdir)/$$icon $(DESTDIR)$(datadir)/icons/$$THEME/$$SIZE/$$CONTEXT/$$ICONFILE; \ + done + +uninstall-icons: + -for icon in $(public_icons); do \ + THEME=`echo $$icon | cut -d_ -f1`; \ + CONTEXT=`echo $$icon | cut -d_ -f2`; \ + SIZE=`echo $$icon | cut -d_ -f3`; \ + ICONFILE=`echo $$icon | cut -d_ -f4`; \ + rm -f $(DESTDIR)$(datadir)/icons/$$THEME/$$SIZE/$$CONTEXT/$$ICONFILE; \ + done + +install-data-local: install-icons + +uninstall-local: uninstall-icons diff --git a/hwmixvolume/desktop/hicolor_apps_128x128_hwmixvolume.png b/hwmixvolume/desktop/hicolor_apps_128x128_hwmixvolume.png new file mode 100644 index 0000000000000000000000000000000000000000..c131adc2bf1298321885971eed4b07194e72cd8b GIT binary patch literal 4822 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 literal 0 HcmV?d00001 diff --git a/hwmixvolume/desktop/hicolor_apps_256x256_hwmixvolume.png b/hwmixvolume/desktop/hicolor_apps_256x256_hwmixvolume.png new file mode 100644 index 0000000000000000000000000000000000000000..57d6d0a837b514a799888028fe95d57f84ff0b18 GIT binary patch literal 10069 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 RbOr_n22WQ%mvv4FO#oa=nQ8z4 literal 0 HcmV?d00001 diff --git a/hwmixvolume/desktop/hicolor_apps_48x48_hwmixvolume.png b/hwmixvolume/desktop/hicolor_apps_48x48_hwmixvolume.png new file mode 100644 index 0000000000000000000000000000000000000000..41c366d4dbf4bc89d67b9a735ff49f79913a8466 GIT binary patch literal 1928 zcmeAS@N?(olHy`uVBq!ia0y~yU@!n-4mJh`hH$2z?FV@UPU;4Vbv4!(`FVhd2D@EZI0W=grpd*KNP^@V|~-FI!zccU^Y* zlEqWs&8#llXI%X3%*>r!57LkOmx(!l-qT^jo0FV;nRn@x{Kxz1U$u(QKfOx$xc@gX z@2C4CCo+ffX*WeMrZk^e6X3OQ>nhueUa=o)|99tEn%GCF>=E7erDS7ivH8B|jVG#3 z_jT$_F5h%#)(jVy0Ix(>zLsNuE{INCZ@m6>$b^LQczyHZ$0~mBe?RH`^T4dyr{aP& z_Q%f6wXV!4nDAP-e5d*3+4DEwFKg`CI_=(B+muIo`TIYzwK_4bHJ$f7mxEnMa2+4N zv66m2 zqr={l)3Wv{&rQqAdEvrx3Rw&Ot`b_+{L}YFhf=cG-p#WPEDYbg(B^t><;PdgvcF1P ziCW)Pf0bbk$Nq|+sd;zz#de4A^7*$NKlbD9>-E>oqK!8sKYl!??(NoTKjb+MT)Dg3 zCv|g-lw_n}gHUU-N#2uB55ID@xw~In=;rPhd|yx`Z_(SZBDv}MYFX7Gg>#S zVEHtYY5KQ##fhFp`j*ZAR~-M{AFC4VvH9oTb8R~lOSPh&?tFYnP3yR`+WyIp!{^tv zPB3cU_lxyZ%b$tH3^KJ}Ie!1&!~WVMID1Vex9MV!NVzh(H122)kDy7H7X7^0XXEkv zve4agN0oHMx(`kW|M@#6N7rNh(M4k36CWL)q`j7t!O>ubzg|O^wd-mR%h&7ImxYGk z+~%stDzP%-?m?YUmKd624vW4OFfBe696g}5s|Mu?aX1VHfZx2{)d-r8)%xF8o*fO}DD5>cy{M_KW+K=KZ**Xmfn|9R0h? z&nV1%^da%Zn--t6k1=Ix&DTC%j9u|+ZkXnxRqf~Qb5GmaQutAc|4`SKTPC}vaVZJ7 z2I%RY?Z35w{n1k+=k58I-~RsM>vQ4luAKSvo*nr4Ip*EVhgI(EZ!KoI9I#2a5GB~4 zarF7R*vF@j_bp^&d$4qR#jmsGfr}Tfm?+41{PCX$H`70QFWtt#(QD(NbdjThqfV>! z-ZtJ#nHp2IPM=qg&RghU-R<_NVJq|95Yy1#=gw^TyGCQG$Ugp!5=S0oos`|Nbt=w8-SQTI-|TH7_q1mz0+p+Rk-9^0Py4%d=3+)(4BGupfEG%~tocCC~B4GKMXN z4}L$WoO++vBX9AYXZ9ymtovja7yqy8I;wQjrAdLqqrBw9`Gtye%vvs(vKrjHdUWMV z&0YF25B6O9qsU`vU~u4~vb)C9B8y`=F$@e*Ein-vmr$wVXf+1pKV9v`;TWoJ&~5+vgA@f^Q4ncR-Nj8SJbWR zKKoMUysA&0Y`=bs&*J4}smi!-SC)I-zB*Cpga480&T^#avhIQu2{7+MRN7>XubglJd&RZa&xkxcV5Oy=(Inp)c)kVApc|Hu6yxoRxI_}vv7))?DxO(_kVa)eDgoE_}3JjyyH`@FfcGM Nc)I$ztaD0e0s!FYzuo`< literal 0 HcmV?d00001 diff --git a/hwmixvolume/desktop/hwmixvolume.desktop b/hwmixvolume/desktop/hwmixvolume.desktop new file mode 100644 index 0000000..70d03fb --- /dev/null +++ b/hwmixvolume/desktop/hwmixvolume.desktop @@ -0,0 +1,9 @@ +[Desktop Entry] +Name=Hwmixvolume +GenericName=Control the volume of individual streams on sound cards that use hardware mixing +Exec=hwmixvolume +Icon=hwmixvolume +Terminal=false +Type=Application +Categories=AudioVideo; +Version=0.9.4 From c92440aad8a96f487f9f459c9658dcd642c24f50 Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Wed, 15 Nov 2017 11:16:48 +0100 Subject: [PATCH 19/66] Makefile: fix version file creation Signed-off-by: Jaroslav Kysela --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 8497281..0d63532 100644 --- a/Makefile +++ b/Makefile @@ -29,7 +29,7 @@ install: done alsa-dist: - @echo $(VERSION) >> $(TOP)/version + @echo $(VERSION) > $(TOP)/version @mkdir -p $(TOP)/distdir @for i in $(SUBDIRS); do \ cd $(TOP)/$$i; echo $(TOP)/$$i; \ From a18c3445256cf642f866d04df8d4b16808025900 Mon Sep 17 00:00:00 2001 From: Tanu Kaskinen Date: Mon, 20 Nov 2017 19:05:28 +0200 Subject: [PATCH 20/66] hdajacksensetest: add gitcompile to EXTRA_DIST The gitcompile script is used from the top-level Makefile, so it needs to be included in the tarball. Signed-off-by: Tanu Kaskinen Signed-off-by: Takashi Iwai --- hdajacksensetest/Makefile.am | 1 + 1 file changed, 1 insertion(+) diff --git a/hdajacksensetest/Makefile.am b/hdajacksensetest/Makefile.am index 795373c..893b4e1 100644 --- a/hdajacksensetest/Makefile.am +++ b/hdajacksensetest/Makefile.am @@ -1,3 +1,4 @@ +EXTRA_DIST = gitcompile MYNAME = hdajacksensetest AUTOMAKE_OPTIONS = foreign bin_PROGRAMS = hdajacksensetest From 66e74b6878679759e041a9b42b7a7d3ed6dc94ea Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Tue, 3 Apr 2018 09:01:37 +0200 Subject: [PATCH 21/66] Release v1.1.6 Signed-off-by: Jaroslav Kysela --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 0d63532..c32bf25 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -VERSION = 1.1.5 +VERSION = 1.1.6 TOP = . SUBDIRS = as10k1 envy24control hdsploader hdspconf hdspmixer \ mixartloader pcxhrloader rmedigicontrol sb16_csp seq sscape_ctl \ From a861bdabf02cd9bfb3ec7c0571c563c0fa14adfb Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Tue, 24 Apr 2018 12:24:32 -0700 Subject: [PATCH 22/66] us428control: Fix clang -Wreserved-user-defined-literal warnings | us428control.cc:66:18: error: invalid suffix on literal; C++11 requires a space between literal and identifier [-Wreserved-user-defined-literal] | printf("usage: "PROGNAME" [-v verbosity_level 0..2] [-c card] [-D device] [-u usb-device] [-m mode]\n"); | ^ Signed-off-by: Khem Raj Signed-off-by: Takashi Iwai --- us428control/us428control.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/us428control/us428control.cc b/us428control/us428control.cc index e839bf4..8cb3c42 100644 --- a/us428control/us428control.cc +++ b/us428control/us428control.cc @@ -63,7 +63,7 @@ static void usage(void) { printf("Tascam US-428 Control\n"); printf("version %s\n", VERSION); - printf("usage: "PROGNAME" [-v verbosity_level 0..2] [-c card] [-D device] [-u usb-device] [-m mode]\n"); + printf("usage: " PROGNAME " [-v verbosity_level 0..2] [-c card] [-D device] [-u usb-device] [-m mode]\n"); printf("mode is one of (us224, us428, mixxx)\n"); } /* From 235d9c5e8381518b0a8661786e7e0cbdd1bbcd01 Mon Sep 17 00:00:00 2001 From: Ross Burton Date: Tue, 12 Jun 2018 13:24:34 +0100 Subject: [PATCH 23/66] ld10k1: define _GNU_SOURCE and use sighandler_t __sighandler_t is a glibc internal type which doesn't exist in musl. By using AC_USE_SYSTEM_EXTENSIONS to get _GNU_SOURCE defined, both glibc and musl then expose sighandler_t. Signed-off-by: Ross Burton Signed-off-by: Takashi Iwai --- ld10k1/configure.ac | 1 + ld10k1/src/ld10k1_fnc1.c | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/ld10k1/configure.ac b/ld10k1/configure.ac index 276b24e..f48ca31 100644 --- a/ld10k1/configure.ac +++ b/ld10k1/configure.ac @@ -4,6 +4,7 @@ AC_CONFIG_MACRO_DIR([m4]) AM_MAINTAINER_MODE([enable]) AC_CONFIG_HEADERS(config.h) +AC_USE_SYSTEM_EXTENSIONS AC_PROG_CC AC_PROG_LD AC_PROG_INSTALL diff --git a/ld10k1/src/ld10k1_fnc1.c b/ld10k1/src/ld10k1_fnc1.c index 343584c..ddc43c6 100644 --- a/ld10k1/src/ld10k1_fnc1.c +++ b/ld10k1/src/ld10k1_fnc1.c @@ -179,7 +179,7 @@ int main_loop(comm_param *param, int audigy, const char *card_id, int tram_size, { fd_set active_fd_set/*, read_fd_set*/; int i, j, res = 0; - __sighandler_t old_sig_pipe; + sighandler_t old_sig_pipe; int main_sock = 0; int data_sock = 0; From 50e9ac4e81fa6efbdff3f34e9a1385e16ad7479b Mon Sep 17 00:00:00 2001 From: Emmanuel Gil Peyrot Date: Tue, 18 Sep 2018 15:42:31 +0200 Subject: [PATCH 24/66] hwmixvolume: use four spaces instead of one tab for indent This is the recommended coding style for all Python programs, as specified in PEP-0008[1]. [1] https://www.python.org/dev/peps/pep-0008/ Signed-off-by: Emmanuel Gil Peyrot Reviewed-by: Takashi Sakamoto Signed-off-by: Takashi Iwai --- hwmixvolume/hwmixvolume | 482 ++++++++++++++++++++-------------------- 1 file changed, 241 insertions(+), 241 deletions(-) diff --git a/hwmixvolume/hwmixvolume b/hwmixvolume/hwmixvolume index ef80bc8..038bcb3 100755 --- a/hwmixvolume/hwmixvolume +++ b/hwmixvolume/hwmixvolume @@ -26,285 +26,285 @@ EVENT_INFO = alsahcontrol.event_mask['INFO'] EVENT_REMOVE = alsahcontrol.event_mask_remove class Stream: - def __init__(self, element, parent): - self.element = element - self.element.set_callback(self) - self.parent = parent - self.label = None - self.scales = [] - self.adjustments = [] - self.callback(self.element, EVENT_INFO) + def __init__(self, element, parent): + self.element = element + self.element.set_callback(self) + self.parent = parent + self.label = None + self.scales = [] + self.adjustments = [] + self.callback(self.element, EVENT_INFO) - def destroy(self): - self.deactivate() + def destroy(self): + self.deactivate() - def callback(self, e, mask): - if mask == EVENT_REMOVE: - self.deactivate() - elif (mask & EVENT_INFO) != 0: - info = alsahcontrol.Info(self.element) - if info.is_inactive: - self.deactivate() - else: - self.activate() - elif (mask & EVENT_VALUE) != 0: - self.update_scales_from_ctl() + def callback(self, e, mask): + if mask == EVENT_REMOVE: + self.deactivate() + elif (mask & EVENT_INFO) != 0: + info = alsahcontrol.Info(self.element) + if info.is_inactive: + self.deactivate() + else: + self.activate() + elif (mask & EVENT_VALUE) != 0: + self.update_scales_from_ctl() - def activate(self): - if self.label: - return - info = alsahcontrol.Info(self.element) - value = alsahcontrol.Value(self.element) - value.read() - values = value.get_tuple(TYPE_INTEGER, info.count) - self.label = gtk.Label(self.get_label(info)) - self.label.set_single_line_mode(True) - self.parent.scales_vbox.pack_start(self.label, expand=False) - for i in range(info.count): - adj = gtk.Adjustment(value=values[i], - lower=info.min, upper=info.max, - step_incr=1, - page_incr=(info.max-info.min+1)/8) - adj.connect('value-changed', self.update_ctl_from_scale, i) - scale = gtk.HScale(adj) - scale.set_draw_value(False) - self.parent.scales_vbox.pack_start(scale, expand=False) - self.scales.append(scale) - self.adjustments.append(adj) - self.parent.scales_vbox.show_all() - self.parent.update_msg_label() + def activate(self): + if self.label: + return + info = alsahcontrol.Info(self.element) + value = alsahcontrol.Value(self.element) + value.read() + values = value.get_tuple(TYPE_INTEGER, info.count) + self.label = gtk.Label(self.get_label(info)) + self.label.set_single_line_mode(True) + self.parent.scales_vbox.pack_start(self.label, expand=False) + for i in range(info.count): + adj = gtk.Adjustment(value=values[i], + lower=info.min, upper=info.max, + step_incr=1, + page_incr=(info.max-info.min+1)/8) + adj.connect('value-changed', self.update_ctl_from_scale, i) + scale = gtk.HScale(adj) + scale.set_draw_value(False) + self.parent.scales_vbox.pack_start(scale, expand=False) + self.scales.append(scale) + self.adjustments.append(adj) + self.parent.scales_vbox.show_all() + self.parent.update_msg_label() - def deactivate(self): - if not self.label: - return - self.label.destroy() - for s in self.scales: - s.destroy() - self.label = None - self.scales = [] - self.adjustments = [] - self.parent.update_msg_label() + def deactivate(self): + if not self.label: + return + self.label.destroy() + for s in self.scales: + s.destroy() + self.label = None + self.scales = [] + self.adjustments = [] + self.parent.update_msg_label() - def update_scales_from_ctl(self): - if not self.label: - return - count = len(self.adjustments) - value = alsahcontrol.Value(self.element) - value.read() - values = value.get_tuple(TYPE_INTEGER, count) - for i in range(count): - self.adjustments[i].set_value(values[i]) + def update_scales_from_ctl(self): + if not self.label: + return + count = len(self.adjustments) + value = alsahcontrol.Value(self.element) + value.read() + values = value.get_tuple(TYPE_INTEGER, count) + for i in range(count): + self.adjustments[i].set_value(values[i]) - def update_ctl_from_scale(self, adj, index): - scale_value = adj.get_value() - value_to_set = int(round(adj.get_value())) - count = len(self.adjustments) - value = alsahcontrol.Value(self.element) - if self.parent.lock_check.get_active(): - values = [value_to_set for i in range(count)] - else: - value.read() - values = value.get_array(TYPE_INTEGER, count) - values[index] = value_to_set - value.set_array(TYPE_INTEGER, values) - value.write() - if value_to_set != scale_value: - adj.set_value(value_to_set) + def update_ctl_from_scale(self, adj, index): + scale_value = adj.get_value() + value_to_set = int(round(adj.get_value())) + count = len(self.adjustments) + value = alsahcontrol.Value(self.element) + if self.parent.lock_check.get_active(): + values = [value_to_set for i in range(count)] + else: + value.read() + values = value.get_array(TYPE_INTEGER, count) + values[index] = value_to_set + value.set_array(TYPE_INTEGER, values) + value.write() + if value_to_set != scale_value: + adj.set_value(value_to_set) - def get_label(self, info): - pid = self.get_pid(info) - if pid: - cmdline = self.get_pid_cmdline(pid) - if cmdline: - return cmdline - else: - return "PID %d" % pid - else: - name = info.name - if name[-7:] == " Volume": - name = name[:-7] - if name[-9:] == " Playback": - name = name[:-9] - return name + def get_label(self, info): + pid = self.get_pid(info) + if pid: + cmdline = self.get_pid_cmdline(pid) + if cmdline: + return cmdline + else: + return "PID %d" % pid + else: + name = info.name + if name[-7:] == " Volume": + name = name[:-7] + if name[-9:] == " Playback": + name = name[:-9] + return name - def get_pid(self, info): - card = self.parent.current_card - device = info.device - subdevice = info.subdevice - if subdevice == 0: - subdevice = info.index - filename = "/proc/asound/card%d/pcm%dp/sub%d/status" % (card, device, subdevice) - try: - f = open(filename, "r") - except IOError: - return None - try: - for line in f.readlines(): - if line[:9] == "owner_pid": - return int(line.split(':')[1].strip()) - finally: - f.close() - return None + def get_pid(self, info): + card = self.parent.current_card + device = info.device + subdevice = info.subdevice + if subdevice == 0: + subdevice = info.index + filename = "/proc/asound/card%d/pcm%dp/sub%d/status" % (card, device, subdevice) + try: + f = open(filename, "r") + except IOError: + return None + try: + for line in f.readlines(): + if line[:9] == "owner_pid": + return int(line.split(':')[1].strip()) + finally: + f.close() + return None - def get_pid_cmdline(self, pid): - try: - f = open("/proc/%d/cmdline" % pid, "r") - except IOError: - return None - try: - cmdline = f.read() - finally: - f.close() - return cmdline.replace('\x00', ' ').strip() + def get_pid_cmdline(self, pid): + try: + f = open("/proc/%d/cmdline" % pid, "r") + except IOError: + return None + try: + cmdline = f.read() + finally: + f.close() + return cmdline.replace('\x00', ' ').strip() class MixerWindow(gtk.Window): - card_numbers = alsacard.card_list() - current_card = -1 - hcontrol = None - scales_vbox = None - msg_label = None - streams = [] - hctl_sources = [] + card_numbers = alsacard.card_list() + current_card = -1 + hcontrol = None + scales_vbox = None + msg_label = None + streams = [] + hctl_sources = [] - def __init__(self): - gtk.Window.__init__(self) - self.connect('destroy', lambda w: gtk.main_quit()) - self.set_title("Hardware Mixer Volumes") + def __init__(self): + gtk.Window.__init__(self) + self.connect('destroy', lambda w: gtk.main_quit()) + self.set_title("Hardware Mixer Volumes") - vbox = gtk.VBox() - self.add(vbox) + vbox = gtk.VBox() + self.add(vbox) - hbox = gtk.HBox() - vbox.pack_start(hbox, expand=False) + hbox = gtk.HBox() + vbox.pack_start(hbox, expand=False) - label = gtk.Label("_Sound Card: ") - label.set_use_underline(True) - hbox.pack_start(label, expand=False) + label = gtk.Label("_Sound Card: ") + label.set_use_underline(True) + hbox.pack_start(label, expand=False) - combo = gtk.combo_box_new_text() - for i in self.card_numbers: - str = "%d: %s" % (i, alsacard.card_get_name(i)) - combo.append_text(str) - if len(self.card_numbers) > 0: - combo.set_active(0) - combo.connect('changed', lambda c: self.change_card(self.card_numbers[combo.get_active()])) - hbox.pack_start(combo) - label.set_mnemonic_widget(combo) + combo = gtk.combo_box_new_text() + for i in self.card_numbers: + str = "%d: %s" % (i, alsacard.card_get_name(i)) + combo.append_text(str) + if len(self.card_numbers) > 0: + combo.set_active(0) + combo.connect('changed', lambda c: self.change_card(self.card_numbers[combo.get_active()])) + hbox.pack_start(combo) + label.set_mnemonic_widget(combo) - self.lock_check = gtk.CheckButton(label="_Lock Channels") - self.lock_check.set_active(True) - vbox.pack_start(self.lock_check, expand=False) + self.lock_check = gtk.CheckButton(label="_Lock Channels") + self.lock_check.set_active(True) + vbox.pack_start(self.lock_check, expand=False) - scrollwin = gtk.ScrolledWindow() - scrollwin.set_policy(hscrollbar_policy=gtk.POLICY_NEVER, vscrollbar_policy=gtk.POLICY_AUTOMATIC) - scrollwin.set_shadow_type(gtk.SHADOW_NONE) - vbox.pack_start(scrollwin) + scrollwin = gtk.ScrolledWindow() + scrollwin.set_policy(hscrollbar_policy=gtk.POLICY_NEVER, vscrollbar_policy=gtk.POLICY_AUTOMATIC) + scrollwin.set_shadow_type(gtk.SHADOW_NONE) + vbox.pack_start(scrollwin) - self.scales_vbox = gtk.VBox() - scrollwin.add_with_viewport(self.scales_vbox) + self.scales_vbox = gtk.VBox() + scrollwin.add_with_viewport(self.scales_vbox) - label = gtk.Label() - label.set_single_line_mode(True) - line_height = label.size_request()[1] - label.destroy() - scale = gtk.HScale() - scale.set_draw_value(False) - line_height += scale.size_request()[1] - scale.destroy() - # always have space for at least four sliders - scrollwin.set_size_request(width=-1, height=line_height*4+4) + label = gtk.Label() + label.set_single_line_mode(True) + line_height = label.size_request()[1] + label.destroy() + scale = gtk.HScale() + scale.set_draw_value(False) + line_height += scale.size_request()[1] + scale.destroy() + # always have space for at least four sliders + scrollwin.set_size_request(width=-1, height=line_height*4+4) - # TODO: select the default card or the first card with stream controls - if len(self.card_numbers) > 0: - self.change_card(self.card_numbers[0]) - self.update_msg_label() + # TODO: select the default card or the first card with stream controls + if len(self.card_numbers) > 0: + self.change_card(self.card_numbers[0]) + self.update_msg_label() - self.show_all() + self.show_all() - def change_card(self, cardnum): - for s in self.hctl_sources: - gobject.source_remove(s) - self.hctl_sources = [] + def change_card(self, cardnum): + for s in self.hctl_sources: + gobject.source_remove(s) + self.hctl_sources = [] - self.hcontrol = self.open_hcontrol_for_card(cardnum) + self.hcontrol = self.open_hcontrol_for_card(cardnum) - for s in self.streams: - s.destroy() - self.streams = [] + for s in self.streams: + s.destroy() + self.streams = [] - self.current_card = cardnum + self.current_card = cardnum - if not self.hcontrol: - self.update_msg_label() - return + if not self.hcontrol: + self.update_msg_label() + return - for id in self.hcontrol.list(): - if not self.is_stream_elem(id): - continue - elem = alsahcontrol.Element(self.hcontrol, id[0]) - info = alsahcontrol.Info(elem) - if not self.is_stream_info(info): - continue - stream = Stream(elem, self) - self.streams.append(stream) + for id in self.hcontrol.list(): + if not self.is_stream_elem(id): + continue + elem = alsahcontrol.Element(self.hcontrol, id[0]) + info = alsahcontrol.Info(elem) + if not self.is_stream_info(info): + continue + stream = Stream(elem, self) + self.streams.append(stream) - for fd,condition in self.hcontrol.poll_fds: - self.hctl_sources.append(gobject.io_add_watch(fd, condition, self.hctl_io_callback)) + for fd,condition in self.hcontrol.poll_fds: + self.hctl_sources.append(gobject.io_add_watch(fd, condition, self.hctl_io_callback)) - self.update_msg_label() + self.update_msg_label() - self.scales_vbox.show_all() + self.scales_vbox.show_all() - def update_msg_label(self): - needs_msg = len(self.scales_vbox.get_children()) < 2 - has_msg = self.msg_label - if has_msg and not needs_msg: - self.msg_label.destroy() - self.msg_label = None - elif needs_msg: - if len(self.streams) > 0: - msg = "There are no open streams." - else: - msg = "This card does not have stream controls." - if not has_msg: - self.msg_label = gtk.Label(msg) - self.scales_vbox.pack_start(self.msg_label) - self.scales_vbox.show_all() - elif self.msg_label.get_text() != msg: - self.msg_label.set_text(msg) + def update_msg_label(self): + needs_msg = len(self.scales_vbox.get_children()) < 2 + has_msg = self.msg_label + if has_msg and not needs_msg: + self.msg_label.destroy() + self.msg_label = None + elif needs_msg: + if len(self.streams) > 0: + msg = "There are no open streams." + else: + msg = "This card does not have stream controls." + if not has_msg: + self.msg_label = gtk.Label(msg) + self.scales_vbox.pack_start(self.msg_label) + self.scales_vbox.show_all() + elif self.msg_label.get_text() != msg: + self.msg_label.set_text(msg) - def open_hcontrol_for_card(self, cardnum): - devname = "hw:CARD=" + str(cardnum) - try: - hc = alsahcontrol.HControl(name=devname, - mode=alsahcontrol.open_mode['NONBLOCK']) - except: - # TODO: alsa error msg - dlg = gtk.MessageDialog(self, - gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT, - gtk.MESSAGE_ERROR, gtk.BUTTONS_OK, - "Cannot open sound card control device.") - dlg.run() - dlg.destroy() - return None - return hc + def open_hcontrol_for_card(self, cardnum): + devname = "hw:CARD=" + str(cardnum) + try: + hc = alsahcontrol.HControl(name=devname, + mode=alsahcontrol.open_mode['NONBLOCK']) + except: + # TODO: alsa error msg + dlg = gtk.MessageDialog(self, + gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT, + gtk.MESSAGE_ERROR, gtk.BUTTONS_OK, + "Cannot open sound card control device.") + dlg.run() + dlg.destroy() + return None + return hc - def is_stream_elem(self, id): - return ((id[1] == INTF_PCM and - id[4] in ("PCM Playback Volume", "EMU10K1 PCM Volume")) or - (id[1] == INTF_MIXER and - id[4] == "VIA DXS Playback Volume")) + def is_stream_elem(self, id): + return ((id[1] == INTF_PCM and + id[4] in ("PCM Playback Volume", "EMU10K1 PCM Volume")) or + (id[1] == INTF_MIXER and + id[4] == "VIA DXS Playback Volume")) - def is_stream_info(self, info): - return info.is_readable and info.is_writable and info.type == TYPE_INTEGER + def is_stream_info(self, info): + return info.is_readable and info.is_writable and info.type == TYPE_INTEGER - def hctl_io_callback(self, source, condition): - self.hcontrol.handle_events() - return True + def hctl_io_callback(self, source, condition): + self.hcontrol.handle_events() + return True def main(): - MixerWindow() - gtk.main() + MixerWindow() + gtk.main() main() From 0a9ad5c1e1abb86839f3de80bf4564c97fc54510 Mon Sep 17 00:00:00 2001 From: Emmanuel Gil Peyrot Date: Tue, 18 Sep 2018 15:42:32 +0200 Subject: [PATCH 25/66] hwmixvolume: replace PyGTK with gobject-introspection MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This doesn’t work yet, we require Gtk 3.0 rather than 2.0 and the API changed quite a lot, so this is but a preparatory patch. This is done so that we can get rid of GTK+ 2 which has been EOL for many years already, and to add Python 3 support because Python 2 will very soon be EOL as well. Signed-off-by: Emmanuel Gil Peyrot Reviewed-by: Takashi Sakamoto Signed-off-by: Takashi Iwai --- hwmixvolume/hwmixvolume | 53 ++++++++++++++++++++++------------------- 1 file changed, 28 insertions(+), 25 deletions(-) diff --git a/hwmixvolume/hwmixvolume b/hwmixvolume/hwmixvolume index 038bcb3..64d232c 100755 --- a/hwmixvolume/hwmixvolume +++ b/hwmixvolume/hwmixvolume @@ -15,7 +15,10 @@ # OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR # PERFORMANCE OF THIS SOFTWARE. -import gobject, gtk +import gi +gi.require_version('GLib', '2.0') +gi.require_version('Gtk', '3.0') +from gi.repository import GLib, Gtk from pyalsa import alsacard, alsahcontrol INTF_PCM = alsahcontrol.interface_id['PCM'] @@ -57,16 +60,16 @@ class Stream: value = alsahcontrol.Value(self.element) value.read() values = value.get_tuple(TYPE_INTEGER, info.count) - self.label = gtk.Label(self.get_label(info)) + self.label = Gtk.Label(self.get_label(info)) self.label.set_single_line_mode(True) self.parent.scales_vbox.pack_start(self.label, expand=False) for i in range(info.count): - adj = gtk.Adjustment(value=values[i], + adj = Gtk.Adjustment(value=values[i], lower=info.min, upper=info.max, step_incr=1, page_incr=(info.max-info.min+1)/8) adj.connect('value-changed', self.update_ctl_from_scale, i) - scale = gtk.HScale(adj) + scale = Gtk.HScale(adj) scale.set_draw_value(False) self.parent.scales_vbox.pack_start(scale, expand=False) self.scales.append(scale) @@ -157,7 +160,7 @@ class Stream: f.close() return cmdline.replace('\x00', ' ').strip() -class MixerWindow(gtk.Window): +class MixerWindow(Gtk.Window): card_numbers = alsacard.card_list() current_card = -1 hcontrol = None @@ -167,21 +170,21 @@ class MixerWindow(gtk.Window): hctl_sources = [] def __init__(self): - gtk.Window.__init__(self) - self.connect('destroy', lambda w: gtk.main_quit()) + Gtk.Window.__init__(self) + self.connect('destroy', lambda w: Gtk.main_quit()) self.set_title("Hardware Mixer Volumes") - vbox = gtk.VBox() + vbox = Gtk.VBox() self.add(vbox) - hbox = gtk.HBox() + hbox = Gtk.HBox() vbox.pack_start(hbox, expand=False) - label = gtk.Label("_Sound Card: ") + label = Gtk.Label("_Sound Card: ") label.set_use_underline(True) hbox.pack_start(label, expand=False) - combo = gtk.combo_box_new_text() + combo = Gtk.combo_box_new_text() for i in self.card_numbers: str = "%d: %s" % (i, alsacard.card_get_name(i)) combo.append_text(str) @@ -191,23 +194,23 @@ class MixerWindow(gtk.Window): hbox.pack_start(combo) label.set_mnemonic_widget(combo) - self.lock_check = gtk.CheckButton(label="_Lock Channels") + self.lock_check = Gtk.CheckButton(label="_Lock Channels") self.lock_check.set_active(True) vbox.pack_start(self.lock_check, expand=False) - scrollwin = gtk.ScrolledWindow() - scrollwin.set_policy(hscrollbar_policy=gtk.POLICY_NEVER, vscrollbar_policy=gtk.POLICY_AUTOMATIC) - scrollwin.set_shadow_type(gtk.SHADOW_NONE) + scrollwin = Gtk.ScrolledWindow() + scrollwin.set_policy(hscrollbar_policy=Gtk.POLICY_NEVER, vscrollbar_policy=Gtk.POLICY_AUTOMATIC) + scrollwin.set_shadow_type(Gtk.SHADOW_NONE) vbox.pack_start(scrollwin) - self.scales_vbox = gtk.VBox() + self.scales_vbox = Gtk.VBox() scrollwin.add_with_viewport(self.scales_vbox) - label = gtk.Label() + label = Gtk.Label() label.set_single_line_mode(True) line_height = label.size_request()[1] label.destroy() - scale = gtk.HScale() + scale = Gtk.HScale() scale.set_draw_value(False) line_height += scale.size_request()[1] scale.destroy() @@ -223,7 +226,7 @@ class MixerWindow(gtk.Window): def change_card(self, cardnum): for s in self.hctl_sources: - gobject.source_remove(s) + GLib.source_remove(s) self.hctl_sources = [] self.hcontrol = self.open_hcontrol_for_card(cardnum) @@ -249,7 +252,7 @@ class MixerWindow(gtk.Window): self.streams.append(stream) for fd,condition in self.hcontrol.poll_fds: - self.hctl_sources.append(gobject.io_add_watch(fd, condition, self.hctl_io_callback)) + self.hctl_sources.append(GLib.io_add_watch(fd, condition, self.hctl_io_callback)) self.update_msg_label() @@ -267,7 +270,7 @@ class MixerWindow(gtk.Window): else: msg = "This card does not have stream controls." if not has_msg: - self.msg_label = gtk.Label(msg) + self.msg_label = Gtk.Label(msg) self.scales_vbox.pack_start(self.msg_label) self.scales_vbox.show_all() elif self.msg_label.get_text() != msg: @@ -280,9 +283,9 @@ class MixerWindow(gtk.Window): mode=alsahcontrol.open_mode['NONBLOCK']) except: # TODO: alsa error msg - dlg = gtk.MessageDialog(self, - gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT, - gtk.MESSAGE_ERROR, gtk.BUTTONS_OK, + dlg = Gtk.MessageDialog(self, + Gtk.DIALOG_MODAL | Gtk.DIALOG_DESTROY_WITH_PARENT, + Gtk.MESSAGE_ERROR, Gtk.BUTTONS_OK, "Cannot open sound card control device.") dlg.run() dlg.destroy() @@ -304,7 +307,7 @@ class MixerWindow(gtk.Window): def main(): MixerWindow() - gtk.main() + Gtk.main() main() From a21dda3d8667bdd594254ec590d0282b1e30e014 Mon Sep 17 00:00:00 2001 From: Emmanuel Gil Peyrot Date: Tue, 18 Sep 2018 15:42:33 +0200 Subject: [PATCH 26/66] =?UTF-8?q?hwmixvolume:=20switch=20to=20GTK+=C2=A03.?= =?UTF-8?q?0=20and=20GLib=C2=A02.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This replaces VBox and HBox with Grid (using Gtk.Orientation), HScale with Scale, creates labels with mnemonics, set hexpand and vexpand properly, use the correct enum container classes, use the correct getter for size request, and finally update to the correct GLib watch function. Signed-off-by: Emmanuel Gil Peyrot Reviewed-by: Takashi Sakamoto Signed-off-by: Takashi Iwai --- hwmixvolume/hwmixvolume | 58 ++++++++++++++++++++++------------------- 1 file changed, 31 insertions(+), 27 deletions(-) diff --git a/hwmixvolume/hwmixvolume b/hwmixvolume/hwmixvolume index 64d232c..8e0b6b8 100755 --- a/hwmixvolume/hwmixvolume +++ b/hwmixvolume/hwmixvolume @@ -60,18 +60,18 @@ class Stream: value = alsahcontrol.Value(self.element) value.read() values = value.get_tuple(TYPE_INTEGER, info.count) - self.label = Gtk.Label(self.get_label(info)) + self.label = Gtk.Label.new(self.get_label(info)) self.label.set_single_line_mode(True) - self.parent.scales_vbox.pack_start(self.label, expand=False) + self.parent.scales_vbox.add(self.label) for i in range(info.count): adj = Gtk.Adjustment(value=values[i], lower=info.min, upper=info.max, step_incr=1, page_incr=(info.max-info.min+1)/8) adj.connect('value-changed', self.update_ctl_from_scale, i) - scale = Gtk.HScale(adj) + scale = Gtk.Scale(orientation=Gtk.Orientation.HORIZONTAL, adjustment=adj) scale.set_draw_value(False) - self.parent.scales_vbox.pack_start(scale, expand=False) + self.parent.scales_vbox.add(scale) self.scales.append(scale) self.adjustments.append(adj) self.parent.scales_vbox.show_all() @@ -174,45 +174,48 @@ class MixerWindow(Gtk.Window): self.connect('destroy', lambda w: Gtk.main_quit()) self.set_title("Hardware Mixer Volumes") - vbox = Gtk.VBox() + vbox = Gtk.Grid() + vbox.set_orientation(Gtk.Orientation.VERTICAL) self.add(vbox) - hbox = Gtk.HBox() - vbox.pack_start(hbox, expand=False) + hbox = Gtk.Grid() + vbox.add(hbox) - label = Gtk.Label("_Sound Card: ") - label.set_use_underline(True) - hbox.pack_start(label, expand=False) + label = Gtk.Label.new_with_mnemonic("_Sound Card: ") + hbox.add(label) - combo = Gtk.combo_box_new_text() + combo = Gtk.ComboBoxText() + combo.set_hexpand(True) for i in self.card_numbers: str = "%d: %s" % (i, alsacard.card_get_name(i)) combo.append_text(str) if len(self.card_numbers) > 0: combo.set_active(0) combo.connect('changed', lambda c: self.change_card(self.card_numbers[combo.get_active()])) - hbox.pack_start(combo) + hbox.add(combo) label.set_mnemonic_widget(combo) - self.lock_check = Gtk.CheckButton(label="_Lock Channels") + self.lock_check = Gtk.CheckButton.new_with_mnemonic(label="_Lock Channels") self.lock_check.set_active(True) - vbox.pack_start(self.lock_check, expand=False) + vbox.add(self.lock_check) scrollwin = Gtk.ScrolledWindow() - scrollwin.set_policy(hscrollbar_policy=Gtk.POLICY_NEVER, vscrollbar_policy=Gtk.POLICY_AUTOMATIC) - scrollwin.set_shadow_type(Gtk.SHADOW_NONE) - vbox.pack_start(scrollwin) + scrollwin.set_policy(hscrollbar_policy=Gtk.PolicyType.NEVER, vscrollbar_policy=Gtk.PolicyType.AUTOMATIC) + scrollwin.set_shadow_type(Gtk.ShadowType.NONE) + scrollwin.set_vexpand(True) + vbox.add(scrollwin) - self.scales_vbox = Gtk.VBox() - scrollwin.add_with_viewport(self.scales_vbox) + self.scales_vbox = Gtk.Grid() + self.scales_vbox.set_orientation(Gtk.Orientation.VERTICAL) + scrollwin.add(self.scales_vbox) label = Gtk.Label() label.set_single_line_mode(True) - line_height = label.size_request()[1] + line_height = max(label.get_size_request().height, 0) label.destroy() - scale = Gtk.HScale() + scale = Gtk.Scale(orientation=Gtk.Orientation.HORIZONTAL) scale.set_draw_value(False) - line_height += scale.size_request()[1] + line_height += max(scale.get_size_request().height, 0) scale.destroy() # always have space for at least four sliders scrollwin.set_size_request(width=-1, height=line_height*4+4) @@ -252,7 +255,7 @@ class MixerWindow(Gtk.Window): self.streams.append(stream) for fd,condition in self.hcontrol.poll_fds: - self.hctl_sources.append(GLib.io_add_watch(fd, condition, self.hctl_io_callback)) + self.hctl_sources.append(GLib.io_add_watch(fd, 0, GLib.IOCondition(condition), self.hctl_io_callback)) self.update_msg_label() @@ -270,8 +273,9 @@ class MixerWindow(Gtk.Window): else: msg = "This card does not have stream controls." if not has_msg: - self.msg_label = Gtk.Label(msg) - self.scales_vbox.pack_start(self.msg_label) + self.msg_label = Gtk.Label.new(msg) + self.msg_label.set_vexpand(True) + self.scales_vbox.add(self.msg_label) self.scales_vbox.show_all() elif self.msg_label.get_text() != msg: self.msg_label.set_text(msg) @@ -284,8 +288,8 @@ class MixerWindow(Gtk.Window): except: # TODO: alsa error msg dlg = Gtk.MessageDialog(self, - Gtk.DIALOG_MODAL | Gtk.DIALOG_DESTROY_WITH_PARENT, - Gtk.MESSAGE_ERROR, Gtk.BUTTONS_OK, + Gtk.DialogFlags.MODAL | Gtk.DialogFlags.DESTROY_WITH_PARENT, + Gtk.MessageType.ERROR, Gtk.ButtonsType.OK, "Cannot open sound card control device.") dlg.run() dlg.destroy() From 213b28a5aa71ffbd77443e17d805743f39f50821 Mon Sep 17 00:00:00 2001 From: Emmanuel Gil Peyrot Date: Tue, 18 Sep 2018 15:42:34 +0200 Subject: [PATCH 27/66] hwmixvolume: use a with context to open files MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This feature has been added in Python 2.5 and automatically closes an open file once the context exits. Signed-off-by: Emmanuel Gil Peyrot Reviewed-by: Takashi Sakamoto Signed-off-by: Takashi Iwai --- hwmixvolume/hwmixvolume | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/hwmixvolume/hwmixvolume b/hwmixvolume/hwmixvolume index 8e0b6b8..7f8ba8e 100755 --- a/hwmixvolume/hwmixvolume +++ b/hwmixvolume/hwmixvolume @@ -138,26 +138,20 @@ class Stream: subdevice = info.index filename = "/proc/asound/card%d/pcm%dp/sub%d/status" % (card, device, subdevice) try: - f = open(filename, "r") + with open(filename, "r") as f: + for line in f: + if line[:9] == "owner_pid": + return int(line.split(':')[1].strip()) except IOError: return None - try: - for line in f.readlines(): - if line[:9] == "owner_pid": - return int(line.split(':')[1].strip()) - finally: - f.close() return None def get_pid_cmdline(self, pid): try: - f = open("/proc/%d/cmdline" % pid, "r") + with open("/proc/%d/cmdline" % pid, "r") as f: + cmdline = f.read() except IOError: return None - try: - cmdline = f.read() - finally: - f.close() return cmdline.replace('\x00', ' ').strip() class MixerWindow(Gtk.Window): From fb043847de869cf4d82049e2ac0937819fab78f5 Mon Sep 17 00:00:00 2001 From: Emmanuel Gil Peyrot Date: Tue, 18 Sep 2018 15:42:35 +0200 Subject: [PATCH 28/66] hwmixvolume: switch the shebang to python MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This signifies that this code is now compatible with both Python 2 and Python 3, as per PEP-0394[1]. [1] https://www.python.org/dev/peps/pep-0394/ Signed-off-by: Emmanuel Gil Peyrot Reviewed-by: Takashi Sakamoto Signed-off-by: Takashi Iwai --- hwmixvolume/hwmixvolume | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hwmixvolume/hwmixvolume b/hwmixvolume/hwmixvolume index 7f8ba8e..4804a9b 100755 --- a/hwmixvolume/hwmixvolume +++ b/hwmixvolume/hwmixvolume @@ -1,4 +1,4 @@ -#!/usr/bin/python2 +#!/usr/bin/env python # hwmixvolume - ALSA hardware mixer volume control applet # Copyright (c) 2009-2010 Clemens Ladisch From 88bd30b7325eecc6076f4b860cec35c051f591e4 Mon Sep 17 00:00:00 2001 From: Emmanuel Gil Peyrot Date: Tue, 18 Sep 2018 15:42:36 +0200 Subject: [PATCH 29/66] hwmixvolume: add my copyright Signed-off-by: Emmanuel Gil Peyrot Reviewed-by: Takashi Sakamoto Signed-off-by: Takashi Iwai --- hwmixvolume/hwmixvolume | 1 + 1 file changed, 1 insertion(+) diff --git a/hwmixvolume/hwmixvolume b/hwmixvolume/hwmixvolume index 4804a9b..871c2c5 100755 --- a/hwmixvolume/hwmixvolume +++ b/hwmixvolume/hwmixvolume @@ -2,6 +2,7 @@ # hwmixvolume - ALSA hardware mixer volume control applet # Copyright (c) 2009-2010 Clemens Ladisch +# Copyright (c) 2018 Emmanuel Gil Peyrot # # Permission to use, copy, modify, and/or distribute this software for any # purpose with or without fee is hereby granted, provided that the above From dc733d6b0845d22896e3fec3f35e6f1e706987a3 Mon Sep 17 00:00:00 2001 From: Emmanuel Gil Peyrot Date: Tue, 18 Sep 2018 15:42:37 +0200 Subject: [PATCH 30/66] hwmixvolume: mention the new dependencies in the README Signed-off-by: Emmanuel Gil Peyrot Reviewed-by: Takashi Sakamoto Signed-off-by: Takashi Iwai --- hwmixvolume/README | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/hwmixvolume/README b/hwmixvolume/README index 9884ec2..56c7554 100644 --- a/hwmixvolume/README +++ b/hwmixvolume/README @@ -8,7 +8,8 @@ that use hardware mixing, i.e., those based on the following chips: * Yamaha DS-1 (YMF-724/740/744/754) (driver: snd-ymfpci) -This tool requires Python, pygtk, and alsa-pyton 1.0.22 or later. +This tool requires Python, PyGObject, GTK+ 3.0 or later, and alsa-python 1.0.22 +or later. It is recommended to use at least Linux kernel 2.6.32 or alsa-driver 1.0.22; otherwise, the name of the program that is using a stream cannot be shown. From 9ed2ebaaa7e12306f38e425632a480233232b5ab Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Tue, 16 Oct 2018 10:08:36 +0200 Subject: [PATCH 31/66] Release v1.1.7 Signed-off-by: Jaroslav Kysela --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index c32bf25..fe29bce 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -VERSION = 1.1.6 +VERSION = 1.1.7 TOP = . SUBDIRS = as10k1 envy24control hdsploader hdspconf hdspmixer \ mixartloader pcxhrloader rmedigicontrol sb16_csp seq sscape_ctl \ From 534e7fac808a891af0ccdd72c47cc9b1ccfde460 Mon Sep 17 00:00:00 2001 From: Takashi Iwai Date: Fri, 20 Dec 2019 16:40:43 +0100 Subject: [PATCH 32/66] hdspmixer: Use __u32 and __u64 for RMS array types Some variable types are referring to the field in ioctl struct, which are actually __u32 or __u64 instead of uint32_t or uint64_t. This inconsistency may result in the compile error. Signed-off-by: Takashi Iwai --- hdspmixer/src/HDSPMixerWindow.cxx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hdspmixer/src/HDSPMixerWindow.cxx b/hdspmixer/src/HDSPMixerWindow.cxx index 342efb2..9efc25d 100644 --- a/hdspmixer/src/HDSPMixerWindow.cxx +++ b/hdspmixer/src/HDSPMixerWindow.cxx @@ -35,8 +35,8 @@ static void readregisters_cb(void *arg) hdsp_peak_rms_t hdsp_peak_rms; struct hdspm_peak_rms hdspm_peak_rms; bool isMADI = false; - uint32_t *input_peaks, *playback_peaks, *output_peaks; - uint64_t *input_rms, *playback_rms, *output_rms; + __u32 *input_peaks, *playback_peaks, *output_peaks; + __u64 *input_rms, *playback_rms, *output_rms; HDSPMixerWindow *w = (HDSPMixerWindow *)arg; From 82979c32e4d6cabb826221daeedac8b01789da07 Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Wed, 19 Feb 2020 10:35:44 +0100 Subject: [PATCH 33/66] Release v1.2.2 Signed-off-by: Jaroslav Kysela --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index fe29bce..acd6285 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -VERSION = 1.1.7 +VERSION = 1.2.2 TOP = . SUBDIRS = as10k1 envy24control hdsploader hdspconf hdspmixer \ mixartloader pcxhrloader rmedigicontrol sb16_csp seq sscape_ctl \ From c0e69055fade319638a79604bd3ed1f37ff764f4 Mon Sep 17 00:00:00 2001 From: Jasmin Fazlic Date: Sun, 7 Feb 2021 15:50:47 +0100 Subject: [PATCH 34/66] hdspmixer: enhance saving of presets Changing the version in the file header would make a preset file not readable by older versions of the tool. If we just append new data always at the end of the save procedure we should have no problems reading them with different versions, as they all just read to a certain point and ignore the rest of the file. This patch implements the logic to save the presets first to a file called file_name.tmp and appends any extra data that would come after in a possibly present file_name file. Any data written by newer versions would remain in the preset file and from now on no old version should remove data written by newer versions. Also since we write to a temporary file and rename afterwards an extra feature is gained of not corrupting the preset should we crash. Signed-off-by: Jasmin Fazlic Signed-off-by: Takashi Iwai --- hdspmixer/src/HDSPMixerWindow.cxx | 94 ++++++++++++++++++++----------- 1 file changed, 62 insertions(+), 32 deletions(-) diff --git a/hdspmixer/src/HDSPMixerWindow.cxx b/hdspmixer/src/HDSPMixerWindow.cxx index 9efc25d..3b3d668 100644 --- a/hdspmixer/src/HDSPMixerWindow.cxx +++ b/hdspmixer/src/HDSPMixerWindow.cxx @@ -353,18 +353,25 @@ void HDSPMixerWindow::save() sizeof(inputs->strips[0]->data[0][0][0]->fader_pos) / sizeof(inputs->strips[0]->data[0][0][0]->fader_pos[0])); + FILE *in,*out; - FILE *file; + /* We want to append any existing extra data that might got written by a + * newer version to this file, therefore write our data to file_name.tmp + * and append the old data. Also this way we would not corrupt the file + * should we crash. + */ + std::string const tmp = file_name + std::string(".tmp"); + char const * const tmpc = tmp.c_str(); - if ((file = fopen(file_name, "w")) == NULL) { - fl_alert("Error opening file %s for saving", file_name); + if ((out = fopen(tmpc, "w")) == NULL) { + fl_alert("Error opening file %s for saving", tmpc); } if (dirty) { inputs->buttons->presets->save_preset(current_preset+1); } /* since hdspmixer 1.11, we also store the meter level settings. Indicate * the new on-disk structure via a small header */ - if (fwrite((void *)&header, sizeof(char), sizeof(header), file) != + if (fwrite((void *)&header, sizeof(char), sizeof(header), out) != sizeof(header)) { goto save_error; } @@ -374,99 +381,122 @@ void HDSPMixerWindow::save() for (int preset = 0; preset < 8; ++preset) { for (int channel = 0; channel < HDSP_MAX_CHANNELS; ++channel) { /* inputs pans and volumes */ - if (fwrite((void *)&(inputs->strips[channel]->data[card][speed][preset]->pan_pos[0]), sizeof(int), pan_array_size, file) != pan_array_size) { + if (fwrite((void *)&(inputs->strips[channel]->data[card][speed][preset]->pan_pos[0]), sizeof(int), pan_array_size, out) != pan_array_size) { goto save_error; } - if (fwrite((void *)&(inputs->strips[channel]->data[card][speed][preset]->fader_pos[0]), sizeof(int), pan_array_size, file) != pan_array_size) { + if (fwrite((void *)&(inputs->strips[channel]->data[card][speed][preset]->fader_pos[0]), sizeof(int), pan_array_size, out) != pan_array_size) { goto save_error; } /* playbacks pans and volumes */ - if (fwrite((void *)&(playbacks->strips[channel]->data[card][speed][preset]->pan_pos[0]), sizeof(int), pan_array_size, file) != pan_array_size) { + if (fwrite((void *)&(playbacks->strips[channel]->data[card][speed][preset]->pan_pos[0]), sizeof(int), pan_array_size, out) != pan_array_size) { goto save_error; } - if (fwrite((void *)&(playbacks->strips[channel]->data[card][speed][preset]->fader_pos[0]), sizeof(int), pan_array_size, file) != pan_array_size) { + if (fwrite((void *)&(playbacks->strips[channel]->data[card][speed][preset]->fader_pos[0]), sizeof(int), pan_array_size, out) != pan_array_size) { goto save_error; } /* inputs mute/solo/dest */ - if (fwrite((void *)&(inputs->strips[channel]->data[card][speed][preset]->mute), sizeof(int), 1, file) != 1) { + if (fwrite((void *)&(inputs->strips[channel]->data[card][speed][preset]->mute), sizeof(int), 1, out) != 1) { goto save_error; } - if (fwrite((void *)&(inputs->strips[channel]->data[card][speed][preset]->solo), sizeof(int), 1, file) != 1) { + if (fwrite((void *)&(inputs->strips[channel]->data[card][speed][preset]->solo), sizeof(int), 1, out) != 1) { goto save_error; } - if (fwrite((void *)&(inputs->strips[channel]->data[card][speed][preset]->dest), sizeof(int), 1, file) != 1) { + if (fwrite((void *)&(inputs->strips[channel]->data[card][speed][preset]->dest), sizeof(int), 1, out) != 1) { goto save_error; } /* playbacks mute/solo/dest */ - if (fwrite((void *)&(playbacks->strips[channel]->data[card][speed][preset]->mute), sizeof(int), 1, file) != 1) { + if (fwrite((void *)&(playbacks->strips[channel]->data[card][speed][preset]->mute), sizeof(int), 1, out) != 1) { goto save_error; } - if (fwrite((void *)&(playbacks->strips[channel]->data[card][speed][preset]->solo), sizeof(int), 1, file) != 1) { + if (fwrite((void *)&(playbacks->strips[channel]->data[card][speed][preset]->solo), sizeof(int), 1, out) != 1) { goto save_error; } - if (fwrite((void *)&(playbacks->strips[channel]->data[card][speed][preset]->dest), sizeof(int), 1, file) != 1) { + if (fwrite((void *)&(playbacks->strips[channel]->data[card][speed][preset]->dest), sizeof(int), 1, out) != 1) { goto save_error; } /* outputs volumes */ - if (fwrite((void *)&(outputs->strips[channel]->data[card][speed][preset]->fader_pos), sizeof(int), 1, file) != 1) { + if (fwrite((void *)&(outputs->strips[channel]->data[card][speed][preset]->fader_pos), sizeof(int), 1, out) != 1) { goto save_error; } } /* Lineouts */ - if (fwrite((void *)&(outputs->strips[HDSP_MAX_CHANNELS]->data[card][speed][preset]->fader_pos), sizeof(int), 1, file) != 1) { + if (fwrite((void *)&(outputs->strips[HDSP_MAX_CHANNELS]->data[card][speed][preset]->fader_pos), sizeof(int), 1, out) != 1) { goto save_error; } - if (fwrite((void *)&(outputs->strips[HDSP_MAX_CHANNELS+1]->data[card][speed][preset]->fader_pos), sizeof(int), 1, file) != 1) { + if (fwrite((void *)&(outputs->strips[HDSP_MAX_CHANNELS+1]->data[card][speed][preset]->fader_pos), sizeof(int), 1, out) != 1) { goto save_error; } /* Global settings */ - if (fwrite((void *)&(data[card][speed][preset]->input), sizeof(int), 1, file) != 1) { + if (fwrite((void *)&(data[card][speed][preset]->input), sizeof(int), 1, out) != 1) { goto save_error; } - if (fwrite((void *)&(data[card][speed][preset]->output), sizeof(int), 1, file) != 1) { + if (fwrite((void *)&(data[card][speed][preset]->output), sizeof(int), 1, out) != 1) { goto save_error; } - if (fwrite((void *)&(data[card][speed][preset]->playback), sizeof(int), 1, file) != 1) { + if (fwrite((void *)&(data[card][speed][preset]->playback), sizeof(int), 1, out) != 1) { goto save_error; } - if (fwrite((void *)&(data[card][speed][preset]->submix), sizeof(int), 1, file) != 1) { + if (fwrite((void *)&(data[card][speed][preset]->submix), sizeof(int), 1, out) != 1) { goto save_error; } - if (fwrite((void *)&(data[card][speed][preset]->submix_value), sizeof(int), 1, file) != 1) { + if (fwrite((void *)&(data[card][speed][preset]->submix_value), sizeof(int), 1, out) != 1) { goto save_error; } - if (fwrite((void *)&(data[card][speed][preset]->solo), sizeof(int), 1, file) != 1) { + if (fwrite((void *)&(data[card][speed][preset]->solo), sizeof(int), 1, out) != 1) { goto save_error; } - if (fwrite((void *)&(data[card][speed][preset]->mute), sizeof(int), 1, file) != 1) { + if (fwrite((void *)&(data[card][speed][preset]->mute), sizeof(int), 1, out) != 1) { goto save_error; } - if (fwrite((void *)&(data[card][speed][preset]->last_destination), sizeof(int), 1, file) != 1) { + if (fwrite((void *)&(data[card][speed][preset]->last_destination), sizeof(int), 1, out) != 1) { goto save_error; } - if (fwrite((void *)&(data[card][speed][preset]->rmsplus3), sizeof(int), 1, file) != 1) { + if (fwrite((void *)&(data[card][speed][preset]->rmsplus3), sizeof(int), 1, out) != 1) { goto save_error; } - if (fwrite((void *)&(data[card][speed][preset]->numbers), sizeof(int), 1, file) != 1) { + if (fwrite((void *)&(data[card][speed][preset]->numbers), sizeof(int), 1, out) != 1) { goto save_error; } - if (fwrite((void *)&(data[card][speed][preset]->over), sizeof(int), 1, file) != 1) { + if (fwrite((void *)&(data[card][speed][preset]->over), sizeof(int), 1, out) != 1) { goto save_error; } - if (fwrite((void *)&(data[card][speed][preset]->level), sizeof(int), 1, file) != 1) { + if (fwrite((void *)&(data[card][speed][preset]->level), sizeof(int), 1, out) != 1) { goto save_error; } - if (fwrite((void *)&(data[card][speed][preset]->rate), sizeof(int), 1, file) != 1) { + if (fwrite((void *)&(data[card][speed][preset]->rate), sizeof(int), 1, out) != 1) { goto save_error; } } } } - fclose(file); + + /* If the file we want to write already exists it could be possible that it + * was saved with a newer version. If that is the case we just append its + * content to the new output file and that way ensure that we don't lose any + * data the new version wrote. + */ + if ((in = fopen(file_name, "r")) != NULL) { + if (!fseek(in, ftell(out), SEEK_SET)) { + char buff[512]; + size_t read; + while ((read = fread(&buff, sizeof(char), sizeof(buff), in)) != 0) + fwrite(buff, sizeof(char), read, out); + if (ferror(in) || ferror(out)) + fl_alert("Error appending %s to %s", file_name, tmpc); + } + fclose(in); + } + + fclose(out); + + if (rename(tmpc, file_name)) + fl_alert("Error renaming %s to %s", tmpc, file_name); + ::remove(tmpc); + return; save_error: - fclose(file); + fclose(out); fl_alert("Error saving presets to file %s", file_name); return; } From 3e4fd7dffbf40b2997075320ce24aaae1b97f328 Mon Sep 17 00:00:00 2001 From: Jasmin Fazlic Date: Sun, 7 Feb 2021 15:50:48 +0100 Subject: [PATCH 35/66] hdspmixer: add output loopback buttons This patch adds "LPBK" buttons to the output strip channels allowing to toggle the hardware output loopback state. Efforts were made to hide the buttons for not yet enabled devices but due to difficulties in implementation was cancelled for the time being. Should it be a no-go efforts should be made to fix this and hide them, although I would think fixing the driver for other devices would be an effort with much more merit. This is currently only enabled for HDSP9632 devices with following driver patch: https://github.com/tiwai/sound/commit/da2a040ee7cfe1dd57d5bec7906cb979c5787a86 We check whether the system has the kernel patch applied by calling `HDSPMixerCard::supportsLoopback()` and if not these buttons remain gray (off) and do nothing when clicked. Signed-off-by: Jasmin Fazlic Signed-off-by: Takashi Iwai --- hdspmixer/pixmaps/loopback.xpm | 69 ++++ hdspmixer/pixmaps/output.xpm | 498 +++++++++++++++----------- hdspmixer/pixmaps/output_r.xpm | 498 +++++++++++++++----------- hdspmixer/src/HDSPMixerCard.cxx | 34 ++ hdspmixer/src/HDSPMixerCard.h | 2 + hdspmixer/src/HDSPMixerLoopback.cxx | 133 +++++++ hdspmixer/src/HDSPMixerLoopback.h | 48 +++ hdspmixer/src/HDSPMixerOutput.cxx | 1 + hdspmixer/src/HDSPMixerOutput.h | 3 + hdspmixer/src/HDSPMixerOutputData.h | 1 + hdspmixer/src/HDSPMixerOutputs.cxx | 4 +- hdspmixer/src/HDSPMixerPresetData.cxx | 1 + hdspmixer/src/HDSPMixerPresetData.h | 1 + hdspmixer/src/HDSPMixerPresets.cxx | 2 + hdspmixer/src/HDSPMixerWindow.cxx | 68 ++++ hdspmixer/src/Makefile.am | 2 + hdspmixer/src/defines.h | 2 +- hdspmixer/src/pixmaps.cxx | 1 + hdspmixer/src/pixmaps.h | 1 + 19 files changed, 931 insertions(+), 438 deletions(-) create mode 100644 hdspmixer/pixmaps/loopback.xpm create mode 100644 hdspmixer/src/HDSPMixerLoopback.cxx create mode 100644 hdspmixer/src/HDSPMixerLoopback.h diff --git a/hdspmixer/pixmaps/loopback.xpm b/hdspmixer/pixmaps/loopback.xpm new file mode 100644 index 0000000..a327467 --- /dev/null +++ b/hdspmixer/pixmaps/loopback.xpm @@ -0,0 +1,69 @@ +/* XPM */ +char const * loopback_xpm[] = { +"34 15 51 1", +" c None", +". c #2E3038", +"+ c #FFFB7C", +"@ c #FDF97B", +"# c #2E2D11", +"$ c #000000", +"% c #383716", +"& c #898740", +"* c #F1EE75", +"= c #22210A", +"- c #727034", +"; c #E2DE6D", +"> c #D5D267", +", c #787637", +"' c #FBF77A", +") c #AAA750", +"! c #ABA851", +"~ c #CDC962", +"{ c #83813C", +"] c #C8C560", +"^ c #84823D", +"/ c #F7F378", +"( c #949145", +"_ c #B7B457", +": c #949245", +"< c #353414", +"[ c #87853F", +"} c #F1ED75", +"| c #3B3A17", +"1 c #DFDB6C", +"2 c #161505", +"3 c #4B4A20", +"4 c #E5E16E", +"5 c #FEFA7C", +"6 c #E8E470", +"7 c #535124", +"8 c #FAF679", +"9 c #E7E370", +"0 c #66642E", +"a c #E4E06E", +"b c #F6F277", +"c c #EAE671", +"d c #E0DC6C", +"e c #B9B658", +"f c #5F5D2A", +"g c #EDE973", +"h c #69672F", +"i c #DDD96A", +"j c #333342", +"k c #32323E", +"l c #313136", +"..................................", +".++++++++++++++++++++++++++++++++.", +".++++++++++++++++++++++++++++++++.", +".++++++++++++++++++++++++++++++++.", +".+++@#++++@$$%&*@$$=-;+@#++>,*+++.", +".+++@#++++@#+')!@#+@~{+@#+]^/++++.", +".+++@#++++@#+'!!@#+@~(+@#_:'+++++.", +".+++@#++++@$$<[}@$$$|1+@234++++++.", +".+++@#++++@#++++@#+5678@#90a+++++.", +".+++@#++++@#++++@#+59#b@#+c0d++++.", +".+++@$$$$e@#++++@$$2f]+@#++ghi+++.", +".++++++++++++++++++++++++++++++++.", +".++++++++++++++++++++++++++++++++.", +".++++++++++++++++++++++++++++++++.", +"..jklllllllllkj....jklllllllllkj.."}; diff --git a/hdspmixer/pixmaps/output.xpm b/hdspmixer/pixmaps/output.xpm index 8f7cd65..c827b1c 100644 --- a/hdspmixer/pixmaps/output.xpm +++ b/hdspmixer/pixmaps/output.xpm @@ -1,220 +1,282 @@ /* XPM */ char const * output_xpm[] = { -"36 208 9 1", -" c #595966", -". c #2E3038", -"+ c #000000", -"@ c #474951", -"# c #404044", -"$ c #7A7A8F", -"% c #27272B", -"& c #616176", -"* c #737384", -" ", -" .................................. ", -" .................................. ", -" .................................. ", -" ..++++++++++++++++++++++++++++++.. ", -" ..++++++++++++++++++++++++++++++.. ", -" ..++++++++++++++++++++++++++++++.. ", -" ..++++++++++++++++++++++++++++++.. ", -" ..++++++++++++++++++++++++++++++.. ", -" ..++++++++++++++++++++++++++++++.. ", -" ..++++++++++++++++++++++++++++++.. ", -" ..++++++++++++++++++++++++++++++.. ", -" ..++++++++++++++++++++++++++++++.. ", -" ..++++++++++++++++++++++++++++++.. ", -" ..++++++++++++++++++++++++++++++.. ", -" ..++++++++++++++++++++++++++++++.. ", -" ..++++++++++++++++++++++++++++++.. ", -" .................................. ", -" .................................. ", -" .................................. ", -" .................................. ", -" .................................. ", -" .................................. ", -" .................................. ", -" .................................. ", -" ..................++++++++++...... ", -" .@@@@@@@#$@@@.....++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" .@@@@@@@#$@@@.....++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" .@@@@@@@#$@@@.....++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" .@@@@@@@#$@@@.....++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" .@@@@@@@#$@@@.....++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" .@@@@@@@#$@@@.....++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" .@@@@@@@#$@@@.....++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" .@@@@@@@#$@@@.....++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" .@@@@@@@#$@@@.....++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ..................++++++++++...... ", -" .................................. ", -" .................................. ", -" .................................. ", -" .................................. ", -" .................................. ", -" .................................. ", -" .................................. ", -" .................................. ", -" ..++++++++++++++++++++++++++++++.. ", -" ..++++++++++++++++++++++++++++++.. ", -" ..++++++++++++++++++++++++++++++.. ", -" ..++++++++++++++++++++++++++++++.. ", -" ..++++++++++++++++++++++++++++++.. ", -" ..++++++++++++++++++++++++++++++.. ", -" ..++++++++++++++++++++++++++++++.. ", -" ..++++++++++++++++++++++++++++++.. ", -" ..++++++++++++++++++++++++++++++.. ", -" ..++++++++++++++++++++++++++++++.. ", -" ..++++++++++++++++++++++++++++++.. ", -" ..++++++++++++++++++++++++++++++.. ", -" ..++++++++++++++++++++++++++++++.. ", -" .................................. ", -" .................................. ", -" .................................. ", -" .................................. ", -" ..******************************.. ", -" ..******************************.. ", -" ..******************************.. ", -" ..******************************.. ", -" ..******************************.. ", -" ..******************************.. ", -" ..******************************.. ", -" ..******************************.. ", -" ..******************************.. ", -" ..******************************.. ", -" ..******************************.. ", -" ..******************************.. ", -" .................................. ", -" .................................. ", -" .................................. ", -" "}; +"36 224 55 1", +" c None", +". c #595966", +"+ c #2E3038", +"@ c #000000", +"# c #474951", +"$ c #404044", +"% c #7A7A8F", +"& c #27272B", +"* c #616176", +"= c #737384", +"- c #757585", +"; c #D4D4D4", +"> c #D6D6D6", +", c #D3D3D4", +"' c #C3C3C6", +") c #848491", +"! c #D5D5D5", +"~ c #CACACB", +"{ c #93939C", +"] c #9D9DA5", +"^ c #C8C8CA", +"/ c #787888", +"( c #B6B6BA", +"_ c #A3A3AA", +": c #C5C5C7", +"< c #A7A7AE", +"[ c #C4C4C6", +"} c #7D7D8C", +"| c #797989", +"1 c #C0C0C2", +"2 c #AFAFB4", +"3 c #BFBFC2", +"4 c #D3D3D3", +"5 c #95959F", +"6 c #D5D5D6", +"7 c #D1D1D2", +"8 c #91919B", +"9 c #757586", +"0 c #8E8E99", +"a c #D1D1D1", +"b c #8F8F99", +"c c #CBCBCD", +"d c #92929C", +"e c #7F7F8D", +"f c #8C8C97", +"g c #96969F", +"h c #AFAFB5", +"i c #CECECF", +"j c #A6A6AD", +"k c #8A8A96", +"l c #CCCCCD", +"m c #9898A1", +"n c #333342", +"o c #32323E", +"p c #313136", +"....................................", +".++++++++++++++++++++++++++++++++++.", +".++++++++++++++++++++++++++++++++++.", +".++++++++++++++++++++++++++++++++++.", +".++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@++.", +".++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@++.", +".++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@++.", +".++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@++.", +".++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@++.", +".++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@++.", +".++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@++.", +".++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@++.", +".++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@++.", +".++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@++.", +".++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@++.", +".++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@++.", +".++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@++.", +".++++++++++++++++++++++++++++++++++.", +".++++++++++++++++++++++++++++++++++.", +".++++++++++++++++++++++++++++++++++.", +".++++++++++++++++++++++++++++++++++.", +".++++++++++++++++++++++++++++++++++.", +".++++++++++++++++++++++++++++++++++.", +".++++++++++++++++++++++++++++++++++.", +".++++++++++++++++++++++++++++++++++.", +".++++++++++++++++++@@@@@@@@@@++++++.", +".+#######$%###+++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".+#######$%###+++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".+#######$%###+++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".+#######$%###+++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".+#######$%###+++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".+#######$%###+++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".+#######$%###+++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".+#######$%###+++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".+#######$%###+++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++++++++++++@@@@@@@@@@++++++.", +".++++++++++++++++++++++++++++++++++.", +".++++++++++++++++++++++++++++++++++.", +".++++++++++++++++++++++++++++++++++.", +".++++++++++++++++++++++++++++++++++.", +".++++++++++++++++++++++++++++++++++.", +".++++++++++++++++++++++++++++++++++.", +".++++++++++++++++++++++++++++++++++.", +".++++++++++++++++++++++++++++++++++.", +".++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@++.", +".++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@++.", +".++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@++.", +".++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@++.", +".++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@++.", +".++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@++.", +".++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@++.", +".++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@++.", +".++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@++.", +".++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@++.", +".++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@++.", +".++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@++.", +".++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@++.", +".++++++++++++++++++++++++++++++++++.", +".++++++++++++++++++++++++++++++++++.", +".++++++++++++++++++++++++++++++++++.", +".++++++++++++++++++++++++++++++++++.", +".++==============================++.", +".++==============================++.", +".++==============================++.", +".++==============================++.", +".++==============================++.", +".++==============================++.", +".++==============================++.", +".++==============================++.", +".++==============================++.", +".++==============================++.", +".++==============================++.", +".++==============================++.", +".++++++++++++++++++++++++++++++++++.", +".++++++++++++++++++++++++++++++++++.", +".++++++++++++++++++++++++++++++++++.", +"....................................", +".++++++++++++++++++++++++++++++++++.", +".+================================+.", +".+================================+.", +".+================================+.", +".+===-;====->>,')->>!~{=-;==]^)===+.", +".+===-;====-;=/((-;=-_:=-;=<[}====+.", +".+===-;====-;=|((-;=-_1=-;23/=====+.", +".+===-;====->>,[)->>>45=-678======+.", +".+===-;====-;====-;=90a|-;bcd=====+.", +".+===-;====-;====-;=9b;e-;=fcg====+.", +".+===->>>>h-;====->>6ij=-;==klm===+.", +".+================================+.", +".+================================+.", +".+================================+.", +".++nopppppppppon++++nopppppppppon++.", +"...................................."}; diff --git a/hdspmixer/pixmaps/output_r.xpm b/hdspmixer/pixmaps/output_r.xpm index ab2ca99..51b1984 100644 --- a/hdspmixer/pixmaps/output_r.xpm +++ b/hdspmixer/pixmaps/output_r.xpm @@ -1,220 +1,282 @@ /* XPM */ char const * output_r_xpm[] = { -"36 208 9 1", -" c #595966", -". c #2E3038", -"+ c #000000", -"@ c #474951", -"# c #404044", -"$ c #7A7A8F", -"% c #27272B", -"& c #616176", -"* c #737384", -" ", -" .................................. ", -" .................................. ", -" .................................. ", -" ..++++++++++++++++++++++++++++++.. ", -" ..++++++++++++++++++++++++++++++.. ", -" ..++++++++++++++++++++++++++++++.. ", -" ..++++++++++++++++++++++++++++++.. ", -" ..++++++++++++++++++++++++++++++.. ", -" ..++++++++++++++++++++++++++++++.. ", -" ..++++++++++++++++++++++++++++++.. ", -" ..++++++++++++++++++++++++++++++.. ", -" ..++++++++++++++++++++++++++++++.. ", -" ..++++++++++++++++++++++++++++++.. ", -" ..++++++++++++++++++++++++++++++.. ", -" ..++++++++++++++++++++++++++++++.. ", -" ..++++++++++++++++++++++++++++++.. ", -" .................................. ", -" .................................. ", -" .................................. ", -" .................................. ", -" .................................. ", -" .................................. ", -" .................................. ", -" .................................. ", -" ..................++++++++++...... ", -" .@@@@@@@#$@@@.....++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" .@@@@@@@#$@@@.....++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" .@@@@@@@#$@@@.....++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" .@@@@@@@#$@@@.....++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" .@@@@@@@#$@@@.....++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" .@@@@@@@#$@@@.....++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" .@@@@@@@#$@@@.....++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" .@@@@@@@#$@@@.....++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" .@@@@@@@#$@@@.....++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ........%&........++++++++++...... ", -" ..................++++++++++...... ", -" .................................. ", -" .................................. ", -" .................................. ", -" .................................. ", -" .................................. ", -" .................................. ", -" .................................. ", -" .................................. ", -" ..++++++++++++++++++++++++++++++.. ", -" ..++++++++++++++++++++++++++++++.. ", -" ..++++++++++++++++++++++++++++++.. ", -" ..++++++++++++++++++++++++++++++.. ", -" ..++++++++++++++++++++++++++++++.. ", -" ..++++++++++++++++++++++++++++++.. ", -" ..++++++++++++++++++++++++++++++.. ", -" ..++++++++++++++++++++++++++++++.. ", -" ..++++++++++++++++++++++++++++++.. ", -" ..++++++++++++++++++++++++++++++.. ", -" ..++++++++++++++++++++++++++++++.. ", -" ..++++++++++++++++++++++++++++++.. ", -" ..++++++++++++++++++++++++++++++.. ", -" .................................. ", -" .................................. ", -" .................................. ", -" .................................. ", -" ..******************************.. ", -" ..******************************.. ", -" ..******************************.. ", -" ..******************************.. ", -" ..******************************.. ", -" ..******************************.. ", -" ..******************************.. ", -" ..******************************.. ", -" ..******************************.. ", -" ..******************************.. ", -" ..******************************.. ", -" ..******************************.. ", -" .................................. ", -" .................................. ", -" .................................. ", -" "}; +"36 224 55 1", +" c None", +". c #595966", +"+ c #2E3038", +"@ c #000000", +"# c #474951", +"$ c #404044", +"% c #7A7A8F", +"& c #27272B", +"* c #616176", +"= c #737384", +"- c #757585", +"; c #D4D4D4", +"> c #D6D6D6", +", c #D3D3D4", +"' c #C3C3C6", +") c #848491", +"! c #D5D5D5", +"~ c #CACACB", +"{ c #93939C", +"] c #9D9DA5", +"^ c #C8C8CA", +"/ c #787888", +"( c #B6B6BA", +"_ c #A3A3AA", +": c #C5C5C7", +"< c #A7A7AE", +"[ c #C4C4C6", +"} c #7D7D8C", +"| c #797989", +"1 c #C0C0C2", +"2 c #AFAFB4", +"3 c #BFBFC2", +"4 c #D3D3D3", +"5 c #95959F", +"6 c #D5D5D6", +"7 c #D1D1D2", +"8 c #91919B", +"9 c #757586", +"0 c #8E8E99", +"a c #D1D1D1", +"b c #8F8F99", +"c c #CBCBCD", +"d c #92929C", +"e c #7F7F8D", +"f c #8C8C97", +"g c #96969F", +"h c #AFAFB5", +"i c #CECECF", +"j c #A6A6AD", +"k c #8A8A96", +"l c #CCCCCD", +"m c #9898A1", +"n c #333342", +"o c #32323E", +"p c #313136", +"....................................", +".++++++++++++++++++++++++++++++++++.", +".++++++++++++++++++++++++++++++++++.", +".++++++++++++++++++++++++++++++++++.", +".++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@++.", +".++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@++.", +".++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@++.", +".++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@++.", +".++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@++.", +".++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@++.", +".++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@++.", +".++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@++.", +".++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@++.", +".++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@++.", +".++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@++.", +".++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@++.", +".++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@++.", +".++++++++++++++++++++++++++++++++++.", +".++++++++++++++++++++++++++++++++++.", +".++++++++++++++++++++++++++++++++++.", +".++++++++++++++++++++++++++++++++++.", +".++++++++++++++++++++++++++++++++++.", +".++++++++++++++++++++++++++++++++++.", +".++++++++++++++++++++++++++++++++++.", +".++++++++++++++++++++++++++++++++++.", +".++++++++++++++++++@@@@@@@@@@++++++.", +".+#######$%###+++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".+#######$%###+++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".+#######$%###+++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".+#######$%###+++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".+#######$%###+++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".+#######$%###+++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".+#######$%###+++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".+#######$%###+++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".+#######$%###+++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++&*++++++++@@@@@@@@@@++++++.", +".++++++++++++++++++@@@@@@@@@@++++++.", +".++++++++++++++++++++++++++++++++++.", +".++++++++++++++++++++++++++++++++++.", +".++++++++++++++++++++++++++++++++++.", +".++++++++++++++++++++++++++++++++++.", +".++++++++++++++++++++++++++++++++++.", +".++++++++++++++++++++++++++++++++++.", +".++++++++++++++++++++++++++++++++++.", +".++++++++++++++++++++++++++++++++++.", +".++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@++.", +".++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@++.", +".++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@++.", +".++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@++.", +".++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@++.", +".++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@++.", +".++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@++.", +".++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@++.", +".++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@++.", +".++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@++.", +".++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@++.", +".++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@++.", +".++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@++.", +".++++++++++++++++++++++++++++++++++.", +".++++++++++++++++++++++++++++++++++.", +".++++++++++++++++++++++++++++++++++.", +".++++++++++++++++++++++++++++++++++.", +".++==============================++.", +".++==============================++.", +".++==============================++.", +".++==============================++.", +".++==============================++.", +".++==============================++.", +".++==============================++.", +".++==============================++.", +".++==============================++.", +".++==============================++.", +".++==============================++.", +".++==============================++.", +".++++++++++++++++++++++++++++++++++.", +".++++++++++++++++++++++++++++++++++.", +".++++++++++++++++++++++++++++++++++.", +"....................................", +".++++++++++++++++++++++++++++++++++.", +".+================================+.", +".+================================+.", +".+================================+.", +".+===-;====->>,')->>!~{=-;==]^)===+.", +".+===-;====-;=/((-;=-_:=-;=<[}====+.", +".+===-;====-;=|((-;=-_1=-;23/=====+.", +".+===-;====->>,[)->>>45=-678======+.", +".+===-;====-;====-;=90a|-;bcd=====+.", +".+===-;====-;====-;=9b;e-;=fcg====+.", +".+===->>>>h-;====->>6ij=-;==klm===+.", +".+================================+.", +".+================================+.", +".+================================+.", +".++nopppppppppon++++nopppppppppon++.", +"...................................."}; diff --git a/hdspmixer/src/HDSPMixerCard.cxx b/hdspmixer/src/HDSPMixerCard.cxx index ce40ba7..72232c8 100644 --- a/hdspmixer/src/HDSPMixerCard.cxx +++ b/hdspmixer/src/HDSPMixerCard.cxx @@ -231,6 +231,8 @@ void HDSPMixerCard::adjustSettings() { /* should never happen */ break; } + + max_channels = sizeof(channel_map_mf_ss); } if (type == Digiface) { @@ -253,6 +255,8 @@ void HDSPMixerCard::adjustSettings() { /* should never happen */ break; } + + max_channels = sizeof(channel_map_df_ss); } if (type == RPM) { @@ -263,6 +267,8 @@ void HDSPMixerCard::adjustSettings() { channel_map_input = channel_map_playback = channel_map_rpm; dest_map = dest_map_rpm; meter_map_input = meter_map_playback = channel_map_rpm; + + max_channels = sizeof(channel_map_rpm); } @@ -286,6 +292,8 @@ void HDSPMixerCard::adjustSettings() { /* should never happen */ break; } + + max_channels = sizeof(channel_map_df_ss); } if (type == H9632) { @@ -312,6 +320,8 @@ void HDSPMixerCard::adjustSettings() { meter_map_input = meter_map_playback = channel_map_h9632_qs; break; } + + max_channels = sizeof(channel_map_h9632_ss); } if (HDSPeMADI == type) { @@ -341,6 +351,7 @@ void HDSPMixerCard::adjustSettings() { break; } + max_channels = sizeof(channel_map_unity_ss); } if (HDSPeAIO == type) { @@ -379,6 +390,7 @@ void HDSPMixerCard::adjustSettings() { break; } + max_channels = sizeof(channel_map_aio_out_ss); } if (HDSP_AES == type) { @@ -394,6 +406,7 @@ void HDSPMixerCard::adjustSettings() { meter_map_input = channel_map_aes32; meter_map_playback = channel_map_aes32; + max_channels = sizeof(channel_map_aes32); } if (HDSPeRayDAT == type) { @@ -426,6 +439,7 @@ void HDSPMixerCard::adjustSettings() { break; } + max_channels = sizeof(channel_map_raydat_ss); } window_width = (channels_playback+2)*STRIP_WIDTH; @@ -545,3 +559,23 @@ int HDSPMixerCard::initializeCard(HDSPMixerWindow *w) return 0; } +int HDSPMixerCard::supportsLoopback() const +{ + int err = 0; + snd_ctl_elem_value_t *elemval; + snd_ctl_elem_id_t * elemid; + snd_ctl_t *handle; + snd_ctl_elem_value_alloca(&elemval); + snd_ctl_elem_id_alloca(&elemid); + if ((err = snd_ctl_open(&handle, name, SND_CTL_NONBLOCK)) < 0) + return err; + + snd_ctl_elem_id_set_name(elemid, "Output Loopback"); + snd_ctl_elem_id_set_interface(elemid, SND_CTL_ELEM_IFACE_HWDEP); + snd_ctl_elem_id_set_index(elemid, 0); + snd_ctl_elem_value_set_id(elemval, elemid); + err = snd_ctl_elem_read(handle, elemval); + snd_ctl_close(handle); + + return err; +} diff --git a/hdspmixer/src/HDSPMixerCard.h b/hdspmixer/src/HDSPMixerCard.h index faaeefa..eecfca3 100644 --- a/hdspmixer/src/HDSPMixerCard.h +++ b/hdspmixer/src/HDSPMixerCard.h @@ -52,6 +52,7 @@ public: HDSPMixerCard(int cardtype, int id, char *shortname); int channels_input, channels_playback, window_width, window_height, card_id; int channels_output; + int max_channels; int type; int last_preset; /* Last activated preset before switching to another card */ int last_dirty; /* Last dirty flag before switching to another card */ @@ -68,6 +69,7 @@ public: void adjustSettings(); void getAeb(); hdsp_9632_aeb_t h9632_aeb; + int supportsLoopback() const; }; #endif diff --git a/hdspmixer/src/HDSPMixerLoopback.cxx b/hdspmixer/src/HDSPMixerLoopback.cxx new file mode 100644 index 0000000..fcfec2a --- /dev/null +++ b/hdspmixer/src/HDSPMixerLoopback.cxx @@ -0,0 +1,133 @@ +/* + * HDSPMixer + * + * Copyright (C) 2003 Thomas Charbonnel (thomas@undata.org) + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#pragma implementation +#include "HDSPMixerLoopback.h" + +HDSPMixerLoopback::HDSPMixerLoopback(int x, int y, int idx):Fl_Widget(x, y, 34, 15) +{ + basew = (HDSPMixerWindow *)window(); + index = idx; +} + +void HDSPMixerLoopback::draw() +{ + if (_loopback == 1) + fl_draw_pixmap(loopback_xpm, x(), y()); +} + +int HDSPMixerLoopback::get() +{ + auto const card { basew->cards[basew->current_card] }; + + if (card->supportsLoopback() != 0) + return -1; + + if (index >= card->max_channels) + return -1; + + int err; + snd_ctl_elem_value_t *elemval; + snd_ctl_elem_id_t * elemid; + snd_ctl_t *handle; + snd_ctl_elem_value_alloca(&elemval); + snd_ctl_elem_id_alloca(&elemid); + char const * const name = basew->cards[basew->current_card]->name; + if ((err = snd_ctl_open(&handle, name, SND_CTL_NONBLOCK)) < 0) { + fprintf(stderr, "Error accessing ctl interface on card %s\n.", name); + return -1; + } + + snd_ctl_elem_id_set_name(elemid, "Output Loopback"); + snd_ctl_elem_id_set_interface(elemid, SND_CTL_ELEM_IFACE_HWDEP); + snd_ctl_elem_id_set_index(elemid, index); + snd_ctl_elem_value_set_id(elemval, elemid); + if ((err = snd_ctl_elem_read(handle, elemval)) < 0) + fprintf(stderr, "cannot read loopback: %d\n", err); + else + _loopback = snd_ctl_elem_value_get_integer(elemval, 0); + + snd_ctl_close(handle); + + return _loopback; +} + +void HDSPMixerLoopback::set(int l) +{ + auto const card { basew->cards[basew->current_card] }; + + if (card->supportsLoopback() != 0) + return; + + if (index >= card->max_channels) + return; + + if (l != _loopback) { + int err; + + snd_ctl_elem_id_t *id; + snd_ctl_elem_value_t *ctl; + snd_ctl_t *handle; + + snd_ctl_elem_value_alloca(&ctl); + snd_ctl_elem_id_alloca(&id); + snd_ctl_elem_id_set_name(id, "Output Loopback"); + snd_ctl_elem_id_set_interface(id, SND_CTL_ELEM_IFACE_HWDEP); + snd_ctl_elem_id_set_device(id, 0); + snd_ctl_elem_id_set_index(id, index); + snd_ctl_elem_value_set_id(ctl, id); + + if ((err = snd_ctl_open( + &handle, basew->cards[basew->current_card]->name, SND_CTL_NONBLOCK)) < 0) { + fprintf(stderr, "Alsa error 1: %s\n", snd_strerror(err)); + return; + } + + snd_ctl_elem_value_set_integer(ctl, 0, l); + if ((err = snd_ctl_elem_write(handle, ctl)) < 0) { + fprintf(stderr, "Alsa error 2: %s\n", snd_strerror(err)); + snd_ctl_close(handle); + return; + } + + _loopback = l; + + snd_ctl_close(handle); + + redraw(); + } +} + +int HDSPMixerLoopback::handle(int e) +{ + int button3 = Fl::event_button3(); + switch (e) { + case FL_PUSH: + set(!_loopback); + if (button3) + relative->set(_loopback); + basew->checkState(); + redraw(); + return 1; + default: + return Fl_Widget::handle(e); + } +} + diff --git a/hdspmixer/src/HDSPMixerLoopback.h b/hdspmixer/src/HDSPMixerLoopback.h new file mode 100644 index 0000000..07f1f0c --- /dev/null +++ b/hdspmixer/src/HDSPMixerLoopback.h @@ -0,0 +1,48 @@ +/* + * HDSPMixer + * + * Copyright (C) 2003 Thomas Charbonnel (thomas@undata.org) + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#pragma interface +#ifndef HDSPMixerLoopback_H +#define HDSPMixerLoopback_H + +#include +#include +#include "HDSPMixerWindow.h" +#include "pixmaps.h" + +class HDSPMixerWindow; + +class HDSPMixerLoopback:public Fl_Widget +{ +private: + HDSPMixerWindow *basew; + int _loopback{-1}; +public: + HDSPMixerLoopback *relative; + int index; + HDSPMixerLoopback(int x, int y, int idx); + void draw(); + int handle(int e); + int get(); + void set(int l); +}; + +#endif + diff --git a/hdspmixer/src/HDSPMixerOutput.cxx b/hdspmixer/src/HDSPMixerOutput.cxx index 0053fe0..7f80a74 100644 --- a/hdspmixer/src/HDSPMixerOutput.cxx +++ b/hdspmixer/src/HDSPMixerOutput.cxx @@ -204,6 +204,7 @@ HDSPMixerOutput::HDSPMixerOutput(int x, int y, int w, int h, int num):Fl_Group(x peak = new HDSPMixerPeak(x+3, y+4, 0); gain = new HDSPMixerGain(x+3, y+175, 0); meter = new HDSPMixerMeter(x+20, y+27, false, peak); + loopback = new HDSPMixerLoopback(x+1, y+208, out_num); end(); } diff --git a/hdspmixer/src/HDSPMixerOutput.h b/hdspmixer/src/HDSPMixerOutput.h index 6278cfd..1e04ae5 100644 --- a/hdspmixer/src/HDSPMixerOutput.h +++ b/hdspmixer/src/HDSPMixerOutput.h @@ -27,6 +27,7 @@ #include #include #include "HDSPMixerFader.h" +#include "HDSPMixerLoopback.h" #include "HDSPMixerPeak.h" #include "HDSPMixerGain.h" #include "HDSPMixerMeter.h" @@ -36,6 +37,7 @@ class HDSPMixerFader; class HDSPMixerGain; +class HDSPMixerLoopback; class HDSPMixerPeak; class HDSPMixerMeter; class HDSPMixerOutputData; @@ -56,6 +58,7 @@ public: HDSPMixerFader *fader; HDSPMixerGain *gain; HDSPMixerMeter *meter; + HDSPMixerLoopback *loopback; HDSPMixerOutput(int x, int y, int w, int h, int out); void draw(); void draw_background(); diff --git a/hdspmixer/src/HDSPMixerOutputData.h b/hdspmixer/src/HDSPMixerOutputData.h index 885047b..75b9109 100644 --- a/hdspmixer/src/HDSPMixerOutputData.h +++ b/hdspmixer/src/HDSPMixerOutputData.h @@ -26,6 +26,7 @@ class HDSPMixerOutputData { public: int fader_pos; + int loopback; HDSPMixerOutputData(); }; diff --git a/hdspmixer/src/HDSPMixerOutputs.cxx b/hdspmixer/src/HDSPMixerOutputs.cxx index 0b4e7f4..342685d 100644 --- a/hdspmixer/src/HDSPMixerOutputs.cxx +++ b/hdspmixer/src/HDSPMixerOutputs.cxx @@ -25,13 +25,15 @@ HDSPMixerOutputs::HDSPMixerOutputs(int x, int y, int w, int h, int nchans):Fl_Gr { int i; for (i = 0; i < HDSP_MAX_CHANNELS+2; i += 2) { - strips[i] = new HDSPMixerOutput((i*STRIP_WIDTH), y, STRIP_WIDTH, SMALLSTRIP_HEIGHT, i); + strips[i] = new HDSPMixerOutput((i*STRIP_WIDTH), y, STRIP_WIDTH, SMALLSTRIP_HEIGHT, i); strips[i+1] = new HDSPMixerOutput(((i+1)*STRIP_WIDTH), y, STRIP_WIDTH, SMALLSTRIP_HEIGHT, i+1); /* Setup linked stereo channels */ strips[i]->fader->relative = strips[i+1]->fader; strips[i+1]->fader->relative = strips[i]->fader; strips[i]->fader->gain = strips[i]->gain; strips[i+1]->fader->gain = strips[i+1]->gain; + strips[i]->loopback->relative = strips[i+1]->loopback; + strips[i+1]->loopback->relative = strips[i]->loopback; } empty_aebo[0] = new HDSPMixerEmpty((nchans-6)*STRIP_WIDTH, y, 2*STRIP_WIDTH, SMALLSTRIP_HEIGHT, 0); diff --git a/hdspmixer/src/HDSPMixerPresetData.cxx b/hdspmixer/src/HDSPMixerPresetData.cxx index 276d101..6359732 100644 --- a/hdspmixer/src/HDSPMixerPresetData.cxx +++ b/hdspmixer/src/HDSPMixerPresetData.cxx @@ -36,5 +36,6 @@ HDSPMixerPresetData::HDSPMixerPresetData() over = 3; level = 0; rate = 1; + loopback = 0; } diff --git a/hdspmixer/src/HDSPMixerPresetData.h b/hdspmixer/src/HDSPMixerPresetData.h index 58536d3..3b46b92 100644 --- a/hdspmixer/src/HDSPMixerPresetData.h +++ b/hdspmixer/src/HDSPMixerPresetData.h @@ -38,6 +38,7 @@ public: int over; int rate; int rmsplus3; + int loopback; HDSPMixerPresetData(); }; diff --git a/hdspmixer/src/HDSPMixerPresets.cxx b/hdspmixer/src/HDSPMixerPresets.cxx index aeeb9c9..82654d9 100644 --- a/hdspmixer/src/HDSPMixerPresets.cxx +++ b/hdspmixer/src/HDSPMixerPresets.cxx @@ -143,6 +143,7 @@ void HDSPMixerPresets::save_preset(int prst) { basew->playbacks->strips[i]->data[card][speed][p]->dest = basew->playbacks->strips[i]->targets->selected; basew->outputs->strips[i]->data[card][speed][p]->fader_pos = basew->outputs->strips[i]->fader->pos[0]; + basew->outputs->strips[i]->data[card][speed][p]->loopback = basew->outputs->strips[i]->loopback->get(); } /* Line outs */ basew->outputs->strips[HDSP_MAX_CHANNELS]->data[card][speed][p]->fader_pos = basew->outputs->strips[HDSP_MAX_CHANNELS]->fader->pos[0]; @@ -188,6 +189,7 @@ void HDSPMixerPresets::restore_preset(int prst) { basew->playbacks->strips[i]->targets->selected = basew->playbacks->strips[i]->data[card][speed][p]->dest; basew->outputs->strips[i]->fader->pos[0] = basew->outputs->strips[i]->data[card][speed][p]->fader_pos; + basew->outputs->strips[i]->loopback->set(basew->outputs->strips[i]->data[card][speed][p]->loopback); } /* Line outs */ basew->outputs->strips[HDSP_MAX_CHANNELS]->fader->pos[0] = basew->outputs->strips[HDSP_MAX_CHANNELS+1]->data[card][speed][p]->fader_pos; diff --git a/hdspmixer/src/HDSPMixerWindow.cxx b/hdspmixer/src/HDSPMixerWindow.cxx index 3b3d668..4a911c1 100644 --- a/hdspmixer/src/HDSPMixerWindow.cxx +++ b/hdspmixer/src/HDSPMixerWindow.cxx @@ -471,6 +471,29 @@ void HDSPMixerWindow::save() } } + /* Output loopback data */ + for (int channel = 0; channel < HDSP_MAX_CHANNELS; ++channel) { + auto const strip = outputs->strips[channel]; + + for (int card = 0; card < MAX_CARDS; ++card) { + auto const data = strip->data[card]; + + for (int speed = 0; speed < 3; ++speed) { + auto const spd = data[speed]; + + for (int preset = 0; preset < 8; ++preset) { + auto const data = spd[preset]; + + if (fwrite((void *)&(data->loopback), + sizeof(int), + 1, + out) != 1) + goto save_error; + } + } + } + } + /* If the file we want to write already exists it could be possible that it * was saved with a newer version. If that is the case we just append its * content to the new output file and that way ensure that we don't lose any @@ -519,6 +542,7 @@ void HDSPMixerWindow::load() bool ondisk_v1 = false; int pan_array_size = 14; /* old (pre 1.0.24) HDSP_MAX_DEST */ int channels_per_card = 26; /* old (pre 1.0.24) HDSP_MAX_CHANNELS */ + bool res = true; if (fread(&buffer, sizeof(char), sizeof(buffer), file) != sizeof(buffer)) { goto load_error; @@ -647,6 +671,46 @@ void HDSPMixerWindow::load() } } } + + /* Output loopback data */ + for (int channel = 0; channel < HDSP_MAX_CHANNELS; ++channel) { + auto const strip = outputs->strips[channel]; + + for (int card = 0; card < MAX_CARDS; ++card) { + auto const data = strip->data[card]; + + for (int speed = 0; speed < 3; ++speed) { + auto const spd = data[speed]; + + for (int preset = 0; preset < 8; ++preset) { + auto const data = spd[preset]; + + /* TODO: Somewhere we get a value of 5 from, investigate + * this another day. For now just reset it here and + * continue looping to reset the value. + */ + data->loopback = 0; + + if (feof(file)) { + res = true; + continue; + } + + if (ferror(file)) { + res = false; + continue; + } + + if (fread((void *)&(data->loopback), sizeof(int), 1, file) != 1) + res = false; + } + } + } + } + + if (!res) + goto load_error; + fclose(file); setTitleWithFilename(); resetMixer(); @@ -844,6 +908,8 @@ void HDSPMixerWindow::restoreDefaults(int card) } outputs->strips[i]->data[card][speed][preset]->fader_pos = (preset != 4) ? 137*CF : 0; outputs->strips[i+1]->data[card][speed][preset]->fader_pos = (preset != 4) ? 137*CF : 0; + outputs->strips[i]->data[card][speed][preset]->loopback = 0; + outputs->strips[i+1]->data[card][speed][preset]->loopback = 0; if (preset == 3 || preset == 7) { inputs->strips[i]->data[card][speed][preset]->mute = 1; inputs->strips[i+1]->data[card][speed][preset]->mute = 1; @@ -1051,6 +1117,8 @@ void HDSPMixerWindow::checkState() /* Outputs row */ if (outputs->strips[i]->data[current_card][speed][p]->fader_pos != outputs->strips[i]->fader->pos[0]) corrupt++; + if (outputs->strips[i]->data[current_card][speed][p]->loopback != outputs->strips[i]->loopback->get()) + corrupt++; } /* Global settings */ diff --git a/hdspmixer/src/Makefile.am b/hdspmixer/src/Makefile.am index e80a8ac..ebc4c3c 100644 --- a/hdspmixer/src/Makefile.am +++ b/hdspmixer/src/Makefile.am @@ -15,6 +15,8 @@ hdspmixer_SOURCES = \ HDSPMixerEmpty.h \ HDSPMixerOutput.cxx \ HDSPMixerOutput.h \ + HDSPMixerLoopback.cxx \ + HDSPMixerLoopback.h \ HDSPMixerIOMixer.cxx \ HDSPMixerIOMixer.h \ HDSPMixerSelector.cxx \ diff --git a/hdspmixer/src/defines.h b/hdspmixer/src/defines.h index af5c382..e76141b 100644 --- a/hdspmixer/src/defines.h +++ b/hdspmixer/src/defines.h @@ -34,7 +34,7 @@ #define STRIP_WIDTH 36 #define FULLSTRIP_HEIGHT 253 -#define SMALLSTRIP_HEIGHT 208 +#define SMALLSTRIP_HEIGHT 224 #define MENU_HEIGHT 20 #define MIN_WIDTH 2*STRIP_WIDTH diff --git a/hdspmixer/src/pixmaps.cxx b/hdspmixer/src/pixmaps.cxx index 2f7c589..34f8834 100644 --- a/hdspmixer/src/pixmaps.cxx +++ b/hdspmixer/src/pixmaps.cxx @@ -47,6 +47,7 @@ #include "../pixmaps/over.xpm" #include "../pixmaps/peak.xpm" #include "../pixmaps/solo.xpm" +#include "../pixmaps/loopback.xpm" #include "../pixmaps/iomixer_r.xpm" #include "../pixmaps/output_r.xpm" #include "../pixmaps/matrix_black.xpm" diff --git a/hdspmixer/src/pixmaps.h b/hdspmixer/src/pixmaps.h index b980a62..3548ba3 100644 --- a/hdspmixer/src/pixmaps.h +++ b/hdspmixer/src/pixmaps.h @@ -49,6 +49,7 @@ extern char const * output_xpm[]; extern char const * over_xpm[]; extern char const * peak_xpm[]; extern char const * solo_xpm[]; +extern char const * loopback_xpm[]; extern char const * iomixer_r_xpm[]; extern char const * output_r_xpm[]; extern char const * matrix_white_xpm[]; From 78e579b3e30076be9e69c410434621b205318dfb Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Thu, 27 May 2021 19:18:38 +0200 Subject: [PATCH 36/66] Release v1.2.5 Signed-off-by: Jaroslav Kysela --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index acd6285..e646c43 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -VERSION = 1.2.2 +VERSION = 1.2.5 TOP = . SUBDIRS = as10k1 envy24control hdsploader hdspconf hdspmixer \ mixartloader pcxhrloader rmedigicontrol sb16_csp seq sscape_ctl \ From 5b9c2cb399b988772f5d260e44c62248d839e4de Mon Sep 17 00:00:00 2001 From: Frank Dana Date: Mon, 17 Aug 2020 19:33:14 -0400 Subject: [PATCH 37/66] hdajackretask: Update kernel doc URL in README As of THIS writing, the documentation has been rearranged, and the "Hint strings" section now resides at the updated URL Fixes: https://github.com/alsa-project/alsa-tools/pull/2 Signed-off-by: Frank Dana Signed-off-by: Jaroslav Kysela --- hdajackretask/README | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hdajackretask/README b/hdajackretask/README index 209e332..bd6244b 100644 --- a/hdajackretask/README +++ b/hdajackretask/README @@ -51,4 +51,4 @@ This is for the experts only. It makes you select each configuration field indiv http://www.intel.com/content/dam/www/public/us/en/documents/product-specifications/high-definition-audio-specification.pdf ) * Parser hints -This enables you to send special "hints" to the driver that causes parsing to behave differently. Leave them at the "default" setting unless you have read the driver documentation. ( Which, at the time of this writing, is available here: https://www.kernel.org/doc/Documentation/sound/alsa/HD-Audio.txt - see the "Hint strings" section. ) +This enables you to send special "hints" to the driver that causes parsing to behave differently. Leave them at the "default" setting unless you have read the driver documentation. ( Which, at the time of this writing, is available here: https://www.kernel.org/doc/Documentation/sound/hd-audio/notes.rst - see the "Hint strings" section. ) From 8c8d6941f21ea68894ce7fd13e92b3ac9f16dc8a Mon Sep 17 00:00:00 2001 From: wynnfeng Date: Sun, 29 Jan 2023 20:47:53 +0800 Subject: [PATCH 38/66] hdspmixer: fix core dump Initialize the name pointer to NULL. Fixes: https://github.com/alsa-project/alsa-tools/pull/14 Signed-off-by: wynnfeng Signed-off-by: Jaroslav Kysela --- hdspmixer/src/hdspmixer.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hdspmixer/src/hdspmixer.cxx b/hdspmixer/src/hdspmixer.cxx index 9c0a3c4..a33a75e 100644 --- a/hdspmixer/src/hdspmixer.cxx +++ b/hdspmixer/src/hdspmixer.cxx @@ -39,7 +39,7 @@ int main(int argc, char **argv) { HDSPMixerWindow *window; HDSPMixerCard *hdsp_cards[3]; - char *name, *shortname; + char *name = NULL, *shortname; int card; int cards = 0; From 4bfaf097e07a96bc61d95d913ec2ec2990b4b8a2 Mon Sep 17 00:00:00 2001 From: Mazunki Hoksaas Date: Mon, 4 Sep 2023 14:50:02 +0200 Subject: [PATCH 39/66] echomixer: fix clang-16 incompatible-function-pointer Closes: https://github.com/alsa-project/alsa-tools/pull/17 Signed-off-by: Mazunki Hoksaas Signed-off-by: Jaroslav Kysela --- echomixer/echomixer.c | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/echomixer/echomixer.c b/echomixer/echomixer.c index 4946a5d..80124ba 100644 --- a/echomixer/echomixer.c +++ b/echomixer/echomixer.c @@ -2105,7 +2105,7 @@ printf("components = %s\n", snd_ctl_card_info_get_components(hw_info));*/ for (i=0; i Date: Thu, 12 Oct 2023 09:02:53 +0000 Subject: [PATCH 40/66] as10k1: make (extern) declarations and definition of macro_depth All `extern` declarations refer to it as `unsigned int`, but the actual definition is a signed integer. Reported by CBMC's goto-cc compiler, which performs type-aware linking. Closes: https://github.com/alsa-project/alsa-tools/pull/19 Signed-off-by: Michael Tautschnig Signed-off-by: Jaroslav Kysela --- as10k1/as10k1.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/as10k1/as10k1.h b/as10k1/as10k1.h index b897f3b..1713963 100644 --- a/as10k1/as10k1.h +++ b/as10k1/as10k1.h @@ -55,6 +55,6 @@ int tram_table_count=0; int gpr_constant_count=0; char patch_name[PATCH_NAME_SIZE]="NO_NAME"; -int macro_depth=0; +unsigned int macro_depth=0; From d349d20c127b373148b3c8cbb9170de4dd7213a9 Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Thu, 25 Jan 2024 13:25:04 +0100 Subject: [PATCH 41/66] hdajackretask: add support for pipewire stop/start Link: https://github.com/alsa-project/alsa-tools/issues/21 Signed-off-by: Jaroslav Kysela --- hdajackretask/apply-changes.c | 117 ++++++++++++++++++++++++++-------- 1 file changed, 91 insertions(+), 26 deletions(-) diff --git a/hdajackretask/apply-changes.c b/hdajackretask/apply-changes.c index aa291ce..0d558f7 100644 --- a/hdajackretask/apply-changes.c +++ b/hdajackretask/apply-changes.c @@ -15,6 +15,15 @@ static gchar* tempdir = NULL; static gchar* scriptfile = NULL; static gchar* errorfile = NULL; +struct soundserver { + enum { + PULSEAUDIO, + PIPEWIRE + } type; + gboolean was_killed; + gchar *user; +}; + static GQuark quark() { return g_quark_from_static_string("hda-jack-retask-error"); @@ -125,33 +134,73 @@ static gchar* get_pulseaudio_client_conf() return fname; } -static gboolean kill_pulseaudio(gboolean* was_killed, int card, GError** err) +static gboolean call_systemctl(gchar* user, gchar* operation, gchar *unit, GError **err) +{ + gchar* s; + gboolean ok; + + if (getuid() == 0) { + // special case for root + // XDG_RUNTIME_DIR setup seems to be mandatory for Fedora, may differ for other distros + s = g_strdup_printf("runuser -l %s -c 'XDG_RUNTIME_DIR=/var/run/user/$(id -u) systemctl --user %s %s'", user, operation, unit); + } else { + s = g_strdup_printf("systemctl --user %s %s", operation, unit); + } + ok = g_spawn_command_line_sync(s, NULL, NULL, NULL, err); + g_free(s); + return ok; +} + +static gboolean kill_soundserver(struct soundserver* state, int card, GError** err) { gchar* fuser = NULL, *fuser2 = NULL; gchar* s = NULL; gchar* clientconf = NULL; gboolean ok; - *was_killed = FALSE; + char *p; + state->type = PULSEAUDIO; + state->was_killed = FALSE; + state->user = NULL; /* Is PA having a lock on the sound card? */ s = g_strdup_printf("fuser -v /dev/snd/controlC%d", card); /* Due to some bug in fuser, stdout and stderr output is unclear. Better check both. */ if (!(ok = g_spawn_command_line_sync(s, &fuser, &fuser2, NULL, err))) goto cleanup; - if ((ok = strstr(fuser, "pulseaudio") == NULL && strstr(fuser2, "pulseaudio") == NULL)) - goto cleanup; // PulseAudio not locking the sound card + if (strstr(fuser, "pulseaudio") != NULL || strstr(fuser2, "pulseaudio") != NULL) { + clientconf = get_pulseaudio_client_conf(); + if (!(ok = !g_file_test(clientconf, G_FILE_TEST_EXISTS))) { + g_set_error(err, quark(), 0, "Cannot block PulseAudio from respawning:\n" + "Please either remove '%s' or kill PulseAudio manually.", clientconf); + goto cleanup; + } + + if (!(ok = g_file_set_contents(clientconf, "autospawn=no\n", -1, err))) + goto cleanup; + state->was_killed = TRUE; + ok = g_spawn_command_line_sync("pulseaudio -k", NULL, NULL, NULL, err); + } else if ((p = strstr(fuser, "wireplumber")) != NULL || (p = strstr(fuser2, "wireplumber")) != NULL) { + *p = '\0'; + while (p != fuser && p != fuser2 && *p != '\n') + p--; + if (*p == '\n') + p++; + + GRegex *regex; + GMatchInfo *match_info; - clientconf = get_pulseaudio_client_conf(); - if (!(ok = !g_file_test(clientconf, G_FILE_TEST_EXISTS))) { - g_set_error(err, quark(), 0, "Cannot block PulseAudio from respawning:\n" - "Please either remove '%s' or kill PulseAudio manually.", clientconf); - goto cleanup; + regex = g_regex_new (" ([a-zA-Z0-9_-]+) ", G_REGEX_DEFAULT, G_REGEX_MATCH_DEFAULT, NULL); + g_regex_match (regex, p, 0, &match_info); + if (g_match_info_matches (match_info)) + state->user = g_match_info_fetch (match_info, 1); + g_match_info_free (match_info); + g_regex_unref (regex); + + state->type = PIPEWIRE; + ok = call_systemctl(state->user, "stop", "wireplumber.service", err); + state->was_killed = ok; + } else { + // Sound server not locking the sound card } - - if (!(ok = g_file_set_contents(clientconf, "autospawn=no\n", -1, err))) - goto cleanup; - - *was_killed = TRUE; - ok = g_spawn_command_line_sync("pulseaudio -k", NULL, NULL, NULL, err); cleanup: g_free(clientconf); @@ -161,16 +210,32 @@ cleanup: return ok; } -static gboolean restore_pulseaudio(gboolean was_killed, GError** err) +static gboolean restore_soundserver(struct soundserver* state, GError** err) { - gchar* clientconf = get_pulseaudio_client_conf(); - if (was_killed && g_unlink(clientconf) != 0) { - g_set_error(err, quark(), 0, "%s", g_strerror(errno)); - g_free(clientconf); - return FALSE; + gboolean ok = FALSE; + switch (state->type) { + case PULSEAUDIO: + gchar* 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); + goto cleanup; + } + g_free(clientconf); + ok = TRUE; + break; + case PIPEWIRE: + if (state->was_killed) + ok = call_systemctl(state->user, "start", "wireplumber.service", err); + else + ok = TRUE; + break; } - g_free(clientconf); - return TRUE; + +cleanup: + g_free(state->user); + state->user = NULL; + return ok; } gboolean apply_changes_reconfig(pin_configs_t* pins, int entries, int card, int device, @@ -178,10 +243,10 @@ gboolean apply_changes_reconfig(pin_configs_t* pins, int entries, int card, int { gboolean result = FALSE; // gchar* script_name = NULL; - gboolean pa_killed = FALSE; + struct soundserver state = { 0 }; /* Check for users of the sound card */ /* Kill pulseaudio if necessary (and possible) */ - if (!kill_pulseaudio(&pa_killed, card, err)) + if (!kill_soundserver(&state, card, err)) goto cleanup; /* Create script */ if (!create_reconfig_script(pins, entries, card, device, model, hints, err)) @@ -191,7 +256,7 @@ gboolean apply_changes_reconfig(pin_configs_t* pins, int entries, int card, int goto cleanup; result = TRUE; cleanup: - if (!restore_pulseaudio(pa_killed, result ? err : NULL)) { + if (!restore_soundserver(&state, result ? err : NULL)) { result = FALSE; } // g_free(script_name); From aa2dc9b4323f50bb0a13ed01e7e605532c4ab639 Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Thu, 25 Jan 2024 13:27:03 +0100 Subject: [PATCH 42/66] hdajackretask: limit the help window size to something safe (1600x1000) for the help screen If more monitors are present in the system, the window is too big and information cannot be visible correctly. Fixes: https://github.com/alsa-project/alsa-tools/issues/20 Signed-off-by: Jaroslav Kysela --- hdajackretask/main-gtk.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hdajackretask/main-gtk.c b/hdajackretask/main-gtk.c index f5ff6e4..c561f57 100644 --- a/hdajackretask/main-gtk.c +++ b/hdajackretask/main-gtk.c @@ -519,7 +519,7 @@ static void documentation_clicked(GtkWidget* sender, ui_data_t* ui) int neww = screen ? (gdk_screen_get_width(screen)*3)/4 : 800; int newh = screen ? (gdk_screen_get_height(screen)*3)/4 : 600; - gtk_window_set_default_size(GTK_WINDOW(dlg), neww, newh); + gtk_window_set_default_size(GTK_WINDOW(dlg), MIN(1600, neww), MIN(1000, newh)); } gtk_dialog_run(dlg); From cb85b257b4ee352d7830e603482daeb7fe2ecc36 Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Mon, 29 Jan 2024 13:57:31 +0100 Subject: [PATCH 43/66] Release v1.2.11 Signed-off-by: Jaroslav Kysela --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index e646c43..1b3d4ab 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -VERSION = 1.2.5 +VERSION = 1.2.11 TOP = . SUBDIRS = as10k1 envy24control hdsploader hdspconf hdspmixer \ mixartloader pcxhrloader rmedigicontrol sb16_csp seq sscape_ctl \ From 54b5913cd53f361ee84cb5f7412f7801e5d7b1c9 Mon Sep 17 00:00:00 2001 From: Takashi Iwai Date: Fri, 2 Feb 2024 17:19:47 +0100 Subject: [PATCH 44/66] hdajackretask: Fix build with gcc7 The old compiler doesn't allow a variable declaration inside switch block. Fixes: d349d20c127b ("hdajackretask: add support for pipewire stop/start") Signed-off-by: Takashi Iwai --- hdajackretask/apply-changes.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) 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); From 97092591e03fa01a7b3b38ecf120fc28f437b9ca Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Sun, 26 Jan 2025 12:40:23 +0100 Subject: [PATCH 45/66] envy24control: fix cast warnings and string array overflows Signed-off-by: Jaroslav Kysela --- envy24control/config.c | 2 +- envy24control/envy24control.c | 4 ++-- envy24control/levelmeters.c | 2 +- envy24control/new_process.c | 6 +++--- envy24control/profiles.c | 13 ++++++------- envy24control/profiles.h | 2 +- envy24control/strstr_icase_blank.c | 7 ++++++- 7 files changed, 20 insertions(+), 16 deletions(-) diff --git a/envy24control/config.c b/envy24control/config.c index 6933eef..c27cf27 100644 --- a/envy24control/config.c +++ b/envy24control/config.c @@ -46,7 +46,7 @@ void config_close() void config_set_stereo(GtkWidget *but, gpointer data) { - gint i=(gint)data; + gint i=GPOINTER_TO_INT(data); config_stereo[i]=GTK_TOGGLE_BUTTON(but)->active; } diff --git a/envy24control/envy24control.c b/envy24control/envy24control.c index 107a843..bce41eb 100644 --- a/envy24control/envy24control.c +++ b/envy24control/envy24control.c @@ -249,7 +249,7 @@ static void create_mixer_frame(GtkWidget *box, int stream) 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); + GTK_SIGNAL_FUNC(config_set_stereo), GINT_TO_POINTER(stream-1)); hbox = gtk_hbox_new(TRUE, 6); gtk_widget_show(hbox); @@ -2176,7 +2176,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); diff --git a/envy24control/levelmeters.c b/envy24control/levelmeters.c index 24e00db..5933721 100644 --- a/envy24control/levelmeters.c +++ b/envy24control/levelmeters.c @@ -65,7 +65,7 @@ static GdkGC *get_pen(int idx, int nRed, int nGreen, int nBlue) return gc; } -static int get_index(gchar *name) +static int get_index(const gchar *name) { int result; 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/profiles.c b/envy24control/profiles.c index 8e23bfd..17a418c 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); } } @@ -522,7 +522,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 +547,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 +640,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'; } 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)) From 787857d61a434b6afd6241106ea792f408e4cb59 Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Sun, 26 Jan 2025 13:05:40 +0100 Subject: [PATCH 46/66] as10k1: fix gcc warnings Signed-off-by: Jaroslav Kysela --- as10k1/as10k1.c | 14 +++++++++----- as10k1/assemble.c | 7 ++----- as10k1/macro.c | 5 +---- as10k1/parse.c | 3 ++- as10k1/parse.h | 5 ++++- 5 files changed, 18 insertions(+), 16 deletions(-) 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 From 6549725ec59eafb24e9f8d9ddacbf33305524fd3 Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Sun, 26 Jan 2025 13:12:05 +0100 Subject: [PATCH 47/66] hdspconf: fix gcc warnings (const) Signed-off-by: Jaroslav Kysela --- hdspconf/src/HC_AboutText.h | 2 +- hdspconf/src/HC_Aeb.cxx | 2 +- hdspconf/src/HC_SpdifOut.cxx | 2 +- hdspconf/src/HC_SyncCheck.h | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) 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; }; From 9cb754084ba073342491704078f68e62f38fda7f Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Sun, 26 Jan 2025 13:16:53 +0100 Subject: [PATCH 48/66] mixartloader: fix gcc warnings (string truncation) Signed-off-by: Jaroslav Kysela --- mixartloader/mixartloader.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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); } From 48128777e0f528d3aaf3eca65f9d16a393901c63 Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Sun, 26 Jan 2025 13:19:59 +0100 Subject: [PATCH 49/66] pcxhrloader: fix gcc warnings (string truncation) Signed-off-by: Jaroslav Kysela --- pcxhrloader/pcxhrloader.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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); } From a2a0167ed9e91ad2c427fae31dc89daa4022b0cc Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Sun, 26 Jan 2025 13:21:13 +0100 Subject: [PATCH 50/66] rmedigicontrol: fix gcc warnings (string size) Signed-off-by: Jaroslav Kysela --- rmedigicontrol/rmedigicontrol.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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; From 3bd780896e7f0316fa0b36e4445888546d3396cd Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Mon, 27 Jan 2025 09:28:53 +0100 Subject: [PATCH 51/66] usx2yloader: fix gcc warnings (string size) Signed-off-by: Jaroslav Kysela --- usx2yloader/usx2yloader.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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); } From cd9ee08dcb504822ac24f09c823b89f8391095f2 Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Mon, 27 Jan 2025 09:29:37 +0100 Subject: [PATCH 52/66] vxloader: fix gcc warnings (string size) Signed-off-by: Jaroslav Kysela --- vxloader/vxloader.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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); } From 2420b2a6dfe33ae90cfa7b5bb1de04c008366ff9 Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Mon, 27 Jan 2025 09:34:38 +0100 Subject: [PATCH 53/66] echomixer: fix various gcc warnings Signed-off-by: Jaroslav Kysela --- echomixer/echomixer.c | 20 ++++++-------------- 1 file changed, 6 insertions(+), 14 deletions(-) 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); From 90c2aa263906492bd511d929feeb14ddf162d02d Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Mon, 27 Jan 2025 09:42:39 +0100 Subject: [PATCH 54/66] ld10k1: fix various gcc warnings Signed-off-by: Jaroslav Kysela --- ld10k1/src/dl10k1.c | 2 +- ld10k1/src/ld10k1.c | 8 ++++---- ld10k1/src/ld10k1_driver.c | 4 ++-- ld10k1/src/ld10k1_fnc.c | 2 +- ld10k1/src/ld10k1_fnc1.c | 3 --- ld10k1/src/lo10k1.c | 14 +++++++------- 6 files changed, 15 insertions(+), 18 deletions(-) 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; From 5eaadd15bda4cf0424ee2470a6d304a0c2ce10cb Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Mon, 27 Jan 2025 11:02:21 +0100 Subject: [PATCH 55/66] hdajackretask: fix reset_changes_boot() declaration Signed-off-by: Jaroslav Kysela --- hdajackretask/apply-changes.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 From 6d2d5004567a986e6b59dc0cd62e66c886d02d52 Mon Sep 17 00:00:00 2001 From: Andreas Persson Date: Sun, 23 Mar 2025 10:00:10 +0100 Subject: [PATCH 56/66] envy24control: fix spdif output settings The S/PDIF Output Settings in envy24control had some bugs: wrong bits were set when user changed "Stream" under "Professional" or any of the settings under "Consumer". Closes: https://github.com/alsa-project/alsa-tools/pull/28 Signed-off-by: Andreas Persson Signed-off-by: Jaroslav Kysela --- envy24control/hardware.c | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/envy24control/hardware.c b/envy24control/hardware.c index 7e0094e..b15df56 100644 --- a/envy24control/hardware.c +++ b/envy24control/hardware.c @@ -455,9 +455,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 +500,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 +517,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 +539,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 +555,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(); From 4522439faf51fb749d39c7b0cb2c3f10f79c1c65 Mon Sep 17 00:00:00 2001 From: Andreas Persson Date: Sun, 23 Mar 2025 13:56:29 +0100 Subject: [PATCH 57/66] envy24control: simplify code by using gtk_widget_show_all Remove all gtk_widget_show calls and replace it with just one gtk_widget_show_all. This makes the code shorter and it will also help a future port to GTK 4, where gtk_widget_show is gone. Closes: https://github.com/alsa-project/alsa-tools/pull/29 Signed-off-by: Andreas Persson Signed-off-by: Jaroslav Kysela --- envy24control/envy24control.c | 241 +++------------------------------- 1 file changed, 17 insertions(+), 224 deletions(-) diff --git a/envy24control/envy24control.c b/envy24control/envy24control.c index bce41eb..a7e40f0 100644 --- a/envy24control/envy24control.c +++ b/envy24control/envy24control.c @@ -171,24 +171,20 @@ 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); 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); 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)); 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); @@ -197,14 +193,12 @@ static void create_mixer_frame(GtkWidget *box, int stream) (gpointer)(long)((stream << 16) + 0)); vbox1 = gtk_vbox_new(FALSE, 0); - gtk_widget_show(vbox1); 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", @@ -214,14 +208,12 @@ static void create_mixer_frame(GtkWidget *box, int stream) 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)); 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); @@ -230,34 +222,28 @@ static void create_mixer_frame(GtkWidget *box, int stream) (gpointer)(long)((stream << 16) + 1)); hbox = gtk_hbox_new(TRUE, 0); - gtk_widget_show(hbox); 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_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_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), GINT_TO_POINTER(stream-1)); hbox = gtk_hbox_new(TRUE, 6); - gtk_widget_show(hbox); 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", @@ -266,7 +252,6 @@ static void create_mixer_frame(GtkWidget *box, int stream) 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", @@ -287,32 +272,26 @@ static void create_inputs_mixer(GtkWidget *main, GtkWidget *notebook, int page) hbox = gtk_hbox_new(FALSE, 3); - gtk_widget_show(hbox); 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); gtk_container_add(GTK_CONTAINER(viewport), vbox); hbox = gtk_hbox_new(FALSE, 0); - gtk_widget_show(hbox); gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, TRUE, 0); for(stream = (MAX_PCM_OUTPUT_CHANNELS + MAX_SPDIF_CHANNELS + 1); \ @@ -338,32 +317,26 @@ static void create_pcms_mixer(GtkWidget *main, GtkWidget *notebook, int page) int stream; hbox = gtk_hbox_new(FALSE, 3); - gtk_widget_show(hbox); 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); gtk_container_add(GTK_CONTAINER(viewport), vbox); hbox = gtk_hbox_new(FALSE, 0); - gtk_widget_show(hbox); gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, TRUE, 0); for(stream = 1; stream <= pcm_output_channels; stream ++) { @@ -437,20 +410,17 @@ 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); 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); gtk_box_pack_start(GTK_BOX(vbox), radiobutton, FALSE, FALSE, 0); gtk_signal_connect(GTK_OBJECT(radiobutton), "toggled", (GtkSignalFunc)patchbay_toggled, @@ -458,11 +428,9 @@ static void create_router_frame(GtkWidget *box, int stream, int pos) hseparator = gtk_hseparator_new(); - gtk_widget_show(hseparator); gtk_box_pack_start(GTK_BOX(vbox), hseparator, FALSE, TRUE, 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 */ || @@ -471,7 +439,6 @@ 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); gtk_box_pack_start(GTK_BOX(vbox), radiobutton, FALSE, FALSE, 0); gtk_signal_connect(GTK_OBJECT(radiobutton), "toggled", @@ -480,13 +447,11 @@ static void create_router_frame(GtkWidget *box, int stream, int pos) } 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); @@ -494,7 +459,6 @@ static void create_router_frame(GtkWidget *box, int stream, int pos) 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); gtk_box_pack_start(GTK_BOX(vbox), radiobutton, FALSE, FALSE, 0); gtk_signal_connect(GTK_OBJECT(radiobutton), "toggled", @@ -512,23 +476,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); gtk_container_add(GTK_CONTAINER(viewport), hbox); pos = 0; @@ -551,12 +511,10 @@ 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); gtk_container_add(GTK_CONTAINER(frame), vbox); gtk_container_set_border_width(GTK_CONTAINER(vbox), 6); @@ -564,7 +522,6 @@ static void create_master_clock(GtkWidget *box) 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); gtk_box_pack_start(GTK_BOX(vbox), radiobutton, FALSE, FALSE, 0); gtk_signal_connect(GTK_OBJECT(radiobutton), "toggled", (GtkSignalFunc)internal_clock_toggled, @@ -574,7 +531,6 @@ static void create_master_clock(GtkWidget *box) 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); gtk_box_pack_start(GTK_BOX(vbox), radiobutton, FALSE, FALSE, 0); gtk_signal_connect(GTK_OBJECT(radiobutton), "toggled", (GtkSignalFunc)internal_clock_toggled, @@ -584,7 +540,6 @@ static void create_master_clock(GtkWidget *box) 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); gtk_box_pack_start(GTK_BOX(vbox), radiobutton, FALSE, FALSE, 0); gtk_signal_connect(GTK_OBJECT(radiobutton), "toggled", (GtkSignalFunc)internal_clock_toggled, @@ -594,7 +549,6 @@ static void create_master_clock(GtkWidget *box) 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); gtk_box_pack_start(GTK_BOX(vbox), radiobutton, FALSE, FALSE, 0); gtk_signal_connect(GTK_OBJECT(radiobutton), "toggled", (GtkSignalFunc)internal_clock_toggled, @@ -604,7 +558,6 @@ static void create_master_clock(GtkWidget *box) 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); gtk_box_pack_start(GTK_BOX(vbox), radiobutton, FALSE, FALSE, 0); gtk_signal_connect(GTK_OBJECT(radiobutton), "toggled", (GtkSignalFunc)internal_clock_toggled, @@ -614,7 +567,6 @@ static void create_master_clock(GtkWidget *box) 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); gtk_box_pack_start(GTK_BOX(vbox), radiobutton, FALSE, FALSE, 0); gtk_signal_connect(GTK_OBJECT(radiobutton), "toggled", (GtkSignalFunc)internal_clock_toggled, @@ -625,7 +577,6 @@ static void create_master_clock(GtkWidget *box) 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); gtk_box_pack_start(GTK_BOX(vbox), radiobutton, FALSE, FALSE, 0); gtk_signal_connect(GTK_OBJECT(radiobutton), "toggled", (GtkSignalFunc)internal_clock_toggled, @@ -640,7 +591,6 @@ 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); gtk_box_pack_start(GTK_BOX(vbox), radiobutton, FALSE, FALSE, 0); gtk_signal_connect(GTK_OBJECT(radiobutton), "toggled", (GtkSignalFunc)internal_clock_toggled, @@ -648,7 +598,6 @@ static void create_master_clock(GtkWidget *box) 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,17 +608,14 @@ 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); 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, @@ -678,7 +624,6 @@ static void create_rate_state(GtkWidget *box) 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, @@ -692,12 +637,10 @@ 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); @@ -712,23 +655,19 @@ static void create_volume_change(GtkWidget *box) 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); 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); hw_volume_change_adj = spinbutton_adj; spinbutton = gtk_spin_button_new(GTK_ADJUSTMENT(spinbutton_adj), 1, 0); - gtk_widget_show(spinbutton); gtk_box_pack_start(GTK_BOX(hbox), spinbutton, TRUE, FALSE, 0); gtk_spin_button_set_numeric(GTK_SPIN_BUTTON(spinbutton), TRUE); gtk_signal_connect(GTK_OBJECT(spinbutton_adj), "value_changed", @@ -744,12 +683,10 @@ 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); gtk_container_add(GTK_CONTAINER(frame), vbox); gtk_container_set_border_width(GTK_CONTAINER(vbox), 6); @@ -757,7 +694,6 @@ static void create_spdif_output_settings_profi_data(GtkWidget *box) 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); gtk_box_pack_start(GTK_BOX(vbox), radiobutton, FALSE, FALSE, 0); gtk_signal_connect(GTK_OBJECT(radiobutton), "toggled", (GtkSignalFunc)profi_data_toggled, @@ -766,7 +702,6 @@ static void create_spdif_output_settings_profi_data(GtkWidget *box) 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); gtk_box_pack_start(GTK_BOX(vbox), radiobutton, FALSE, FALSE, 0); gtk_signal_connect(GTK_OBJECT(radiobutton), "toggled", (GtkSignalFunc)profi_data_toggled, @@ -781,19 +716,16 @@ 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); 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); gtk_box_pack_start(GTK_BOX(vbox), radiobutton, FALSE, FALSE, 0); gtk_signal_connect(GTK_OBJECT(radiobutton), "toggled", (GtkSignalFunc)profi_stream_toggled, @@ -802,7 +734,6 @@ static void create_spdif_output_settings_profi_stream(GtkWidget *box) 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); gtk_box_pack_start(GTK_BOX(vbox), radiobutton, FALSE, FALSE, 0); gtk_signal_connect(GTK_OBJECT(radiobutton), "toggled", (GtkSignalFunc)profi_stream_toggled, @@ -817,12 +748,10 @@ 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); gtk_container_add(GTK_CONTAINER(frame), vbox); gtk_container_set_border_width(GTK_CONTAINER(vbox), 6); @@ -830,7 +759,6 @@ static void create_spdif_output_settings_profi_emphasis(GtkWidget *box) 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); gtk_box_pack_start(GTK_BOX(vbox), radiobutton, FALSE, FALSE, 0); gtk_signal_connect(GTK_OBJECT(radiobutton), "toggled", (GtkSignalFunc)profi_emphasis_toggled, @@ -839,7 +767,6 @@ static void create_spdif_output_settings_profi_emphasis(GtkWidget *box) 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); gtk_box_pack_start(GTK_BOX(vbox), radiobutton, FALSE, FALSE, 0); gtk_signal_connect(GTK_OBJECT(radiobutton), "toggled", (GtkSignalFunc)profi_emphasis_toggled, @@ -848,7 +775,6 @@ static void create_spdif_output_settings_profi_emphasis(GtkWidget *box) 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); gtk_box_pack_start(GTK_BOX(vbox), radiobutton, FALSE, FALSE, 0); gtk_signal_connect(GTK_OBJECT(radiobutton), "toggled", (GtkSignalFunc)profi_emphasis_toggled, @@ -857,7 +783,6 @@ static void create_spdif_output_settings_profi_emphasis(GtkWidget *box) 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); gtk_box_pack_start(GTK_BOX(vbox), radiobutton, FALSE, FALSE, 0); gtk_signal_connect(GTK_OBJECT(radiobutton), "toggled", (GtkSignalFunc)profi_emphasis_toggled, @@ -871,17 +796,14 @@ static void create_spdif_output_settings_profi(GtkWidget *notebook, int page) GtkWidget *label; hbox = gtk_hbox_new(FALSE, 0); - gtk_widget_show(hbox); 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); gtk_box_pack_start(GTK_BOX(hbox), vbox, FALSE, TRUE, 0); gtk_container_set_border_width(GTK_CONTAINER(vbox), 6); @@ -889,7 +811,6 @@ static void create_spdif_output_settings_profi(GtkWidget *notebook, int page) create_spdif_output_settings_profi_stream(vbox); vbox = gtk_vbox_new(FALSE, 0); - gtk_widget_show(vbox); gtk_box_pack_start(GTK_BOX(hbox), vbox, FALSE, TRUE, 0); gtk_container_set_border_width(GTK_CONTAINER(vbox), 6); @@ -904,11 +825,9 @@ 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); gtk_container_add(GTK_CONTAINER(frame), vbox); gtk_container_set_border_width(GTK_CONTAINER(vbox), 6); @@ -916,7 +835,6 @@ static void create_spdif_output_settings_consumer_copyright(GtkWidget *box) 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); gtk_box_pack_start(GTK_BOX(vbox), radiobutton, FALSE, FALSE, 0); gtk_signal_connect(GTK_OBJECT(radiobutton), "toggled", (GtkSignalFunc)consumer_copyright_toggled, @@ -925,7 +843,6 @@ static void create_spdif_output_settings_consumer_copyright(GtkWidget *box) 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); gtk_box_pack_start(GTK_BOX(vbox), radiobutton, FALSE, FALSE, 0); gtk_signal_connect(GTK_OBJECT(radiobutton), "toggled", (GtkSignalFunc)consumer_copyright_toggled, @@ -940,11 +857,9 @@ 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); gtk_container_add(GTK_CONTAINER(frame), vbox); gtk_container_set_border_width(GTK_CONTAINER(vbox), 6); @@ -952,7 +867,6 @@ static void create_spdif_output_settings_consumer_copy(GtkWidget *box) "1-st generation"); hw_consumer_copy_1st_radio = radiobutton; group = gtk_radio_button_group(GTK_RADIO_BUTTON(radiobutton)); - gtk_widget_show(radiobutton); gtk_box_pack_start(GTK_BOX(vbox), radiobutton, FALSE, FALSE, 0); gtk_signal_connect(GTK_OBJECT(radiobutton), "toggled", (GtkSignalFunc)consumer_copy_toggled, @@ -961,7 +875,6 @@ static void create_spdif_output_settings_consumer_copy(GtkWidget *box) 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); gtk_box_pack_start(GTK_BOX(vbox), radiobutton, FALSE, FALSE, 0); gtk_signal_connect(GTK_OBJECT(radiobutton), "toggled", (GtkSignalFunc)consumer_copy_toggled, @@ -976,18 +889,15 @@ 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); 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); gtk_box_pack_start(GTK_BOX(vbox), radiobutton, FALSE, FALSE, 0); gtk_signal_connect(GTK_OBJECT(radiobutton), "toggled", (GtkSignalFunc)consumer_emphasis_toggled, @@ -996,7 +906,6 @@ static void create_spdif_output_settings_consumer_emphasis(GtkWidget *box) 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); gtk_box_pack_start(GTK_BOX(vbox), radiobutton, FALSE, FALSE, 0); gtk_signal_connect(GTK_OBJECT(radiobutton), "toggled", (GtkSignalFunc)consumer_emphasis_toggled, @@ -1011,18 +920,15 @@ 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); 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); gtk_box_pack_start(GTK_BOX(vbox), radiobutton, FALSE, FALSE, 0); gtk_signal_connect(GTK_OBJECT(radiobutton), "toggled", (GtkSignalFunc)consumer_category_toggled, @@ -1031,7 +937,6 @@ static void create_spdif_output_settings_consumer_category(GtkWidget *box) 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); gtk_box_pack_start(GTK_BOX(vbox), radiobutton, FALSE, FALSE, 0); gtk_signal_connect(GTK_OBJECT(radiobutton), "toggled", (GtkSignalFunc)consumer_category_toggled, @@ -1040,7 +945,6 @@ static void create_spdif_output_settings_consumer_category(GtkWidget *box) 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); gtk_box_pack_start(GTK_BOX(vbox), radiobutton, FALSE, FALSE, 0); gtk_signal_connect(GTK_OBJECT(radiobutton), "toggled", (GtkSignalFunc)consumer_category_toggled, @@ -1049,7 +953,6 @@ static void create_spdif_output_settings_consumer_category(GtkWidget *box) 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); gtk_box_pack_start(GTK_BOX(vbox), radiobutton, FALSE, FALSE, 0); gtk_signal_connect(GTK_OBJECT(radiobutton), "toggled", (GtkSignalFunc)consumer_category_toggled, @@ -1063,18 +966,15 @@ static void create_spdif_output_settings_consumer(GtkWidget *notebook, int page) GtkWidget *label; hbox = gtk_hbox_new(FALSE, 0); - gtk_widget_show(hbox); 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); gtk_box_pack_start(GTK_BOX(hbox), vbox, FALSE, TRUE, 0); gtk_container_set_border_width(GTK_CONTAINER(vbox), 6); @@ -1082,14 +982,12 @@ static void create_spdif_output_settings_consumer(GtkWidget *notebook, int page) create_spdif_output_settings_consumer_copy(vbox); vbox = gtk_vbox_new(FALSE, 0); - gtk_widget_show(vbox); 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); gtk_box_pack_start(GTK_BOX(hbox), vbox, FALSE, TRUE, 0); gtk_container_set_border_width(GTK_CONTAINER(vbox), 6); @@ -1106,24 +1004,20 @@ 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); 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); 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); 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", @@ -1133,7 +1027,6 @@ static void create_spdif_output_settings(GtkWidget *box) 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); 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", @@ -1143,7 +1036,6 @@ static void create_spdif_output_settings(GtkWidget *box) 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,25 +1049,18 @@ 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); 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); gtk_box_pack_start(GTK_BOX(vbox), radiobutton, FALSE, FALSE, 0); gtk_signal_connect(GTK_OBJECT(radiobutton), "toggled", (GtkSignalFunc)spdif_input_toggled, @@ -1184,24 +1069,20 @@ static void create_spdif_input_select(GtkWidget *box) 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); gtk_box_pack_start(GTK_BOX(vbox), radiobutton, FALSE, FALSE, 0); gtk_signal_connect(GTK_OBJECT(radiobutton), "toggled", (GtkSignalFunc)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_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)"Off"); + } } @@ -1211,25 +1092,18 @@ 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); 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); gtk_box_pack_start(GTK_BOX(vbox), radiobutton, FALSE, FALSE, 0); gtk_signal_connect(GTK_OBJECT(radiobutton), "toggled", (GtkSignalFunc)phono_input_toggled, @@ -1238,14 +1112,10 @@ static void create_phono_input(GtkWidget *box) 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); 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); } static void create_input_interface(GtkWidget *box) @@ -1254,25 +1124,18 @@ 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); 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); gtk_box_pack_start(GTK_BOX(vbox), radiobutton, FALSE, FALSE, 0); gtk_signal_connect(GTK_OBJECT(radiobutton), "toggled", (GtkSignalFunc)analog_input_select_toggled, @@ -1281,7 +1144,6 @@ static void create_input_interface(GtkWidget *box) 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); gtk_box_pack_start(GTK_BOX(vbox), radiobutton, FALSE, FALSE, 0); gtk_signal_connect(GTK_OBJECT(radiobutton), "toggled", (GtkSignalFunc)analog_input_select_toggled, @@ -1290,7 +1152,6 @@ static void create_input_interface(GtkWidget *box) 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); gtk_box_pack_start(GTK_BOX(vbox), radiobutton, FALSE, FALSE, 0); gtk_signal_connect(GTK_OBJECT(radiobutton), "toggled", (GtkSignalFunc)analog_input_select_toggled, @@ -1299,14 +1160,10 @@ static void create_input_interface(GtkWidget *box) 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); 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); } static void create_hardware(GtkWidget *main, GtkWidget *notebook, int page) @@ -1322,60 +1179,54 @@ static void create_hardware(GtkWidget *main, GtkWidget *notebook, int page) GtkWidget *hseparator; hbox = gtk_hbox_new(FALSE, 0); - gtk_widget_show(hbox); 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); gtk_container_add(GTK_CONTAINER(viewport), hbox); /* Create boxes for controls */ vbox = gtk_vbox_new(FALSE, 0); - gtk_widget_show(vbox); gtk_box_pack_start(GTK_BOX(hbox), vbox, FALSE, FALSE, 6); hbox1 = gtk_hbox_new(FALSE, 0); - gtk_widget_show(hbox1); gtk_box_pack_start(GTK_BOX(vbox), hbox1, FALSE, FALSE, 0); hseparator = gtk_hseparator_new(); - gtk_widget_show(hseparator); gtk_box_pack_start(GTK_BOX(vbox), hseparator, FALSE, FALSE, 2); hbox2 = gtk_hbox_new(FALSE, 0); - gtk_widget_show(hbox2); 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); 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); } @@ -1388,56 +1239,46 @@ static void create_about(GtkWidget *main, GtkWidget *notebook, int page) GtkWidget *viewport; hbox = gtk_hbox_new(FALSE, 0); - gtk_widget_show(hbox); 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); 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); } @@ -1473,11 +1314,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 +1324,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); gtk_container_add(GTK_CONTAINER(viewport), hbox); /* create DAC */ @@ -1497,20 +1334,17 @@ 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); 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); } @@ -1518,7 +1352,6 @@ static void create_analog_volume(GtkWidget *main, GtkWidget *notebook, int page) av_dac_volume_adj[i] = adj; vscale = gtk_vscale_new(GTK_ADJUSTMENT(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", @@ -1527,7 +1360,6 @@ static void create_analog_volume(GtkWidget *main, GtkWidget *notebook, int page) 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,7 +1370,6 @@ 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)); @@ -1553,20 +1384,17 @@ 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); 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); } @@ -1574,7 +1402,6 @@ static void create_analog_volume(GtkWidget *main, GtkWidget *notebook, int page) av_adc_volume_adj[i] = adj; vscale = gtk_vscale_new(GTK_ADJUSTMENT(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); @@ -1584,7 +1411,6 @@ static void create_analog_volume(GtkWidget *main, GtkWidget *notebook, int page) 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,7 +1420,6 @@ 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)); @@ -1609,20 +1434,17 @@ 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); 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); } @@ -1630,7 +1452,6 @@ static void create_analog_volume(GtkWidget *main, GtkWidget *notebook, int page) av_ipga_volume_adj[i] = adj; vscale = gtk_vscale_new(GTK_ADJUSTMENT(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); @@ -1640,7 +1461,6 @@ static void create_analog_volume(GtkWidget *main, GtkWidget *notebook, int page) 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); } } @@ -1789,10 +1609,7 @@ static GtkWidget *toggle_button_entry(const GtkWidget *parent, const gchar *prof (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); } @@ -1817,29 +1634,24 @@ static void create_profiles(GtkWidget *main, GtkWidget *notebook, int page) gint max_digits; hbox = gtk_hbox_new(FALSE, 0); - gtk_widget_show(hbox); 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); gtk_container_add(GTK_CONTAINER(viewport), hbox); gtk_container_set_border_width(GTK_CONTAINER(hbox), 0); @@ -1853,39 +1665,32 @@ static void create_profiles(GtkWidget *main, GtkWidget *notebook, int page) 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); vbox2 = gtk_vbutton_box_new(); - gtk_widget_show(vbox2); gtk_container_border_width(GTK_CONTAINER(vbox2), 50); hbox1 = gtk_hbox_new(FALSE, 0); - gtk_widget_show(hbox1); 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_number_adj = card_button_adj; card_button = gtk_spin_button_new(GTK_ADJUSTMENT (card_button_adj), 1, 0); - gtk_widget_show(card_button); 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); 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), 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), @@ -1933,26 +1738,21 @@ static void create_outer(GtkWidget *main) /* Create digital mixer frame */ vbox = gtk_vbox_new(FALSE, 1); - gtk_widget_show(vbox); 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_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); gtk_container_add(GTK_CONTAINER(frame), vbox); hbox1 = gtk_hbox_new(FALSE, 0); - gtk_widget_show(hbox1); gtk_box_pack_start(GTK_BOX(vbox), hbox1, FALSE, FALSE, 6); drawing = gtk_drawing_area_new(); @@ -1969,26 +1769,21 @@ static void create_outer(GtkWidget *main) gtk_signal_connect(GTK_OBJECT(drawing), "configure_event", (GtkSignalFunc)level_meters_configure_event, NULL); gtk_widget_set_events(drawing, GDK_EXPOSURE_MASK); - gtk_widget_show(drawing); hbox1 = gtk_hbox_new(TRUE, 0); - gtk_widget_show(hbox1); 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_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_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", @@ -2265,7 +2060,6 @@ int main(int argc, char **argv) gtk_window_set_default_size(GTK_WINDOW(window), wwidth, 300); outerbox = gtk_hbox_new(FALSE, 3); - gtk_widget_show(outerbox); gtk_container_add(GTK_CONTAINER(window), outerbox); create_outer(outerbox); @@ -2274,7 +2068,6 @@ 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); page = 0; @@ -2310,7 +2103,7 @@ int main(int argc, char **argv) gtk_timeout_add(100, rate_reset_status_timeout_callback, NULL); - gtk_widget_show(window); + gtk_widget_show_all(window); level_meters_postinit(); mixer_postinit(); From dcf1b94682368ef8b8479b0efd1fe90f8b065bc7 Mon Sep 17 00:00:00 2001 From: Andreas Persson Date: Sat, 29 Mar 2025 07:16:31 +0100 Subject: [PATCH 58/66] envy24control: fix control callback for spdif output Update S/PDIF Output Settings GUI when settings change. Closes: https://github.com/alsa-project/alsa-tools/pull/30 Signed-off-by: Andreas Persson Signed-off-by: Jaroslav Kysela --- envy24control/driverevents.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/envy24control/driverevents.c b/envy24control/driverevents.c index 377363d..397affa 100644 --- a/envy24control/driverevents.c +++ b/envy24control/driverevents.c @@ -81,6 +81,10 @@ 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; } From 037ae73ab346511cf63e446865ea618e0d98bb54 Mon Sep 17 00:00:00 2001 From: Andreas Persson Date: Sat, 29 Mar 2025 08:28:32 +0100 Subject: [PATCH 59/66] envy24control: fix crash when using system profiles file envy24control crashed if you tried to start it with -f /etc/envy24control/profiles.conf. Closes: https://github.com/alsa-project/alsa-tools/pull/32 Signed-off-by: Andreas Persson Signed-off-by: Jaroslav Kysela --- envy24control/profiles.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/envy24control/profiles.c b/envy24control/profiles.c index 17a418c..6dbe7d1 100644 --- a/envy24control/profiles.c +++ b/envy24control/profiles.c @@ -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; } From 337768effadc01a7ea100b5c6afac5397b9bc24f Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Tue, 8 Apr 2025 15:25:44 +0200 Subject: [PATCH 60/66] github: actions - create initial build.yaml Signed-off-by: Jaroslav Kysela --- .github/workflows/build.yml | 142 ++++++++++++++++++++++++++++++++++++ 1 file changed, 142 insertions(+) create mode 100644 .github/workflows/build.yml 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 From 52e64810471910354d04527ee679688709db313b Mon Sep 17 00:00:00 2001 From: Andreas Persson Date: Sat, 29 Mar 2025 08:37:01 +0100 Subject: [PATCH 61/66] envy24control: fix file descriptor leaks in profiles File descriptors were leaked when "Save active profile" was pressed. Add the missing calls to close. Closes: https://github.com/alsa-project/alsa-tools/pull/33 Signed-off-by: Andreas Persson Signed-off-by: Jaroslav Kysela --- envy24control/profiles.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/envy24control/profiles.c b/envy24control/profiles.c index 6dbe7d1..a67ef0c 100644 --- a/envy24control/profiles.c +++ b/envy24control/profiles.c @@ -1146,13 +1146,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)) { From 65a201fed6e54d9ab7d22269d971a0afa048152a Mon Sep 17 00:00:00 2001 From: Andreas Persson Date: Sat, 29 Mar 2025 13:20:15 +0100 Subject: [PATCH 62/66] envy24control: fix memory access errors in profiles Fix two memory errors in the profiles parser: an invalid read and a "source and destination overlap in strncpy" warning. When the profiles page is initialized it fetches the profile names from the profiles file. When a profile wasn't defined in the file, the parser made invalid reads outside the buffer. Closes: https://github.com/alsa-project/alsa-tools/pull/34 Signed-off-by: Andreas Persson Signed-off-by: Jaroslav Kysela --- envy24control/profiles.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/envy24control/profiles.c b/envy24control/profiles.c index a67ef0c..9e5cde1 100644 --- a/envy24control/profiles.c +++ b/envy24control/profiles.c @@ -96,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) { @@ -472,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); From 837033a108297e0207b91a3725e811b7a67ddbe8 Mon Sep 17 00:00:00 2001 From: Andreas Persson Date: Fri, 28 Mar 2025 21:40:08 +0100 Subject: [PATCH 63/66] envy24control: fix GtkSpinButton runtime warnings Change the parameters to gtk_adjustment_new to get rid of this runtime warning from GTK: GtkSpinButton: setting an adjustment with non-zero page size is deprecated The change is also important when envy24control is ported to GTK 3, as the spin buttons will stop working if it's not done. Closes: https://github.com/alsa-project/alsa-tools/pull/31 Signed-off-by: Andreas Persson Signed-off-by: Jaroslav Kysela --- envy24control/envy24control.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/envy24control/envy24control.c b/envy24control/envy24control.c index a7e40f0..419e88a 100644 --- a/envy24control/envy24control.c +++ b/envy24control/envy24control.c @@ -665,7 +665,7 @@ static void create_volume_change(GtkWidget *box) 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_box_pack_start(GTK_BOX(hbox), spinbutton, TRUE, FALSE, 0); @@ -1677,7 +1677,7 @@ static void create_profiles(GtkWidget *main, GtkWidget *notebook, int page) 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_box_pack_start(GTK_BOX (hbox1), card_button, TRUE, FALSE, 0); From 32495631b153ced38d757006a32d91dca9a8838b Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Wed, 9 Apr 2025 11:57:26 +0200 Subject: [PATCH 64/66] hdspmixer: correct string delimiter in labels_aio_ss_input Closes: https://github.com/alsa-project/alsa-tools/issues/10 Signed-off-by: Jaroslav Kysela --- hdspmixer/src/HDSPMixerOutput.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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] = { From ddc93b66b4a26b7879af96452e32f155b4bbc0e9 Mon Sep 17 00:00:00 2001 From: Andreas Persson Date: Wed, 9 Apr 2025 12:25:09 +0200 Subject: [PATCH 65/66] envy24control: port to GTK 3 Closes: https://github.com/alsa-project/alsa-tools/pull/35 Signed-off-by: Andreas Persson Signed-off-by: Jaroslav Kysela --- envy24control/config.c | 2 +- envy24control/configure.ac | 2 +- envy24control/driverevents.c | 7 +- envy24control/envy24control.c | 725 +++++++++++++++++----------------- envy24control/envy24control.h | 16 +- envy24control/hardware.c | 19 +- envy24control/levelmeters.c | 283 +++++++------ envy24control/midi.c | 3 +- envy24control/midi.h | 2 +- envy24control/mixer.c | 8 +- envy24control/patchbay.c | 2 +- envy24control/volume.c | 6 +- 12 files changed, 541 insertions(+), 534 deletions(-) diff --git a/envy24control/config.c b/envy24control/config.c index c27cf27..f3ce2c9 100644 --- a/envy24control/config.c +++ b/envy24control/config.c @@ -47,7 +47,7 @@ void config_close() void config_set_stereo(GtkWidget *but, gpointer data) { gint i=GPOINTER_TO_INT(data); - config_stereo[i]=GTK_TOGGLE_BUTTON(but)->active; + config_stereo[i]=gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(but)); } void config_restore_stereo() 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 397affa..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: @@ -88,5 +88,6 @@ void control_input_callback(gpointer data, gint source, GdkInputCondition condit default: break; } + return TRUE; } diff --git a/envy24control/envy24control.c b/envy24control/envy24control.c index 419e88a..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; @@ -174,37 +174,35 @@ static void create_mixer_frame(GtkWidget *box, int stream) 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); + 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); + 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_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); + 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_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(""); @@ -212,51 +210,55 @@ static void create_mixer_frame(GtkWidget *box, int stream) 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_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); + 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_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_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_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), GINT_TO_POINTER(stream-1)); + g_signal_connect(toggle, "toggled", + G_CALLBACK(config_set_stereo), GINT_TO_POINTER(stream-1)); - hbox = gtk_hbox_new(TRUE, 6); + 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_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_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)); } @@ -271,7 +273,7 @@ static void create_inputs_mixer(GtkWidget *main, GtkWidget *notebook, int page) int stream; - hbox = gtk_hbox_new(FALSE, 3); + hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 3); gtk_container_add(GTK_CONTAINER(notebook), hbox); label = gtk_label_new("Monitor Inputs"); @@ -288,10 +290,10 @@ static void create_inputs_mixer(GtkWidget *main, GtkWidget *notebook, int page) viewport = gtk_viewport_new(NULL, NULL); gtk_container_add(GTK_CONTAINER(scrolledwindow), viewport); - vbox = gtk_vbox_new(FALSE, 0); + vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); gtk_container_add(GTK_CONTAINER(viewport), vbox); - hbox = gtk_hbox_new(FALSE, 0); + 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); \ @@ -316,7 +318,7 @@ static void create_pcms_mixer(GtkWidget *main, GtkWidget *notebook, int page) GtkWidget *viewport; int stream; - hbox = gtk_hbox_new(FALSE, 3); + hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 3); gtk_container_add(GTK_CONTAINER(notebook), hbox); label = gtk_label_new("Monitor PCMs"); @@ -333,10 +335,10 @@ static void create_pcms_mixer(GtkWidget *main, GtkWidget *notebook, int page) viewport = gtk_viewport_new(NULL, NULL); gtk_container_add(GTK_CONTAINER(scrolledwindow), viewport); - vbox = gtk_vbox_new(FALSE, 0); + vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); gtk_container_add(GTK_CONTAINER(viewport), vbox); - hbox = gtk_hbox_new(FALSE, 0); + 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 ++) { @@ -414,21 +416,22 @@ static void create_router_frame(GtkWidget *box, int stream, int pos) gtk_container_set_border_width(GTK_CONTAINER(frame), 6); - vbox = gtk_vbox_new(TRUE, 0); + 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)); + 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_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(""); @@ -438,12 +441,12 @@ 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)); + 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(""); @@ -451,19 +454,19 @@ static void create_router_frame(GtkWidget *box, int stream, int pos) } - hseparator = gtk_hseparator_new(); - 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)); + 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)); } } @@ -488,7 +491,7 @@ static void create_router(GtkWidget *main, GtkWidget *notebook, int page) viewport = gtk_viewport_new(NULL, NULL); gtk_container_add(GTK_CONTAINER(scrolledwindow), viewport); - hbox = gtk_hbox_new(FALSE, 0); + hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); gtk_container_add(GTK_CONTAINER(viewport), hbox); pos = 0; @@ -514,73 +517,73 @@ static void create_master_clock(GtkWidget *box) gtk_box_pack_start(GTK_BOX(box), frame, FALSE, FALSE, 4); - vbox = gtk_vbox_new(FALSE, 0); + 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)); + 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)); + 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)); + 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)); + 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)); + 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)); + 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)); + 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"); @@ -590,11 +593,11 @@ 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)); + 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; @@ -610,24 +613,25 @@ static void create_rate_state(GtkWidget *box) frame = gtk_frame_new("Rate State"); gtk_box_pack_start(GTK_BOX(box), frame, TRUE, TRUE, 0); - hbox = gtk_hbox_new(TRUE, 0); + 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_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_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"); } @@ -643,21 +647,24 @@ static void create_actual_rate(GtkWidget *box) hw_master_clock_actual_rate_label = 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_box_pack_start(GTK_BOX(box), frame, TRUE, TRUE, 0); - hbox = gtk_hbox_new(FALSE, 0); + hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); gtk_container_add(GTK_CONTAINER(frame), hbox); gtk_container_set_border_width(GTK_CONTAINER(hbox), 6); @@ -667,11 +674,12 @@ static void create_volume_change(GtkWidget *box) 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); + 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); } @@ -686,26 +694,26 @@ static void create_spdif_output_settings_profi_data(GtkWidget *box) gtk_box_pack_start(GTK_BOX(box), frame, FALSE, TRUE, 0); - vbox = gtk_vbox_new(FALSE, 0); + 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)); + 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)); + 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) @@ -719,25 +727,25 @@ static void create_spdif_output_settings_profi_stream(GtkWidget *box) gtk_box_pack_start(GTK_BOX(box), frame, FALSE, TRUE, 0); - vbox = gtk_vbox_new(FALSE, 0); + 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)); + 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)); + 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) @@ -751,42 +759,42 @@ static void create_spdif_output_settings_profi_emphasis(GtkWidget *box) gtk_box_pack_start(GTK_BOX(box), frame, FALSE, TRUE, 0); - vbox = gtk_vbox_new(FALSE, 0); + 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)); + 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)); + 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)); + 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)); + 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) @@ -795,7 +803,7 @@ static void create_spdif_output_settings_profi(GtkWidget *notebook, int page) GtkWidget *vbox; GtkWidget *label; - hbox = gtk_hbox_new(FALSE, 0); + hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); gtk_container_add(GTK_CONTAINER(notebook), hbox); label = gtk_label_new("Professional"); @@ -803,14 +811,14 @@ static void create_spdif_output_settings_profi(GtkWidget *notebook, int page) gtk_notebook_get_nth_page(GTK_NOTEBOOK(notebook), page), label); - vbox = gtk_vbox_new(FALSE, 0); + 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); + 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); @@ -827,26 +835,26 @@ static void create_spdif_output_settings_consumer_copyright(GtkWidget *box) frame = gtk_frame_new("Copyright"); gtk_box_pack_start(GTK_BOX(box), frame, FALSE, TRUE, 0); - vbox = gtk_vbox_new(FALSE, 0); + 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)); + 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)); + 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) @@ -859,26 +867,26 @@ static void create_spdif_output_settings_consumer_copy(GtkWidget *box) frame = gtk_frame_new("Copy"); gtk_box_pack_start(GTK_BOX(box), frame, FALSE, TRUE, 0); - vbox = gtk_vbox_new(FALSE, 0); + 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)); + 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)); + 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) @@ -891,25 +899,25 @@ static void create_spdif_output_settings_consumer_emphasis(GtkWidget *box) frame = gtk_frame_new("Emphasis"); gtk_box_pack_start(GTK_BOX(box), frame, FALSE, TRUE, 0); - vbox = gtk_vbox_new(FALSE, 0); + 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)); + 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)); + 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) @@ -922,41 +930,41 @@ static void create_spdif_output_settings_consumer_category(GtkWidget *box) frame = gtk_frame_new("Category"); gtk_box_pack_start(GTK_BOX(box), frame, FALSE, TRUE, 0); - vbox = gtk_vbox_new(FALSE, 0); + 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)); + 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)); + 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)); + 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)); + 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) @@ -965,7 +973,7 @@ static void create_spdif_output_settings_consumer(GtkWidget *notebook, int page) GtkWidget *hbox; GtkWidget *label; - hbox = gtk_hbox_new(FALSE, 0); + hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); gtk_container_add(GTK_CONTAINER(notebook), hbox); gtk_container_set_border_width(GTK_CONTAINER(hbox), 6); @@ -974,20 +982,20 @@ static void create_spdif_output_settings_consumer(GtkWidget *notebook, int page) gtk_notebook_get_nth_page(GTK_NOTEBOOK(notebook), page), label); - vbox = gtk_vbox_new(FALSE, 0); + 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); + 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); + 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); @@ -1008,30 +1016,30 @@ static void create_spdif_output_settings(GtkWidget *box) gtk_container_set_border_width(GTK_CONTAINER(frame), 6); - vbox = gtk_vbox_new(FALSE, 0); + 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); + 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)); + 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)); + 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(); @@ -1054,34 +1062,34 @@ static void create_spdif_input_select(GtkWidget *box) 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); + 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)); + 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)); + 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"); if (card_is_dmx6fire) { 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)); + 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)"Off"); + g_signal_connect(radiobutton, "toggled", + G_CALLBACK(spdif_input_toggled), + (gpointer)"Off"); } } @@ -1097,25 +1105,25 @@ static void create_phono_input(GtkWidget *box) 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); + 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)); + 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)); + 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"); + g_signal_connect(radiobutton, "toggled", + G_CALLBACK(phono_input_toggled), + (gpointer)"Mic"); } static void create_input_interface(GtkWidget *box) @@ -1129,41 +1137,41 @@ static void create_input_interface(GtkWidget *box) 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); + 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)); + 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)); + 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)); + 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)); + 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"); + g_signal_connect(radiobutton, "toggled", + G_CALLBACK(analog_input_select_toggled), + (gpointer)"Wave Table"); } static void create_hardware(GtkWidget *main, GtkWidget *notebook, int page) @@ -1178,7 +1186,7 @@ static void create_hardware(GtkWidget *main, GtkWidget *notebook, int page) GtkWidget *viewport; GtkWidget *hseparator; - hbox = gtk_hbox_new(FALSE, 0); + hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); gtk_container_add(GTK_CONTAINER(notebook), hbox); label = gtk_label_new("Hardware Settings"); @@ -1196,25 +1204,25 @@ static void create_hardware(GtkWidget *main, GtkWidget *notebook, int page) gtk_container_add(GTK_CONTAINER(scrolledwindow), viewport); /* Outer box */ - hbox = gtk_hbox_new(FALSE, 0); + 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); + 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); + hbox1 = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); gtk_box_pack_start(GTK_BOX(vbox), hbox1, FALSE, FALSE, 0); - hseparator = gtk_hseparator_new(); + hseparator = gtk_separator_new(GTK_ORIENTATION_HORIZONTAL); gtk_box_pack_start(GTK_BOX(vbox), hseparator, FALSE, FALSE, 2); - hbox2 = gtk_hbox_new(FALSE, 0); + 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); + vbox1 = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); gtk_box_pack_start(GTK_BOX(hbox1), vbox1, FALSE, FALSE, 20); create_rate_state(vbox1); @@ -1238,7 +1246,7 @@ static void create_about(GtkWidget *main, GtkWidget *notebook, int page) GtkWidget *scrolledwindow; GtkWidget *viewport; - hbox = gtk_hbox_new(FALSE, 0); + hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); gtk_container_add(GTK_CONTAINER(notebook), hbox); label = gtk_label_new("About"); @@ -1256,7 +1264,7 @@ static void create_about(GtkWidget *main, GtkWidget *notebook, int page) gtk_container_add(GTK_CONTAINER(scrolledwindow), viewport); - vbox = gtk_vbox_new(FALSE, 0); + vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); gtk_container_add(GTK_CONTAINER(viewport), vbox); gtk_container_set_border_width(GTK_CONTAINER(vbox), 6); @@ -1288,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; @@ -1326,7 +1334,7 @@ static void create_analog_volume(GtkWidget *main, GtkWidget *notebook, int page) viewport = gtk_viewport_new(NULL, NULL); gtk_container_add(GTK_CONTAINER(scrolledwindow), viewport); - hbox = gtk_hbox_new(FALSE, 0); + hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); gtk_container_add(GTK_CONTAINER(viewport), hbox); /* create DAC */ @@ -1338,7 +1346,7 @@ static void create_analog_volume(GtkWidget *main, GtkWidget *notebook, int page) 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); + vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); gtk_container_add(GTK_CONTAINER(frame), vbox); gtk_container_set_border_width(GTK_CONTAINER(vbox), 6); @@ -1350,13 +1358,13 @@ static void create_analog_volume(GtkWidget *main, GtkWidget *notebook, int page) 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_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; @@ -1370,12 +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_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)); } } @@ -1388,7 +1396,7 @@ static void create_analog_volume(GtkWidget *main, GtkWidget *notebook, int page) 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); + vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); gtk_container_add(GTK_CONTAINER(frame), vbox); gtk_container_set_border_width(GTK_CONTAINER(vbox), 6); @@ -1400,14 +1408,14 @@ static void create_analog_volume(GtkWidget *main, GtkWidget *notebook, int page) 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_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; @@ -1420,12 +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_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)); } } @@ -1438,7 +1446,7 @@ static void create_analog_volume(GtkWidget *main, GtkWidget *notebook, int page) 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); + vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); gtk_container_add(GTK_CONTAINER(frame), vbox); gtk_container_set_border_width(GTK_CONTAINER(vbox), 6); @@ -1450,14 +1458,14 @@ static void create_analog_volume(GtkWidget *main, GtkWidget *notebook, int page) 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_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; @@ -1491,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) { @@ -1513,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; } @@ -1532,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; } @@ -1554,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; } @@ -1591,21 +1599,21 @@ 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); @@ -1623,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; @@ -1633,7 +1641,7 @@ static void create_profiles(GtkWidget *main, GtkWidget *notebook, int page) gint max_profiles; gint max_digits; - hbox = gtk_hbox_new(FALSE, 0); + hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); gtk_container_add(GTK_CONTAINER(notebook), hbox); @@ -1651,26 +1659,25 @@ static void create_profiles(GtkWidget *main, GtkWidget *notebook, int page) viewport = gtk_viewport_new(NULL, NULL); gtk_container_add(GTK_CONTAINER(scrolledwindow), viewport); - hbox = gtk_hbox_new(FALSE, 0); + 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_container_border_width(GTK_CONTAINER(vbox1), 6); + gtk_container_set_border_width(GTK_CONTAINER(vbox1), 6); - vbox2 = gtk_vbutton_box_new(); - 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); + 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:"); @@ -1679,25 +1686,27 @@ static void create_profiles(GtkWidget *main, GtkWidget *notebook, int page) 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); + 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_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_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) { @@ -1720,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); } @@ -1737,11 +1746,12 @@ static void create_outer(GtkWidget *main) GtkWidget *drawing; /* Create digital mixer frame */ - vbox = gtk_vbox_new(FALSE, 1); + 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_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_box_pack_start(GTK_BOX(vbox), frame, FALSE, TRUE, 0); @@ -1749,10 +1759,10 @@ static void create_outer(GtkWidget *main) /* Create controls in the digital mixer frame */ - vbox = gtk_vbox_new(FALSE, 0); + vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); gtk_container_add(GTK_CONTAINER(frame), vbox); - hbox1 = gtk_hbox_new(FALSE, 0); + hbox1 = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); gtk_box_pack_start(GTK_BOX(vbox), hbox1, FALSE, FALSE, 6); drawing = gtk_drawing_area_new(); @@ -1760,55 +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); - hbox1 = gtk_hbox_new(TRUE, 0); + 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_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_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_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"); @@ -1830,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; @@ -2047,19 +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); + outerbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 3); gtk_container_add(GTK_CONTAINER(window), outerbox); create_outer(outerbox); @@ -2068,7 +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_container_add(GTK_CONTAINER(outerbox), notebook); + gtk_box_pack_start(GTK_BOX(outerbox), notebook, TRUE, TRUE, 0); page = 0; @@ -2080,27 +2083,31 @@ 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_all(window); 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 b15df56..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)); } @@ -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 5933721..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,19 +50,16 @@ static void get_levels(int idx, int *l1, int *l2) } } -static GdkGC *get_pen(int idx, int nRed, int nGreen, int nBlue) +static GdkRGBA *get_pen(int nRed, int nGreen, int nBlue) { - GdkColor *c; - GdkGC *gc; + GdkRGBA *c; - c = (GdkColor *)g_malloc(sizeof(GdkColor)); - c->red = nRed; - c->green = nGreen; - c->blue = nBlue; - gdk_color_alloc(gdk_colormap_get_system(), c); - gc = gdk_gc_new(pixmap[idx]); - gdk_gc_set_foreground(gc, c); - return gc; + c = (GdkRGBA *)g_malloc(sizeof(GdkRGBA)); + c->red = nRed / 65535.0; + c->green = nGreen / 65535.0; + c->blue = nBlue / 65535.0; + c->alpha = 1.0; + return c; } static int get_index(const gchar *name) @@ -79,7 +76,7 @@ static int get_index(const gchar *name) return result; } -static void redraw_meters(int idx, int width, int height, int level1, int level2) +static void redraw_meters(int idx, int width, int height, int level1, int level2, cairo_t *cr) { int stereo = idx == 0; int segment_width = stereo ? (width / 2) - 8 : width - 12; @@ -90,167 +87,156 @@ static void redraw_meters(int idx, int width, int height, int level1, int level2 int seg; int segs_on1 = ((segments * level1) + 128) / 255; int segs_on2 = ((segments * level2) + 128) / 255; + int end_seg; + GdkRectangle clip; // g_print("segs_on1 = %i (%i), segs_on2 = %i (%i)\n", segs_on1, level1, segs_on2, level2); - for (seg = 0; seg < green_segments; seg++) { - gdk_draw_rectangle(pixmap[idx], - segs_on1 > 0 ? penGreenLight[idx] : penGreenShadow[idx], - TRUE, - 6, 3 + ((segments - seg - 1) * 4), - segment_width, - 3); - if (stereo) - gdk_draw_rectangle(pixmap[idx], - segs_on2 > 0 ? penGreenLight[idx] : penGreenShadow[idx], - TRUE, - 2 + (width / 2), - 3 + ((segments - seg - 1) * 4), - segment_width, - 3); + cairo_rectangle(cr, 0, 0, width, height); + cairo_fill(cr); + + gdk_cairo_get_clip_rectangle(cr, &clip); + seg = segments - (clip.y + clip.height) / 4; + if (seg < 0) + seg = 0; + segs_on1 -= seg; + segs_on2 -= seg; + end_seg = segments - (clip.y - 2) / 4; + + for (; seg < green_segments && seg < end_seg; seg++) { + gdk_cairo_set_source_rgba(cr, + segs_on1 > 0 ? penGreenLight : penGreenShadow); + cairo_rectangle(cr, + 6, 3 + ((segments - seg - 1) * 4), + segment_width, + 3); + cairo_fill(cr); + if (stereo) { + gdk_cairo_set_source_rgba(cr, + segs_on2 > 0 ? penGreenLight : penGreenShadow); + cairo_rectangle(cr, + 2 + (width / 2), + 3 + ((segments - seg - 1) * 4), + segment_width, + 3); + cairo_fill(cr); + } segs_on1--; segs_on2--; } - for (seg = green_segments; seg < green_segments + orange_segments; seg++) { - gdk_draw_rectangle(pixmap[idx], - segs_on1 > 0 ? penOrangeLight[idx] : penOrangeShadow[idx], - TRUE, - 6, 3 + ((segments - seg - 1) * 4), - segment_width, - 3); - if (stereo) - gdk_draw_rectangle(pixmap[idx], - segs_on2 > 0 ? penOrangeLight[idx] : penOrangeShadow[idx], - TRUE, - 2 + (width / 2), - 3 + ((segments - seg - 1) * 4), - segment_width, - 3); + for (; seg < green_segments + orange_segments && seg < end_seg; seg++) { + gdk_cairo_set_source_rgba(cr, + segs_on1 > 0 ? penOrangeLight : penOrangeShadow); + cairo_rectangle(cr, + 6, 3 + ((segments - seg - 1) * 4), + segment_width, + 3); + cairo_fill(cr); + if (stereo) { + gdk_cairo_set_source_rgba(cr, + segs_on2 > 0 ? penOrangeLight : penOrangeShadow); + cairo_rectangle(cr, + 2 + (width / 2), + 3 + ((segments - seg - 1) * 4), + segment_width, + 3); + cairo_fill(cr); + } segs_on1--; segs_on2--; } - for (seg = green_segments + orange_segments; seg < segments; seg++) { - gdk_draw_rectangle(pixmap[idx], - segs_on1 > 0 ? penRedLight[idx] : penRedShadow[idx], - TRUE, - 6, 3 + ((segments - seg - 1) * 4), - segment_width, - 3); - if (stereo) - gdk_draw_rectangle(pixmap[idx], - segs_on2 > 0 ? penRedLight[idx] : penRedShadow[idx], - TRUE, - 2 + (width / 2), - 3 + ((segments - seg - 1) * 4), - segment_width, - 3); + for (; seg < segments && seg < end_seg; seg++) { + gdk_cairo_set_source_rgba(cr, + segs_on1 > 0 ? penRedLight : penRedShadow); + cairo_rectangle(cr, + 6, 3 + ((segments - seg - 1) * 4), + segment_width, + 3); + cairo_fill(cr); + if (stereo) { + gdk_cairo_set_source_rgba(cr, + segs_on2 > 0 ? penRedLight : penRedShadow); + cairo_rectangle(cr, + 2 + (width / 2), + 3 + ((segments - seg - 1) * 4), + segment_width, + 3); + cairo_fill(cr); + } segs_on1--; segs_on2--; } } -gint level_meters_configure_event(GtkWidget *widget, GdkEventConfigure *event) -{ - int idx = get_index(gtk_widget_get_name(widget)); - - if (pixmap[idx] != NULL) - gdk_pixmap_unref(pixmap[idx]); - pixmap[idx] = gdk_pixmap_new(widget->window, - widget->allocation.width, - widget->allocation.height, - -1); - penGreenShadow[idx] = get_pen(idx, 0, 0x77ff, 0); - penGreenLight[idx] = get_pen(idx, 0, 0xffff, 0); - penOrangeShadow[idx] = get_pen(idx, 0xddff, 0x55ff, 0); - penOrangeLight[idx] = get_pen(idx, 0xffff, 0x99ff, 0); - penRedShadow[idx] = get_pen(idx, 0xaaff, 0, 0); - penRedLight[idx] = get_pen(idx, 0xffff, 0, 0); - gdk_draw_rectangle(pixmap[idx], - widget->style->black_gc, - TRUE, - 0, 0, - widget->allocation.width, - widget->allocation.height); - // g_print("configure: %i:%i\n", widget->allocation.width, widget->allocation.height); - redraw_meters(idx, widget->allocation.width, widget->allocation.height, 0, 0); - return TRUE; -} - -gint level_meters_expose_event(GtkWidget *widget, GdkEventExpose *event) +gboolean level_meters_draw_callback(GtkWidget *widget, cairo_t *cr, gpointer data) { int idx = get_index(gtk_widget_get_name(widget)); int l1, l2; get_levels(idx, &l1, &l2); - redraw_meters(idx, widget->allocation.width, widget->allocation.height, l1, l2); - gdk_draw_pixmap(widget->window, - widget->style->black_gc, - pixmap[idx], - event->area.x, event->area.y, - event->area.x, event->area.y, - event->area.width, event->area.height); + redraw_meters(idx, gtk_widget_get_allocated_width(widget), gtk_widget_get_allocated_height(widget), l1, l2, cr); return FALSE; } +static void update_meter(int idx) +{ + int stereo = idx == 0; + GtkWidget *widget = stereo ? mixer_mix_drawing : mixer_drawing[idx - 1]; + int width = gtk_widget_get_allocated_width(widget); + int height = gtk_widget_get_allocated_height(widget); + int segments = (height - 6) / 4; + int level_idx = stereo ? 20 : idx - 1; + int l1, l2, segs_on, old_segs_on, h; + + get_levels(idx, &l1, &l2); + segs_on = ((segments * l1) + 128) / 255; + old_segs_on = ((segments * level[level_idx]) + 128) / 255; + h = abs(old_segs_on - segs_on); + level[level_idx] = l1; + + if (h > 0) { + int y = segments - MAX(old_segs_on, segs_on); + gtk_widget_queue_draw_area(widget, + 6, 4 * y + 3, + stereo ? (width / 2) - 8 : width - 12, + 4 * h - 1); + } + + if (stereo) { + level_idx++; + segs_on = ((segments * l2) + 128) / 255; + old_segs_on = ((segments * level[level_idx]) + 128) / 255; + h = abs(old_segs_on - segs_on); + level[level_idx] = l2; + + if (h > 0) { + int y = segments - MAX(old_segs_on, segs_on); + gtk_widget_queue_draw_area(widget, + 2 + (width / 2), 4 * y + 3, + (width / 2) - 8, + 4 * h - 1); + } + } +} + gint level_meters_timeout_callback(gpointer data) { - GtkWidget *widget; - int idx, l1, l2; + int idx; update_peak_switch(); for (idx = 0; idx <= pcm_output_channels; idx++) { - get_levels(idx, &l1, &l2); - widget = idx == 0 ? mixer_mix_drawing : mixer_drawing[idx-1]; - if (GTK_WIDGET_VISIBLE(widget) && (pixmap[idx] != NULL)) { - redraw_meters(idx, widget->allocation.width, widget->allocation.height, l1, l2); - gdk_draw_pixmap(widget->window, - widget->style->black_gc, - pixmap[idx], - 0, 0, - 0, 0, - widget->allocation.width, widget->allocation.height); - } + update_meter(idx); } if (view_spdif_playback) { for (idx = MAX_PCM_OUTPUT_CHANNELS + 1; idx <= MAX_OUTPUT_CHANNELS + spdif_channels; idx++) { - get_levels(idx, &l1, &l2); - widget = idx == 0 ? mixer_mix_drawing : mixer_drawing[idx-1]; - if (GTK_WIDGET_VISIBLE(widget) && (pixmap[idx] != NULL)) { - redraw_meters(idx, widget->allocation.width, widget->allocation.height, l1, l2); - gdk_draw_pixmap(widget->window, - widget->style->black_gc, - pixmap[idx], - 0, 0, - 0, 0, - widget->allocation.width, widget->allocation.height); - } + update_meter(idx); } } for (idx = MAX_PCM_OUTPUT_CHANNELS + MAX_SPDIF_CHANNELS + 1; idx <= input_channels + MAX_PCM_OUTPUT_CHANNELS + MAX_SPDIF_CHANNELS; idx++) { - get_levels(idx, &l1, &l2); - widget = idx == 0 ? mixer_mix_drawing : mixer_drawing[idx-1]; - if (GTK_WIDGET_VISIBLE(widget) && (pixmap[idx] != NULL)) { - redraw_meters(idx, widget->allocation.width, widget->allocation.height, l1, l2); - gdk_draw_pixmap(widget->window, - widget->style->black_gc, - pixmap[idx], - 0, 0, - 0, 0, - widget->allocation.width, widget->allocation.height); - } + update_meter(idx); } for (idx = MAX_PCM_OUTPUT_CHANNELS + MAX_SPDIF_CHANNELS + MAX_INPUT_CHANNELS + 1; \ idx <= spdif_channels + MAX_PCM_OUTPUT_CHANNELS + MAX_SPDIF_CHANNELS + MAX_INPUT_CHANNELS; idx++) { - get_levels(idx, &l1, &l2); - widget = idx == 0 ? mixer_mix_drawing : mixer_drawing[idx-1]; - if (GTK_WIDGET_VISIBLE(widget) && (pixmap[idx] != NULL)) { - redraw_meters(idx, widget->allocation.width, widget->allocation.height, l1, l2); - gdk_draw_pixmap(widget->window, - widget->style->black_gc, - pixmap[idx], - 0, 0, - 0, 0, - widget->allocation.width, widget->allocation.height); - } + update_meter(idx); } return TRUE; } @@ -270,6 +256,13 @@ void level_meters_init(void) /* older ALSA driver, using MIXER type */ snd_ctl_elem_value_set_interface(peaks, SND_CTL_ELEM_IFACE_MIXER); + + penGreenShadow = get_pen(0, 0x77ff, 0); + penGreenLight = get_pen(0, 0xffff, 0); + penOrangeShadow = get_pen(0xddff, 0x55ff, 0); + penOrangeLight = get_pen(0xffff, 0x99ff, 0); + penRedShadow = get_pen(0xaaff, 0, 0); + penRedLight = get_pen(0xffff, 0, 0); } void level_meters_postinit(void) 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/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/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); From 187eeecd1442a3f867bc62c19ff3d950163dac43 Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Mon, 14 Apr 2025 10:26:23 +0200 Subject: [PATCH 66/66] Release v1.2.14 Signed-off-by: Jaroslav Kysela --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 \