Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:rodrigomoya:pulseaudio
alsa
alsa-lib-hg-fixes.diff
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File alsa-lib-hg-fixes.diff of Package alsa
diff -r b1dfac5a4d55 configure.in --- a/configure.in Tue Feb 05 10:08:09 2008 +0100 +++ b/configure.in Fri Mar 14 14:12:33 2008 +0100 @@ -575,8 +575,8 @@ if test ! -L "$srcdir"/include/alsa ; th ln -sf . "$srcdir"/include/alsa fi -AC_OUTPUT(Makefile doc/Makefile doc/pictures/Makefile include/Makefile - include/sound/Makefile src/Versions src/Makefile \ +AC_OUTPUT(Makefile doc/Makefile doc/pictures/Makefile doc/doxygen.cfg \ + include/Makefile include/sound/Makefile src/Versions src/Makefile \ src/control/Makefile src/mixer/Makefile \ src/pcm/Makefile src/pcm/scopes/Makefile \ src/rawmidi/Makefile src/timer/Makefile \ diff -r b1dfac5a4d55 doc/Makefile.am --- a/doc/Makefile.am Tue Feb 05 10:08:09 2008 +0100 +++ b/doc/Makefile.am Fri Mar 14 14:12:33 2008 +0100 @@ -5,6 +5,7 @@ INCLUDES=-I$(top_srcdir)/include INCLUDES=-I$(top_srcdir)/include doc: + test -e doxygen.cfg || sed s:@top_srcdir@:..:g doxygen.cfg.in > doxygen.cfg doxygen doxygen.cfg doc-pack: doc diff -r b1dfac5a4d55 doc/doxygen.cfg --- a/doc/doxygen.cfg Tue Feb 05 10:08:09 2008 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,119 +0,0 @@ -PROJECT_NAME = "ALSA project - the C library reference" -OUTPUT_DIRECTORY = doxygen -GENERATE_LATEX = NO -GENERATE_MAN = NO -GENERATE_RTF = NO - -CASE_SENSE_NAMES = NO -INPUT = index.doxygen \ - ../include/asoundlib.h \ - ../include/version.h \ - ../include/global.h \ - ../include/asoundef.h \ - ../include/input.h \ - ../include/output.h \ - ../include/error.h \ - ../include/conf.h \ - ../include/control.h \ - ../include/pcm.h \ - ../include/rawmidi.h \ - ../include/timer.h \ - ../include/hwdep.h \ - ../include/seq.h \ - ../include/seq_event.h \ - ../include/seqmid.h \ - ../include/seq_midi_event.h \ - ../include/pcm_external.h \ - ../include/pcm_extplug.h \ - ../include/pcm_ioplug.h \ - ../include/control_external.h \ - ../include/mixer.h \ - ../src/error.c \ - ../src/dlmisc.c \ - ../src/async.c \ - ../src/input.c \ - ../src/output.c \ - ../src/conf.c \ - ../src/confmisc.c \ - ../src/names.c \ - ../src/shmarea.c \ - ../src/userfile.c \ - ../src/control \ - ../src/mixer \ - ../src/pcm/pcm.c \ - ../src/pcm/pcm_mmap.c \ - ../src/pcm/pcm_plugin.c \ - ../src/pcm/pcm_hw.c \ - ../src/pcm/pcm_mmap_emul.c \ - ../src/pcm/pcm_shm.c \ - ../src/pcm/pcm_null.c \ - ../src/pcm/pcm_copy.c \ - ../src/pcm/pcm_linear.c \ - ../src/pcm/pcm_lfloat.c \ - ../src/pcm/pcm_mulaw.c \ - ../src/pcm/pcm_alaw.c \ - ../src/pcm/pcm_adpcm.c \ - ../src/pcm/pcm_route.c \ - ../src/pcm/pcm_rate.c \ - ../src/pcm/pcm_plug.c \ - ../src/pcm/pcm_file.c \ - ../src/pcm/pcm_multi.c \ - ../src/pcm/pcm_share.c \ - ../src/pcm/pcm_hooks.c \ - ../src/pcm/pcm_dmix.c \ - ../src/pcm/pcm_dshare.c \ - ../src/pcm/pcm_dsnoop.c \ - ../src/pcm/pcm_meter.c \ - ../src/pcm/pcm_ladspa.c \ - ../src/pcm/pcm_asym.c \ - ../src/pcm/pcm_iec958.c \ - ../src/pcm/pcm_softvol.c \ - ../src/pcm/pcm_extplug.c \ - ../src/pcm/pcm_ioplug.c \ - ../src/pcm/pcm_empty.c \ - ../src/pcm/pcm_misc.c \ - ../src/pcm/pcm_simple.c \ - ../src/rawmidi \ - ../src/timer \ - ../src/hwdep \ - ../src/seq -EXCLUDE = ../src/control/control_local.h \ - ../src/pcm/atomic.h \ - ../src/pcm/interval.h \ - ../src/pcm/interval_inline.h \ - ../src/pcm/mask.h \ - ../src/pcm/mask_inline.h \ - ../src/pcm/pcm_local.h \ - ../src/pcm/pcm_meter.h \ - ../src/pcm/pcm_plugin.h \ - ../src/pcm/plugin_ops.h \ - ../src/pcm/ladspa.h \ - ../src/hwdep/hwdep_local.h \ - ../src/mixer/mixer_local.h \ - ../src/rawmidi/rawmidi_local.h \ - ../src/seq/seq_local.h -RECURSIVE = YES -FILE_PATTERNS = *.c *.h -EXAMPLE_PATH = ../test -IMAGE_PATH = pictures -QUIET = YES - -EXTRACT_ALL = NO -EXTRACT_STATIC = NO -SHOW_INCLUDE_FILES = NO -JAVADOC_AUTOBRIEF = NO -INHERIT_DOCS = YES -ENABLED_SECTIONS = "" -MACRO_EXPANSION = YES -EXPAND_ONLY_PREDEF = YES -PREDEFINED = DOXYGEN PIC "DOC_HIDDEN" \ - "ATTRIBUTE_UNUSED=" \ - ALSA_PCM_NEW_HW_PARAMS_API \ - _POSIX_C_SOURCE \ - "use_default_symbol_version(x,y,z)=" \ - "link_warning(x,y)=" - -OPTIMIZE_OUTPUT_FOR_C = YES # doxygen 1.2.6 option - -#INPUT_FILTER = inputfilter -#FILTER_SOURCE_FILES = YES diff -r b1dfac5a4d55 doc/doxygen.cfg.in --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/doc/doxygen.cfg.in Fri Mar 14 14:12:33 2008 +0100 @@ -0,0 +1,119 @@ +PROJECT_NAME = "ALSA project - the C library reference" +OUTPUT_DIRECTORY = doxygen +GENERATE_LATEX = NO +GENERATE_MAN = NO +GENERATE_RTF = NO + +CASE_SENSE_NAMES = NO +INPUT = @top_srcdir@/doc/index.doxygen \ + @top_srcdir@/include/asoundlib.h \ + @top_srcdir@/include/version.h \ + @top_srcdir@/include/global.h \ + @top_srcdir@/include/asoundef.h \ + @top_srcdir@/include/input.h \ + @top_srcdir@/include/output.h \ + @top_srcdir@/include/error.h \ + @top_srcdir@/include/conf.h \ + @top_srcdir@/include/control.h \ + @top_srcdir@/include/pcm.h \ + @top_srcdir@/include/rawmidi.h \ + @top_srcdir@/include/timer.h \ + @top_srcdir@/include/hwdep.h \ + @top_srcdir@/include/seq.h \ + @top_srcdir@/include/seq_event.h \ + @top_srcdir@/include/seqmid.h \ + @top_srcdir@/include/seq_midi_event.h \ + @top_srcdir@/include/pcm_external.h \ + @top_srcdir@/include/pcm_extplug.h \ + @top_srcdir@/include/pcm_ioplug.h \ + @top_srcdir@/include/control_external.h \ + @top_srcdir@/include/mixer.h \ + @top_srcdir@/src/error.c \ + @top_srcdir@/src/dlmisc.c \ + @top_srcdir@/src/async.c \ + @top_srcdir@/src/input.c \ + @top_srcdir@/src/output.c \ + @top_srcdir@/src/conf.c \ + @top_srcdir@/src/confmisc.c \ + @top_srcdir@/src/names.c \ + @top_srcdir@/src/shmarea.c \ + @top_srcdir@/src/userfile.c \ + @top_srcdir@/src/control \ + @top_srcdir@/src/mixer \ + @top_srcdir@/src/pcm/pcm.c \ + @top_srcdir@/src/pcm/pcm_mmap.c \ + @top_srcdir@/src/pcm/pcm_plugin.c \ + @top_srcdir@/src/pcm/pcm_hw.c \ + @top_srcdir@/src/pcm/pcm_mmap_emul.c \ + @top_srcdir@/src/pcm/pcm_shm.c \ + @top_srcdir@/src/pcm/pcm_null.c \ + @top_srcdir@/src/pcm/pcm_copy.c \ + @top_srcdir@/src/pcm/pcm_linear.c \ + @top_srcdir@/src/pcm/pcm_lfloat.c \ + @top_srcdir@/src/pcm/pcm_mulaw.c \ + @top_srcdir@/src/pcm/pcm_alaw.c \ + @top_srcdir@/src/pcm/pcm_adpcm.c \ + @top_srcdir@/src/pcm/pcm_route.c \ + @top_srcdir@/src/pcm/pcm_rate.c \ + @top_srcdir@/src/pcm/pcm_plug.c \ + @top_srcdir@/src/pcm/pcm_file.c \ + @top_srcdir@/src/pcm/pcm_multi.c \ + @top_srcdir@/src/pcm/pcm_share.c \ + @top_srcdir@/src/pcm/pcm_hooks.c \ + @top_srcdir@/src/pcm/pcm_dmix.c \ + @top_srcdir@/src/pcm/pcm_dshare.c \ + @top_srcdir@/src/pcm/pcm_dsnoop.c \ + @top_srcdir@/src/pcm/pcm_meter.c \ + @top_srcdir@/src/pcm/pcm_ladspa.c \ + @top_srcdir@/src/pcm/pcm_asym.c \ + @top_srcdir@/src/pcm/pcm_iec958.c \ + @top_srcdir@/src/pcm/pcm_softvol.c \ + @top_srcdir@/src/pcm/pcm_extplug.c \ + @top_srcdir@/src/pcm/pcm_ioplug.c \ + @top_srcdir@/src/pcm/pcm_empty.c \ + @top_srcdir@/src/pcm/pcm_misc.c \ + @top_srcdir@/src/pcm/pcm_simple.c \ + @top_srcdir@/src/rawmidi \ + @top_srcdir@/src/timer \ + @top_srcdir@/src/hwdep \ + @top_srcdir@/src/seq +EXCLUDE = @top_srcdir@/src/control/control_local.h \ + @top_srcdir@/src/pcm/atomic.h \ + @top_srcdir@/src/pcm/interval.h \ + @top_srcdir@/src/pcm/interval_inline.h \ + @top_srcdir@/src/pcm/mask.h \ + @top_srcdir@/src/pcm/mask_inline.h \ + @top_srcdir@/src/pcm/pcm_local.h \ + @top_srcdir@/src/pcm/pcm_meter.h \ + @top_srcdir@/src/pcm/pcm_plugin.h \ + @top_srcdir@/src/pcm/plugin_ops.h \ + @top_srcdir@/src/pcm/ladspa.h \ + @top_srcdir@/src/hwdep/hwdep_local.h \ + @top_srcdir@/src/mixer/mixer_local.h \ + @top_srcdir@/src/rawmidi/rawmidi_local.h \ + @top_srcdir@/src/seq/seq_local.h +RECURSIVE = YES +FILE_PATTERNS = *.c *.h +EXAMPLE_PATH = @top_srcdir@/test +IMAGE_PATH = pictures +QUIET = YES + +EXTRACT_ALL = NO +EXTRACT_STATIC = NO +SHOW_INCLUDE_FILES = NO +JAVADOC_AUTOBRIEF = NO +INHERIT_DOCS = YES +ENABLED_SECTIONS = "" +MACRO_EXPANSION = YES +EXPAND_ONLY_PREDEF = YES +PREDEFINED = DOXYGEN PIC "DOC_HIDDEN" \ + "ATTRIBUTE_UNUSED=" \ + ALSA_PCM_NEW_HW_PARAMS_API \ + _POSIX_C_SOURCE \ + "use_default_symbol_version(x,y,z)=" \ + "link_warning(x,y)=" + +OPTIMIZE_OUTPUT_FOR_C = YES # doxygen 1.2.6 option + +#INPUT_FILTER = inputfilter +#FILTER_SOURCE_FILES = YES diff -r b1dfac5a4d55 include/asoundef.h --- a/include/asoundef.h Tue Feb 05 10:08:09 2008 +0100 +++ b/include/asoundef.h Fri Mar 14 14:12:33 2008 +0100 @@ -121,6 +121,14 @@ extern "C" { #define IEC958_AES3_CON_CLOCK_1000PPM (0<<4) /**< 1000 ppm */ #define IEC958_AES3_CON_CLOCK_50PPM (1<<4) /**< 50 ppm */ #define IEC958_AES3_CON_CLOCK_VARIABLE (2<<4) /**< variable pitch */ +#define IEC958_AES4_CON_MAX_WORDLEN_24 (1<<0) /**< 0 = 20-bit, 1 = 24-bit */ +#define IEC958_AES4_CON_WORDLEN (7<<1) /**< mask - sample word length */ +#define IEC958_AES4_CON_WORDLEN_NOTID (0<<1) /**< not indicated */ +#define IEC958_AES4_CON_WORDLEN_20_16 (1<<1) /**< 20-bit or 16-bit */ +#define IEC958_AES4_CON_WORDLEN_22_18 (2<<1) /**< 22-bit or 18-bit */ +#define IEC958_AES4_CON_WORDLEN_23_19 (4<<1) /**< 23-bit or 19-bit */ +#define IEC958_AES4_CON_WORDLEN_24_20 (5<<1) /**< 24-bit or 20-bit */ +#define IEC958_AES4_CON_WORDLEN_21_17 (6<<1) /**< 21-bit or 17-bit */ /** \} */ diff -r b1dfac5a4d55 include/iatomic.h --- a/include/iatomic.h Tue Feb 05 10:08:09 2008 +0100 +++ b/include/iatomic.h Fri Mar 14 14:12:33 2008 +0100 @@ -1010,6 +1010,75 @@ static __inline__ void atomic_clear_mask #endif /* __arm__ */ +#ifdef __sh__ + +typedef struct { volatile int counter; } atomic_t; + +#define ATOMIC_INIT(i) { (i) } + +#define atomic_read(v) ((v)->counter) +#define atomic_set(v,i) (((v)->counter) = (i)) + +#define atomic_dec_return(v) atomic_sub_return(1,(v)) +#define atomic_inc_return(v) atomic_add_return(1,(v)) + +#define atomic_sub_and_test(i,v) (atomic_sub_return((i), (v)) == 0) +#define atomic_dec_and_test(v) (atomic_sub_return(1, (v)) == 0) +#define atomic_inc_and_test(v) (atomic_add_return(1, (v)) != 0) + +#define atomic_add(i,v) atomic_add_return((i),(v)) +#define atomic_sub(i,v) atomic_sub_return((i),(v)) +#define atomic_inc(v) atomic_add(1,(v)) +#define atomic_dec(v) atomic_sub(1,(v)) + +static __inline__ int atomic_add_return(int i, volatile atomic_t *v) +{ + int result; + + asm volatile ( + " .align 2\n" + " mova 99f, r0\n" + " mov r15, r1\n" + " mov #-6, r15\n" + " mov.l @%2, %0\n" + " add %1, %0\n" + " mov.l %0, @%2\n" + "99: mov r1, r15" + : "=&r"(result) + : "r"(i), "r"(v) + : "r0", "r1"); + + return result; +} + +static __inline__ int atomic_sub_return(int i, volatile atomic_t *v) +{ + int result; + + asm volatile ( + " .align 2\n" + " mova 99f, r0\n" + " mov r15, r1\n" + " mov #-6, r15\n" + " mov.l @%2, %0\n" + " sub %1, %0\n" + " mov.l %0, @%2\n" + "99: mov r1, r15" + : "=&r"(result) + : "r"(i), "r"(v) + : "r0", "r1"); + + return result; +} + +#define mb() __asm__ __volatile__ ("" : : : "memory") +#define rmb() mb() +#define wmb() mb() + +#define IATOMIC_DEFINED 1 + +#endif /* __sh__ */ + #ifndef IATOMIC_DEFINED /* * non supported architecture. diff -r b1dfac5a4d55 include/pcm.h --- a/include/pcm.h Tue Feb 05 10:08:09 2008 +0100 +++ b/include/pcm.h Fri Mar 14 14:12:33 2008 +0100 @@ -1105,6 +1105,8 @@ int snd_pcm_sw_params_get_xfer_align(con int snd_pcm_sw_params_get_xfer_align(const snd_pcm_sw_params_t *params, snd_pcm_uframes_t *val) __attribute__((deprecated)); int snd_pcm_sw_params_set_sleep_min(snd_pcm_t *pcm, snd_pcm_sw_params_t *params, unsigned int val) __attribute__((deprecated)); int snd_pcm_sw_params_get_sleep_min(const snd_pcm_sw_params_t *params, unsigned int *val) __attribute__((deprecated)); +#endif /* !ALSA_LIBRARY_BUILD && !ALSA_PCM_OLD_SW_PARAMS_API */ +#if !defined(ALSA_LIBRARY_BUILD) && !defined(ALSA_PCM_OLD_HW_PARAMS_API) int snd_pcm_hw_params_get_tick_time(const snd_pcm_hw_params_t *params, unsigned int *val, int *dir) __attribute__((deprecated)); int snd_pcm_hw_params_get_tick_time_min(const snd_pcm_hw_params_t *params, unsigned int *val, int *dir) __attribute__((deprecated)); int snd_pcm_hw_params_get_tick_time_max(const snd_pcm_hw_params_t *params, unsigned int *val, int *dir) __attribute__((deprecated)); @@ -1116,7 +1118,7 @@ int snd_pcm_hw_params_set_tick_time_near int snd_pcm_hw_params_set_tick_time_near(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *val, int *dir) __attribute__((deprecated)); int snd_pcm_hw_params_set_tick_time_first(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *val, int *dir) __attribute__((deprecated)); int snd_pcm_hw_params_set_tick_time_last(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *val, int *dir) __attribute__((deprecated)); -#endif /* !ALSA_LIBRARY_BUILD && !ALSA_PCM_OLD_SW_PARAMS_API */ +#endif /* !ALSA_LIBRARY_BUILD && !ALSA_PCM_OLD_HW_PARAMS_API */ /** \} */ diff -r b1dfac5a4d55 include/seq.h --- a/include/seq.h Tue Feb 05 10:08:09 2008 +0100 +++ b/include/seq.h Fri Mar 14 14:12:33 2008 +0100 @@ -152,6 +152,11 @@ void snd_seq_client_info_set_broadcast_f void snd_seq_client_info_set_broadcast_filter(snd_seq_client_info_t *info, int val); void snd_seq_client_info_set_error_bounce(snd_seq_client_info_t *info, int val); void snd_seq_client_info_set_event_filter(snd_seq_client_info_t *info, unsigned char *filter); + +void snd_seq_client_info_event_filter_clear(snd_seq_client_info_t *info); +void snd_seq_client_info_event_filter_add(snd_seq_client_info_t *info, int event_type); +void snd_seq_client_info_event_filter_del(snd_seq_client_info_t *info, int event_type); +int snd_seq_client_info_event_filter_check(snd_seq_client_info_t *info, int event_type); int snd_seq_get_client_info(snd_seq_t *handle, snd_seq_client_info_t *info); int snd_seq_get_any_client_info(snd_seq_t *handle, int client, snd_seq_client_info_t *info); @@ -575,6 +580,7 @@ int snd_seq_remove_events(snd_seq_t *han */ void snd_seq_set_bit(int nr, void *array); +void snd_seq_unset_bit(int nr, void *array); int snd_seq_change_bit(int nr, void *array); int snd_seq_get_bit(int nr, void *array); diff -r b1dfac5a4d55 include/sound/asound.h --- a/include/sound/asound.h Tue Feb 05 10:08:09 2008 +0100 +++ b/include/sound/asound.h Fri Mar 14 14:12:33 2008 +0100 @@ -59,6 +59,7 @@ #ifndef __KERNEL__ #include <sys/time.h> #include <sys/types.h> +#include <sys/ioctl.h> #endif /* diff -r b1dfac5a4d55 modules/mixer/simple/Makefile.am --- a/modules/mixer/simple/Makefile.am Tue Feb 05 10:08:09 2008 +0100 +++ b/modules/mixer/simple/Makefile.am Fri Mar 14 14:12:33 2008 +0100 @@ -1,4 +1,5 @@ pkglibdir = @ALSA_PLUGIN_DIR@/smixer -pkglibdir = @ALSA_PLUGIN_DIR@/smixer +alsaplugindir = @ALSA_PLUGIN_DIR@ +pkglibdir = $(alsaplugindir)/smixer pythonlibs = @PYTHON_LIBS@ pythonincludes = @PYTHON_INCLUDES@ diff -r b1dfac5a4d55 src/conf/Makefile.am --- a/src/conf/Makefile.am Tue Feb 05 10:08:09 2008 +0100 +++ b/src/conf/Makefile.am Fri Mar 14 14:12:33 2008 +0100 @@ -10,5 +10,6 @@ endif EXTRA_DIST = $(cfg_files) -alsadir = @ALSA_CONFIG_DIR@ +alsaconfigdir = @ALSA_CONFIG_DIR@ +alsadir = $(alsaconfigdir) alsa_DATA = $(cfg_files) diff -r b1dfac5a4d55 src/conf/alsa.conf --- a/src/conf/alsa.conf Tue Feb 05 10:08:09 2008 +0100 +++ b/src/conf/alsa.conf Fri Mar 14 14:12:33 2008 +0100 @@ -95,6 +95,8 @@ defaults.pcm.iec958.device defaults.pcm. defaults.pcm.iec958.device defaults.pcm.device defaults.pcm.modem.card defaults.pcm.card defaults.pcm.modem.device defaults.pcm.device +# truncate files via file or tee PCM +defaults.pcm.file_truncate true defaults.rawmidi.card 0 defaults.rawmidi.device 0 defaults.rawmidi.subdevice -1 @@ -125,6 +127,7 @@ pcm.surround71 cards.pcm.surround71 pcm.surround71 cards.pcm.surround71 pcm.iec958 cards.pcm.iec958 pcm.spdif iec958 +pcm.hdmi cards.pcm.hdmi pcm.dmix cards.pcm.dmix pcm.dsnoop cards.pcm.dsnoop pcm.modem cards.pcm.modem @@ -269,6 +272,10 @@ pcm.tee { slave.pcm $SLAVE file $FILE format $FORMAT + truncate { + @func refer + name defaults.pcm.file_truncate + } } pcm.file { @@ -284,6 +291,10 @@ pcm.file { slave.pcm null file $FILE format $FORMAT + truncate { + @func refer + name defaults.pcm.file_truncate + } } pcm.null { diff -r b1dfac5a4d55 src/conf/cards/HDA-Intel.conf --- a/src/conf/cards/HDA-Intel.conf Tue Feb 05 10:08:09 2008 +0100 +++ b/src/conf/cards/HDA-Intel.conf Fri Mar 14 14:12:33 2008 +0100 @@ -137,6 +137,51 @@ HDA-Intel.pcm.iec958.0 { hint.device 1 } +<confdir:pcm/hdmi.conf> + +HDA-Intel.pcm.hdmi.0 { + @args [ CARD AES0 AES1 AES2 AES3 ] + @args.CARD { + type string + } + @args.AES0 { + type integer + } + @args.AES1 { + type integer + } + @args.AES2 { + type integer + } + @args.AES3 { + type integer + } + type hooks + slave.pcm { + type hw + card $CARD + device 3 + } + hooks.0 { + type ctl_elems + hook_args [ + { + name "IEC958 Playback Default" + lock true + preserve true + value [ $AES0 $AES1 $AES2 $AES3 ] + } + { + name "IEC958 Playback Switch" + lock true + preserve true + value true + } + ] + } + hint.device 3 +} + <confdir:pcm/modem.conf> HDA-Intel.pcm.modem.0 { diff -r b1dfac5a4d55 src/conf/cards/Makefile.am --- a/src/conf/cards/Makefile.am Tue Feb 05 10:08:09 2008 +0100 +++ b/src/conf/cards/Makefile.am Fri Mar 14 14:12:33 2008 +0100 @@ -1,4 +1,5 @@ alsadir = @ALSA_CONFIG_DIR@/cards -alsadir = @ALSA_CONFIG_DIR@/cards +alsaconfigdir = @ALSA_CONFIG_DIR@ +alsadir = $(alsaconfigdir)/cards cfg_files = aliases.conf \ AACI.conf \ ATIIXP.conf \ @@ -58,7 +59,7 @@ alsa_DATA = $(cfg_files) alsa_DATA = $(cfg_files) if BUILD_ALISP -SI7018dir = @ALSA_CONFIG_DIR@/cards/SI7018 +SI7018dir = $(alsaconfigdir)/cards/SI7018 SI7018_files = \ SI7018/sndoc-mixer.alisp \ SI7018/sndop-mixer.alisp diff -r b1dfac5a4d55 src/conf/cards/NFORCE.conf --- a/src/conf/cards/NFORCE.conf Tue Feb 05 10:08:09 2008 +0100 +++ b/src/conf/cards/NFORCE.conf Fri Mar 14 14:12:33 2008 +0100 @@ -171,6 +171,79 @@ NFORCE.pcm.surround51.0 { } } +<confdir:pcm/surround71.conf> + +NFORCE.pcm.surround71.0 { + @args [ CARD ] + @args.CARD { + type string + } + type softvol + slave.pcm { + type route + ttable.0.0 1 + ttable.1.1 1 + ttable.2.4 1 + ttable.3.5 1 + ttable.4.2 1 + ttable.5.3 1 + ttable.6.6 1 + ttable.7.7 1 + slave.pcm { + type hooks + slave.pcm { + type hw + card $CARD + device 0 + } + hooks.0 { + type ctl_elems + hook_args [ + { + name "Channel Mode" + preserve true + value "8ch" + lock true + optional true + } + # for old drivers + { + name "Line-In As Surround" + preserve true + value true + optional true + } + { + name "Mic As Center/LFE" + preserve true + value true + optional true + } + { + name "Surround Down Mix" + preserve true + value off + lock true + optional true + } + { + name "Center/LFE Down Mix" + preserve true + value off + lock true + optional true + } + ] + } + } + slave.channels 8 + } + control { + name "PCM Playback Volume" + card $CARD + } +} + <confdir:pcm/iec958.conf> NFORCE.pcm.iec958.0 { diff -r b1dfac5a4d55 src/conf/pcm/Makefile.am --- a/src/conf/pcm/Makefile.am Tue Feb 05 10:08:09 2008 +0100 +++ b/src/conf/pcm/Makefile.am Fri Mar 14 14:12:33 2008 +0100 @@ -1,11 +1,12 @@ cfg_files = default.conf front.conf rear cfg_files = default.conf front.conf rear.conf center_lfe.conf side.conf\ surround40.conf surround41.conf \ surround50.conf surround51.conf \ - surround71.conf iec958.conf modem.conf \ + surround71.conf iec958.conf hdmi.conf modem.conf \ dmix.conf dsnoop.conf \ dpl.conf EXTRA_DIST = $(cfg_files) -alsadir = @ALSA_CONFIG_DIR@/pcm +alsaconfigdir = @ALSA_CONFIG_DIR@ +alsadir = $(alsaconfigdir)/pcm alsa_DATA = $(cfg_files) diff -r b1dfac5a4d55 src/conf/pcm/hdmi.conf --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/conf/pcm/hdmi.conf Fri Mar 14 14:12:33 2008 +0100 @@ -0,0 +1,83 @@ +# +# Hardware output from HDMI +# + +pcm.!hdmi { + @args [ CARD DEV AES0 AES1 AES2 AES3 ] + @args.CARD { + type string + default { + @func getenv + vars [ + ALSA_IEC958_CARD + ALSA_PCM_CARD + ALSA_CARD + ] + default { + @func refer + name defaults.pcm.iec958.card + } + } + } + @args.DEV { + type integer + default { + @func igetenv + vars [ + ALSA_IEC958_DEVICE + ] + default { + @func refer + name defaults.pcm.iec958.device + } + } + } + @args.AES0 { + type integer + # consumer, not-copyright, emphasis-none, mode=0 + default 0x04 + } + @args.AES1 { + type integer + # original, PCM coder + default 0x82 + } + @args.AES2 { + type integer + # source and channel + default 0x00 + } + @args.AES3 { + type integer + # fs=48000Hz, clock accuracy=1000ppm + default 0x02 + } + type empty + slave.pcm { + @func refer + name { + @func concat + strings [ + "cards." + { + @func card_driver + card $CARD + } + ".pcm.hdmi." $DEV ":" + "CARD=" $CARD "," + "AES0=" $AES0 "," + "AES1=" $AES1 "," + "AES2=" $AES2 "," + "AES3=" $AES3 + ] + } + } + hint { + show { + @func refer + name defaults.namehint.basic + } + description "HDMI Audio Output" + device $DEV + } +} diff -r b1dfac5a4d55 src/control/namehint.c --- a/src/control/namehint.c Tue Feb 05 10:08:09 2008 +0100 +++ b/src/control/namehint.c Fri Mar 14 14:12:33 2008 +0100 @@ -197,10 +197,11 @@ static char *get_dev_name(struct hint_li free(str1); return res; } - } else { - return strdup(list->cardname); } - return NULL; + /* if the specified device doesn't exist, skip this entry */ + if (list->device_input >= 0 || list->device_output >= 0) + return NULL; + return strdup(list->cardname); } #ifndef DOC_HIDDEN @@ -304,8 +305,8 @@ static int try_config(struct hint_list * err = -EINVAL; goto __cleanup; } - list->device_input = -1; - list->device_output = -1; + list->device_input = dev; + list->device_output = dev; } if (snd_config_search(cfg, "device_input", &n) >= 0) { if (snd_config_get_integer(n, &list->device_input) < 0) { diff -r b1dfac5a4d55 src/pcm/pcm_dmix.c --- a/src/pcm/pcm_dmix.c Tue Feb 05 10:08:09 2008 +0100 +++ b/src/pcm/pcm_dmix.c Fri Mar 14 14:12:33 2008 +0100 @@ -311,9 +311,9 @@ static void snd_pcm_dmix_sync_area(snd_p if (size >= pcm->boundary / 2) size = pcm->boundary - size; - /* the slave_app_ptr can be far behing the slave_hw_ptr */ + /* the slave_app_ptr can be far behind the slave_hw_ptr */ /* reduce mixing and errors here - just skip not catched writes */ - if (dmix->slave_hw_ptr < dmix->slave_appl_ptr) + if (dmix->slave_hw_ptr <= dmix->slave_appl_ptr) slave_size = dmix->slave_appl_ptr - dmix->slave_hw_ptr; else slave_size = dmix->slave_appl_ptr + (dmix->slave_boundary - dmix->slave_hw_ptr); diff -r b1dfac5a4d55 src/pcm/pcm_file.c --- a/src/pcm/pcm_file.c Tue Feb 05 10:08:09 2008 +0100 +++ b/src/pcm/pcm_file.c Fri Mar 14 14:12:33 2008 +0100 @@ -231,21 +231,19 @@ static snd_pcm_sframes_t snd_pcm_file_re { snd_pcm_file_t *file = pcm->private_data; snd_pcm_channel_area_t areas[pcm->channels]; - snd_pcm_sframes_t n /* , bytesn */; + snd_pcm_sframes_t n; + n = snd_pcm_readi(file->gen.slave, buffer, size); + if (n <= 0) + return n; if (file->ifd >= 0) { - n = /* bytesn = */ read(file->ifd, buffer, size * pcm->frame_bits / 8); - if (n > 0) - n = n * 8 / pcm->frame_bits; - /* SNDERR("DEBUG: channels = %d, sample_bits = %d, frame_bits = %d, bytes = %d, frames = %d", - pcm->channels, pcm->sample_bits, pcm->frame_bits, bytesn, n); */ - } else { - n = snd_pcm_readi(file->gen.slave, buffer, size); - if (n > 0) { - snd_pcm_areas_from_buf(pcm, areas, buffer); - snd_pcm_file_add_frames(pcm, areas, 0, n); - } + n = read(file->ifd, buffer, n * pcm->frame_bits / 8); + if (n < 0) + return n; + return n * 8 / pcm->frame_bits; } + snd_pcm_areas_from_buf(pcm, areas, buffer); + snd_pcm_file_add_frames(pcm, areas, 0, n); return n; } @@ -396,6 +394,7 @@ static snd_pcm_fast_ops_t snd_pcm_file_f * \param ifname Input filename (or NULL if file descriptor ifd is available) * \param ifd Input file descriptor (if (ifd < 0) && (ifname == NULL), no input * redirection will be performed) + * \param trunc Truncate the file if it already exists * \param fmt File format ("raw" is supported only) * \param perm File permission * \param slave Slave PCM handle @@ -406,13 +405,15 @@ static snd_pcm_fast_ops_t snd_pcm_file_f * changed in future. */ int snd_pcm_file_open(snd_pcm_t **pcmp, const char *name, - const char *fname, int fd, const char *ifname, int ifd, + const char *fname, int fd, const char *ifname, int ifd, + int trunc, const char *fmt, int perm, snd_pcm_t *slave, int close_slave) { snd_pcm_t *pcm; snd_pcm_file_t *file; snd_pcm_file_format_t format; struct timespec timespec; + char *tmpname = NULL; int err; assert(pcmp); @@ -424,9 +425,30 @@ int snd_pcm_file_open(snd_pcm_t **pcmp, return -EINVAL; } if (fname) { - fd = open(fname, O_WRONLY|O_CREAT, perm); + if (trunc) + fd = open(fname, O_WRONLY|O_CREAT|O_TRUNC, perm); + else { + fd = open(fname, O_WRONLY|O_CREAT|O_EXCL, perm); + if (fd < 0) { + int idx, len; + len = strlen(fname) + 6; + tmpname = malloc(len); + if (!tmpname) + return -ENOMEM; + for (idx = 1; idx < 10000; idx++) { + snprintf(tmpname, len, + "%s.%04d", fname, idx); + fd = open(tmpname, O_WRONLY|O_CREAT|O_EXCL, perm); + if (fd >= 0) { + fname = tmpname; + break; + } + } + } + } if (fd < 0) { SYSERR("open %s for writing failed", fname); + free(tmpname); return -errno; } } @@ -434,6 +456,7 @@ int snd_pcm_file_open(snd_pcm_t **pcmp, if (!file) { if (fname) close(fd); + free(tmpname); return -ENOMEM; } @@ -443,6 +466,8 @@ int snd_pcm_file_open(snd_pcm_t **pcmp, SYSERR("open %s for reading failed", ifname); if (fname) close(fd); + free(file); + free(tmpname); return -errno; } } @@ -461,6 +486,7 @@ int snd_pcm_file_open(snd_pcm_t **pcmp, if (err < 0) { free(file->fname); free(file); + free(tmpname); return err; } pcm->ops = &snd_pcm_file_ops; @@ -469,7 +495,7 @@ int snd_pcm_file_open(snd_pcm_t **pcmp, pcm->poll_fd = slave->poll_fd; pcm->poll_events = slave->poll_events; pcm->mmap_shadow = 1; -#ifdef HAVE_CLOCK_GETTIME +#if defined(HAVE_CLOCK_GETTIME) && defined(CLOCK_MONOTONIC) pcm->monotonic = clock_gettime(CLOCK_MONOTONIC, ×pec) == 0; #else pcm->monotonic = 0; @@ -478,6 +504,7 @@ int snd_pcm_file_open(snd_pcm_t **pcmp, snd_pcm_link_appl_ptr(pcm, slave); *pcmp = pcm; + free(tmpname); return 0; } @@ -541,7 +568,7 @@ int _snd_pcm_file_open(snd_pcm_t **pcmp, snd_config_t *slave = NULL, *sconf; const char *fname = NULL, *ifname = NULL; const char *format = NULL; - long fd = -1, ifd = -1; + long fd = -1, ifd = -1, trunc = 1; long perm = 0600; snd_config_for_each(i, next, conf) { snd_config_t *n = snd_config_iterator_entry(i); @@ -596,6 +623,13 @@ int _snd_pcm_file_open(snd_pcm_t **pcmp, } continue; } + if (strcmp(id, "truncate") == 0) { + err = snd_config_get_bool(n); + if (err < 0) + return -EINVAL; + trunc = err; + continue; + } SNDERR("Unknown field %s", id); return -EINVAL; } @@ -606,7 +640,7 @@ int _snd_pcm_file_open(snd_pcm_t **pcmp, err = snd_pcm_slave_conf(root, slave, &sconf, 0); if (err < 0) return err; - if (!fname && fd < 0) { + if (!fname && fd < 0 && !ifname) { snd_config_delete(sconf); SNDERR("file is not defined"); return -EINVAL; @@ -615,7 +649,8 @@ int _snd_pcm_file_open(snd_pcm_t **pcmp, snd_config_delete(sconf); if (err < 0) return err; - err = snd_pcm_file_open(pcmp, name, fname, fd, ifname, ifd, format, perm, spcm, 1); + err = snd_pcm_file_open(pcmp, name, fname, fd, ifname, ifd, + trunc, format, perm, spcm, 1); if (err < 0) snd_pcm_close(spcm); return err; diff -r b1dfac5a4d55 src/pcm/pcm_hw.c --- a/src/pcm/pcm_hw.c Tue Feb 05 10:08:09 2008 +0100 +++ b/src/pcm/pcm_hw.c Fri Mar 14 14:12:33 2008 +0100 @@ -994,7 +994,7 @@ int snd_pcm_hw_open_fd(snd_pcm_t **pcmp, if (SNDRV_PROTOCOL_INCOMPATIBLE(ver, SNDRV_PCM_VERSION_MAX)) return -SND_ERROR_INCOMPATIBLE_VERSION; -#ifdef HAVE_CLOCK_GETTIME +#if defined(HAVE_CLOCK_GETTIME) && defined(CLOCK_MONOTONIC) if (SNDRV_PROTOCOL_VERSION(2, 0, 9) <= ver) { struct timespec timespec; if (clock_gettime(CLOCK_MONOTONIC, ×pec) == 0) { diff -r b1dfac5a4d55 src/pcm/pcm_ioplug.c --- a/src/pcm/pcm_ioplug.c Tue Feb 05 10:08:09 2008 +0100 +++ b/src/pcm/pcm_ioplug.c Fri Mar 14 14:12:33 2008 +0100 @@ -484,7 +484,7 @@ static int snd_pcm_ioplug_pause(snd_pcm_ { ioplug_priv_t *io = pcm->private_data; static snd_pcm_state_t states[2] = { - SND_PCM_STATE_PAUSED, SND_PCM_STATE_RUNNING + SND_PCM_STATE_RUNNING, SND_PCM_STATE_PAUSED }; int prev, err; diff -r b1dfac5a4d55 src/pcm/pcm_local.h --- a/src/pcm/pcm_local.h Tue Feb 05 10:08:09 2008 +0100 +++ b/src/pcm/pcm_local.h Fri Mar 14 14:12:33 2008 +0100 @@ -944,13 +944,17 @@ typedef union snd_tmp_double { /* get the current timestamp */ static inline void gettimestamp(snd_htimestamp_t *tstamp, int monotonic) { +#if defined(HAVE_CLOCK_GETTIME) && defined(CLOCK_MONOTONIC) if (monotonic) { clock_gettime(CLOCK_MONOTONIC, tstamp); } else { +#endif struct timeval tv; gettimeofday(&tv, 0); tstamp->tv_sec = tv.tv_sec; tstamp->tv_nsec = tv.tv_usec * 1000L; +#if defined(HAVE_CLOCK_GETTIME) && defined(CLOCK_MONOTONIC) } +#endif } diff -r b1dfac5a4d55 src/seq/seq.c --- a/src/seq/seq.c Tue Feb 05 10:08:09 2008 +0100 +++ b/src/seq/seq.c Fri Mar 14 14:12:33 2008 +0100 @@ -1522,11 +1522,17 @@ int snd_seq_client_info_get_error_bounce } /** - * \brief Get the event filter bitmap of a client_info container + * \brief (DEPRECATED) Get the event filter bitmap of a client_info container * \param info client_info container * \return NULL if no event filter, or pointer to event filter bitmap * - * \sa snd_seq_get_client_info(), snd_seq_client_info_set_event_filter() + * Use #snd_seq_client_info_event_filter_check() instead. + * + * \sa snd_seq_client_info_event_filter_add(), + * snd_seq_client_info_event_filter_del(), + * snd_seq_client_info_event_filter_check(), + * snd_seq_client_info_event_filter_clear(), + * snd_seq_get_client_info() */ const unsigned char *snd_seq_client_info_get_event_filter(const snd_seq_client_info_t *info) { @@ -1538,6 +1544,87 @@ const unsigned char *snd_seq_client_info } /** + * \brief Disable event filtering of a client_info container + * \param info client_info container + * + * Remove all event types added with #snd_seq_client_info_event_filter_add and clear + * the event filtering flag of this client_info container. + * + * \sa snd_seq_client_info_event_filter_add(), + * snd_seq_client_info_event_filter_del(), + * snd_seq_client_info_event_filter_check(), + * snd_seq_get_client_info(), + * snd_seq_set_client_info() + */ +void snd_seq_client_info_event_filter_clear(snd_seq_client_info_t *info) +{ + assert(info); + info->filter &= ~SNDRV_SEQ_FILTER_USE_EVENT; + memset(info->event_filter, 0, sizeof(info->event_filter)); +} + +/** + * \brief Add an event type to the event filtering of a client_info container + * \param info client_info container + * \param event_type event type to be added + * + * Set the event filtering flag of this client_info and add the specified event type to the + * filter bitmap of this client_info container. + * + * \sa snd_seq_get_client_info(), + * snd_seq_set_client_info(), + * snd_seq_client_info_event_filter_del(), + * snd_seq_client_info_event_filter_check(), + * snd_seq_client_info_event_filter_clear() + */ +void snd_seq_client_info_event_filter_add(snd_seq_client_info_t *info, int event_type) +{ + assert(info); + info->filter |= SNDRV_SEQ_FILTER_USE_EVENT; + snd_seq_set_bit(event_type, info->event_filter); +} + +/** + * \brief Remove an event type from the event filtering of a client_info container + * \param info client_info container + * \param event_type event type to be removed + * + * Removes the specified event from the filter bitmap of this client_info container. It will + * not clear the event filtering flag, use #snd_seq_client_info_event_filter_clear instead. + * + * \sa snd_seq_get_client_info(), + * snd_seq_set_client_info(), + * snd_seq_client_info_event_filter_add(), + * snd_seq_client_info_event_filter_check(), + * snd_seq_client_info_event_filter_clear() + */ +void snd_seq_client_info_event_filter_del(snd_seq_client_info_t *info, int event_type) +{ + assert(info); + snd_seq_unset_bit(event_type, info->event_filter); +} + +/** + * \brief Check if an event type is present in the event filtering of a client_info container + * \param info client_info container + * \param event_type event type to be checked + * \return 1 if the event type is present, 0 otherwise + * + * Test if the event type is in the filter bitamp of this client_info container. + * + * \sa snd_seq_get_client_info(), + * snd_seq_set_client_info(), + * snd_seq_client_info_event_filter_add(), + * snd_seq_client_info_event_filter_del(), + * snd_seq_client_info_event_filter_clear() + */ +int snd_seq_client_info_event_filter_check(snd_seq_client_info_t *info, int event_type) +{ + assert(info); + return snd_seq_get_bit(event_type, info->event_filter); +} + +/** * \brief Get the number of opened ports of a client_info container * \param info client_info container * \return number of opened ports @@ -1623,12 +1710,17 @@ void snd_seq_client_info_set_error_bounc } /** - * \brief Set the event filter bitmap of a client_info container - * \param info client_info container - * \param filter event filter bitmap - * - * \sa snd_seq_get_client_info(), snd_seq_client_info_get_event_filger(), - * snd_seq_set_client_event_filter() + * \brief (DEPRECATED) Set the event filter bitmap of a client_info container + * \param info client_info container + * \param filter event filter bitmap, pass NULL for no event filtering + * + * Use #snd_seq_client_info_event_filter_add instead. + * + * \sa snd_seq_client_info_event_filter_add(), + * snd_seq_client_info_event_filter_del(), + * snd_seq_client_info_event_filter_check(), + * snd_seq_client_info_event_filter_clear(), + * snd_seq_set_client_info() */ void snd_seq_client_info_set_event_filter(snd_seq_client_info_t *info, unsigned char *filter) { @@ -4663,6 +4755,14 @@ void snd_seq_set_bit(int nr, void *array } /** + * \brief unset a bit flag + */ +void snd_seq_unset_bit(int nr, void *array) +{ + ((unsigned int *)array)[nr >> 5] &= ~(1UL << (nr & 31)); +} + +/** * \brief change a bit flag */ int snd_seq_change_bit(int nr, void *array) @@ -4670,7 +4770,7 @@ int snd_seq_change_bit(int nr, void *arr int result; result = ((((unsigned int *)array)[nr >> 5]) & (1UL << (nr & 31))) ? 1 : 0; - ((unsigned int *)array)[nr >> 5] |= 1UL << (nr & 31); + ((unsigned int *)array)[nr >> 5] ^= 1UL << (nr & 31); return result; } diff -r b1dfac5a4d55 src/seq/seqmid.c --- a/src/seq/seqmid.c Tue Feb 05 10:08:09 2008 +0100 +++ b/src/seq/seqmid.c Fri Mar 14 14:12:34 2008 +0100 @@ -251,8 +251,7 @@ int snd_seq_set_client_event_filter(snd_ if ((err = snd_seq_get_client_info(seq, &info)) < 0) return err; - info.filter |= SNDRV_SEQ_FILTER_USE_EVENT; - snd_seq_set_bit(event_type, info.event_filter); + snd_seq_client_info_event_filter_add(&info, event_type); return snd_seq_set_client_info(seq, &info); } diff -r b1dfac5a4d55 test/Makefile.am --- a/test/Makefile.am Tue Feb 05 10:08:09 2008 +0100 +++ b/test/Makefile.am Fri Mar 14 14:12:34 2008 +0100 @@ -1,6 +1,6 @@ check_PROGRAMS=control pcm pcm_min laten check_PROGRAMS=control pcm pcm_min latency seq \ playmidi1 timer rawmidi midiloop \ - oldapi queue_timer namehint + oldapi queue_timer namehint client_event_filter control_LDADD=../src/libasound.la pcm_LDADD=../src/libasound.la @@ -14,6 +14,7 @@ oldapi_LDADD=../src/libasound.la oldapi_LDADD=../src/libasound.la queue_timer_LDADD=../src/libasound.la namehint_LDADD=../src/libasound.la +client_event_filter_LDADD=../src/libasound.la code_CFLAGS=-Wall -pipe -g -O2 INCLUDES=-I$(top_srcdir)/include diff -r b1dfac5a4d55 test/client_event_filter.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/client_event_filter.c Fri Mar 14 14:12:34 2008 +0100 @@ -0,0 +1,46 @@ +#include <alsa/asoundlib.h> + +void dump_event_filter(snd_seq_client_info_t *client_info) { + int i, b; + + for (i = 0; i <= 255;) { + b = snd_seq_client_info_event_filter_check(client_info, i); + i++; + printf("%c%s%s", (b ? 'X' : '.'), + (i % 8 == 0 ? " " : ""), + (i % 32 == 0 ? "\n" : "")); + } + printf("\n"); +} + +int main(void) { + snd_seq_client_info_t *client_info; + + snd_seq_client_info_alloca(&client_info); + + printf("first client_info_event_filter :\n"); + dump_event_filter(client_info); + + snd_seq_client_info_event_filter_add(client_info, SND_SEQ_EVENT_NOTEON); + printf("after snd_seq_client_info_event_filter_add(client_info, SND_SEQ_EVENT_NOTEON);\n"); + dump_event_filter(client_info); + + snd_seq_client_info_event_filter_add(client_info, SND_SEQ_EVENT_PGMCHANGE); + printf("after snd_seq_client_info_event_filter_add(client_info, SND_SEQ_EVENT_PGMCHANGE);\n"); + dump_event_filter(client_info); + + snd_seq_client_info_event_filter_del(client_info, SND_SEQ_EVENT_NOTEON); + printf("after snd_seq_client_info_event_filter_del(client_info, SND_SEQ_EVENT_NOTEON);\n"); + dump_event_filter(client_info); + + snd_seq_client_info_event_filter_clear(client_info); + printf("after snd_seq_client_info_event_filter_clear(client_info);\n"); + dump_event_filter(client_info); + + snd_seq_client_info_event_filter_add(client_info, SND_SEQ_EVENT_NOTEON); + printf("after snd_seq_client_info_event_filter_add(client_info, SND_SEQ_EVENT_NOTEON);\n"); + dump_event_filter(client_info); + + return 0; +} +
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor