diff --git a/configure.ac b/configure.ac index 9250c05d2..dcd011006 100644 --- a/configure.ac +++ b/configure.ac @@ -780,6 +780,13 @@ AM_CONDITIONAL([HAVE_OSS_WRAPPER], [test "x$HAVE_OSS_WRAPPER" = "x1"]) AS_IF([test "x$HAVE_OSS_OUTPUT" = "x1"], AC_DEFINE([HAVE_OSS_OUTPUT], 1, [Have OSS output?])) AS_IF([test "x$HAVE_OSS_WRAPPER" = "x1"], AC_DEFINE([HAVE_OSS_WRAPPER], 1, [Have OSS wrapper (padsp)?])) +# Some platforms like SunOS (Illumos) may ship without SOUND_PCM_* functionality +if test "x$HAVE_OSS" = "x1"; then + AC_CHECK_DECLS([SOUND_PCM_READ_RATE], [], [], [[#include ]]) + AC_CHECK_DECLS([SOUND_PCM_READ_CHANNELS], [], [], [[#include ]]) + AC_CHECK_DECLS([SOUND_PCM_READ_BITS], [], [], [[#include ]]) +fi + #### CoreAudio support (optional) #### AC_ARG_ENABLE([coreaudio-output], diff --git a/src/utils/padsp.c b/src/utils/padsp.c index 5e336bb1d..943479b39 100644 --- a/src/utils/padsp.c +++ b/src/utils/padsp.c @@ -2278,6 +2278,7 @@ static int dsp_ioctl(fd_info *i, unsigned long request, void*argp, int *_errno) break; } +#if HAVE_DECL_SOUND_PCM_READ_RATE case SOUND_PCM_READ_RATE: debug(DEBUG_LEVEL_NORMAL, __FILE__": SOUND_PCM_READ_RATE\n"); @@ -2285,7 +2286,9 @@ static int dsp_ioctl(fd_info *i, unsigned long request, void*argp, int *_errno) *(int*) argp = i->sample_spec.rate; pa_threaded_mainloop_unlock(i->mainloop); break; +#endif +#if HAVE_DECL_SOUND_PCM_READ_CHANNELS case SOUND_PCM_READ_CHANNELS: debug(DEBUG_LEVEL_NORMAL, __FILE__": SOUND_PCM_READ_CHANNELS\n"); @@ -2293,7 +2296,9 @@ static int dsp_ioctl(fd_info *i, unsigned long request, void*argp, int *_errno) *(int*) argp = i->sample_spec.channels; pa_threaded_mainloop_unlock(i->mainloop); break; +#endif +#if HAVE_DECL_SOUND_PCM_READ_BITS case SOUND_PCM_READ_BITS: debug(DEBUG_LEVEL_NORMAL, __FILE__": SOUND_PCM_READ_BITS\n"); @@ -2301,6 +2306,7 @@ static int dsp_ioctl(fd_info *i, unsigned long request, void*argp, int *_errno) *(int*) argp = pa_sample_size(&i->sample_spec)*8; pa_threaded_mainloop_unlock(i->mainloop); break; +#endif case SNDCTL_DSP_GETOPTR: { count_info *info;