From 4c1511500759c7701b407227e907c0e5c8e38763 Mon Sep 17 00:00:00 2001 From: Diego Elio 'Flameeyes' Pettenò Date: Sat, 8 Aug 2009 01:53:15 +0200 Subject: Split OSS support in output and wrapper. Since Fedora does not enable OSS output support at all, but still uses padsp, and in Gentoo we could also make use of padsp without OSS output support, split the two things in two parameters, although they both check for sys/soundcard.h once. --- configure.ac | 38 +++++++++++++++++++++++++++----------- src/Makefile.am | 4 ++-- src/daemon/main.c | 2 +- src/modules/module-detect.c | 4 ++-- src/modules/module-hal-detect.c | 16 ++++++++-------- 5 files changed, 40 insertions(+), 24 deletions(-) diff --git a/configure.ac b/configure.ac index 40792130..f7034792 100644 --- a/configure.ac +++ b/configure.ac @@ -664,26 +664,42 @@ AM_CONDITIONAL([HAVE_GDBM], [test "x$HAVE_GDBM" = x1]) #### OSS support (optional) #### -AC_ARG_ENABLE([oss], - AS_HELP_STRING([--disable-oss],[Disable optional OSS support]), +AC_ARG_ENABLE([oss-output], + AS_HELP_STRING([--disable-oss-output],[Disable optional OSS output support]), [ case "${enableval}" in - yes) oss=yes ;; - no) oss=no ;; - *) AC_MSG_ERROR(bad value ${enableval} for --disable-oss) ;; + yes) oss_output=yes ;; + no) oss_output=no ;; + *) AC_MSG_ERROR(bad value ${enableval} for --disable-oss-output) ;; esac ], - [oss=auto]) + [oss_output=auto]) -if test "x${oss}" != xno ; then +AC_ARG_ENABLE([oss-wrapper], + AS_HELP_STRING([--disable-oss-wrapper],[Disable optional OSS wrapper support]), + [ + case "${enableval}" in + yes) oss_wrapper=yes ;; + no) oss_wrapper=no ;; + *) AC_MSG_ERROR(bad value ${enableval} for --disable-oss-wrapper) ;; + esac + ], + [oss_wrapper=auto]) + +if test "x${oss_output}" != xno || test "x${oss_wrapper}" != "xno"; then AC_CHECK_HEADERS([sys/soundcard.h], [ + if test "x${oss_output}" != "xno"; then + AC_DEFINE([HAVE_OSS_OUTPUT], 1, [Have OSS output?]) + fi + if test "x${oss_wrapper}" != "xno"; then + AC_DEFINE([HAVE_OSS_WRAPPER], 1, [Have OSS wrapper (padsp)?]) + fi HAVE_OSS=1 - AC_DEFINE([HAVE_OSS], 1, [Have OSS?]) ], [ HAVE_OSS=0 - if test "x$oss" = xyes ; then + if test "x$oss_output" = xyes || test "x$oss_wrapper" = "xyes"; then AC_MSG_ERROR([*** OSS support not found]) fi ]) @@ -692,8 +708,8 @@ else fi AC_SUBST(HAVE_OSS) -AM_CONDITIONAL([HAVE_OSS], [test "x$HAVE_OSS" = x1]) - +AM_CONDITIONAL([HAVE_OSS_OUTPUT], [test "x$HAVE_OSS" = x1 && test "x${oss_output}" != "xno"]) +AM_CONDITIONAL([HAVE_OSS_WRAPPER], [test "x$HAVE_OSS" = x1 && test "x${oss_wrapper}" != "xno"]) #### ALSA support (optional) #### diff --git a/src/Makefile.am b/src/Makefile.am index c022fa7c..5d711577 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -776,7 +776,7 @@ libpulse_mainloop_glib_la_LDFLAGS = $(AM_LDFLAGS) $(VERSIONING_LDFLAGS) -version # OSS emulation # ################################### -if HAVE_OSS +if HAVE_OSS_WRAPPER lib_LTLIBRARIES += libpulsedsp.la bin_SCRIPTS += utils/padsp endif @@ -1031,7 +1031,7 @@ modlibexec_LTLIBRARIES += \ module-x11-cork-request.la endif -if HAVE_OSS +if HAVE_OSS_OUTPUT modlibexec_LTLIBRARIES += \ liboss-util.la \ module-oss.la diff --git a/src/daemon/main.c b/src/daemon/main.c index b209c514..7a951954 100644 --- a/src/daemon/main.c +++ b/src/daemon/main.c @@ -113,7 +113,7 @@ int allow_severity = LOG_INFO; int deny_severity = LOG_WARNING; #endif -#ifdef HAVE_OSS +#ifdef HAVE_OSS_WRAPPER /* padsp looks for this symbol in the running process and disables * itself if it finds it and it is set to 7 (which is actually a bit * mask). For details see padsp. */ diff --git a/src/modules/module-detect.c b/src/modules/module-detect.c index 18479df3..956fe4c5 100644 --- a/src/modules/module-detect.c +++ b/src/modules/module-detect.c @@ -119,7 +119,7 @@ static int detect_alsa(pa_core *c, int just_one) { } #endif -#ifdef HAVE_OSS +#ifdef HAVE_OSS_OUTPUT static int detect_oss(pa_core *c, int just_one) { FILE *f; int n = 0, b = 0; @@ -240,7 +240,7 @@ int pa__init(pa_module*m) { #ifdef HAVE_ALSA if ((n = detect_alsa(m->core, just_one)) <= 0) #endif -#ifdef HAVE_OSS +#ifdef HAVE_OSS_OUTPUT if ((n = detect_oss(m->core, just_one)) <= 0) #endif #ifdef HAVE_SOLARIS diff --git a/src/modules/module-hal-detect.c b/src/modules/module-hal-detect.c index 79758b92..b5b2aaf0 100644 --- a/src/modules/module-hal-detect.c +++ b/src/modules/module-hal-detect.c @@ -55,14 +55,14 @@ PA_MODULE_AUTHOR("Shahms King"); PA_MODULE_DESCRIPTION("Detect available audio hardware and load matching drivers"); PA_MODULE_VERSION(PACKAGE_VERSION); PA_MODULE_LOAD_ONCE(TRUE); -#if defined(HAVE_ALSA) && defined(HAVE_OSS) +#if defined(HAVE_ALSA) && defined(HAVE_OSS_OUTPUT) PA_MODULE_USAGE("api= " "tsched=" "subdevs="); #elif defined(HAVE_ALSA) PA_MODULE_USAGE("api= " "tsched="); -#elif defined(HAVE_OSS) +#elif defined(HAVE_OSS_OUTPUT) PA_MODULE_USAGE("api=" "subdevs="); #endif @@ -84,7 +84,7 @@ struct userdata { #ifdef HAVE_ALSA pa_bool_t use_tsched; #endif -#ifdef HAVE_OSS +#ifdef HAVE_OSS_OUTPUT pa_bool_t init_subdevs; #endif }; @@ -97,7 +97,7 @@ static const char* const valid_modargs[] = { #ifdef HAVE_ALSA "tsched", #endif -#ifdef HAVE_OSS +#ifdef HAVE_OSS_OUTPUT "subdevs", #endif NULL @@ -270,7 +270,7 @@ fail: #endif -#ifdef HAVE_OSS +#ifdef HAVE_OSS_OUTPUT static pa_bool_t hal_oss_device_is_pcm(LibHalContext *context, const char *udi, pa_bool_t init_subdevices) { char *class = NULL, *dev = NULL, *e; @@ -402,7 +402,7 @@ static struct device* hal_device_add(struct userdata *u, const char *udi) { if (pa_streq(u->capability, CAPABILITY_ALSA)) r = hal_device_load_alsa(u, udi, d); #endif -#ifdef HAVE_OSS +#ifdef HAVE_OSS_OUTPUT if (pa_streq(u->capability, CAPABILITY_OSS)) r = hal_device_load_oss(u, udi, d); #endif @@ -761,7 +761,7 @@ int pa__init(pa_module*m) { api = pa_modargs_get_value(ma, "api", "oss"); #endif -#ifdef HAVE_OSS +#ifdef HAVE_OSS_OUTPUT if (pa_streq(api, "oss")) u->capability = CAPABILITY_OSS; #endif @@ -771,7 +771,7 @@ int pa__init(pa_module*m) { goto fail; } -#ifdef HAVE_OSS +#ifdef HAVE_OSS_OUTPUT if (pa_modargs_get_value_boolean(ma, "subdevs", &u->init_subdevs) < 0) { pa_log("Failed to parse subdevs argument."); goto fail; -- cgit