From d1bc972e6955601836c476093cb07ba961e51738 Mon Sep 17 00:00:00 2001 From: Pierre Ossman Date: Mon, 20 Feb 2006 12:42:28 +0000 Subject: Detect support for Solaris (/dev/audio). git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@516 fefdeb5f-60dc-0310-8127-8f9354f1896f --- configure.ac | 5 ++++- src/modules/module-detect.c | 31 +++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index 4261903f..5ffea5ef 100644 --- a/configure.ac +++ b/configure.ac @@ -309,7 +309,10 @@ AM_CONDITIONAL([HAVE_ALSA], [test "x$HAVE_ALSA" = x1]) #### Solaris audio support (optional) #### -AC_CHECK_HEADERS([sys/audio.h], [HAVE_SOLARIS=1], [HAVE_SOLARIS=0]) +AC_CHECK_HEADERS([sys/audio.h], [ +HAVE_SOLARIS=1 +AC_DEFINE([HAVE_SOLARIS], 1, [Have Solaris audio?]) +], [HAVE_SOLARIS=0]) AC_SUBST(HAVE_SOLARIS) AM_CONDITIONAL([HAVE_SOLARIS], [test "x$HAVE_SOLARIS" = x1]) diff --git a/src/modules/module-detect.c b/src/modules/module-detect.c index e325b22c..4c0cdb4b 100644 --- a/src/modules/module-detect.c +++ b/src/modules/module-detect.c @@ -171,6 +171,34 @@ static int detect_oss(pa_core *c, int just_one) { } #endif +#ifdef HAVE_SOLARIS +static int detect_solaris(pa_core *c, int just_one) { + struct stat s; + const char *dev; + char args[64]; + + dev = getenv("AUDIODEV"); + if (!dev) + dev = "/dev/audio"; + + if (stat(dev, &s) < 0) { + if (errno != ENOENT) + pa_log_error(__FILE__": failed to open device %s: %s\n", dev, strerror(errno)); + return -1; + } + + if (!S_ISCHR(s)) + return 0; + + snprintf(args, sizeof(args), "device=%s", dev); + + if (!pa_module_load(c, "module-solaris", args)) + return 0; + + return 1; +} +#endif + int pa__init(pa_core *c, pa_module*m) { int just_one = 0, n = 0; pa_modargs *ma; @@ -198,6 +226,9 @@ int pa__init(pa_core *c, pa_module*m) { #endif #if HAVE_OSS if ((n = detect_oss(c, just_one)) <= 0) +#endif +#if HAVE_SOLARIS + if ((n = detect_solaris(c, just_one)) <= 0) #endif { pa_log_warn(__FILE__": failed to detect any sound hardware.\n"); -- cgit