From 86541f5a0ae3e3f5716f4389f9155a868d9d8ab3 Mon Sep 17 00:00:00 2001 Message-Id: <86541f5a0ae3e3f5716f4389f9155a868d9d8ab3.1715439053.git.mdw@distorted.org.uk> From: Mark Wooding Date: Sun, 11 Apr 2010 11:10:19 +0100 Subject: [PATCH] Check whether libao has a working plugin interface and don't build the ao plugin if it does not. Organization: Straylight/Edgeware From: Richard Kettlewell --- CHANGES.html | 3 +++ README | 2 +- configure.ac | 18 +++++++++++++++++- driver/disorder.c | 5 ++++- 4 files changed, 25 insertions(+), 3 deletions(-) diff --git a/CHANGES.html b/CHANGES.html index 51cf92b..aa04fd9 100644 --- a/CHANGES.html +++ b/CHANGES.html @@ -96,6 +96,9 @@ span.command { SoX. SoX support will be removed in a future version.

+

The libao plugin is not built if you have libao 1.0.0 (because the + plugin API is broken in that version).

+

Playlists are now supported. These allow a collection of tracks to be prepared offline and played as a unit.

diff --git a/README b/README index 4c567ba..900cf82 100644 --- a/README +++ b/README @@ -31,7 +31,7 @@ Build dependencies: libpcre 6.7 need UTF-8 support libmad 0.15.1b libgcrypt 1.2.3 - libao 0.8.6 + libao 0.8.6 1.0.0 is broken libasound 1.0.13 libFLAC 1.1.2 libsamplerate 0.1.4 currently optional diff --git a/configure.ac b/configure.ac index c72e59d..344b050 100644 --- a/configure.ac +++ b/configure.ac @@ -338,7 +338,10 @@ fi subdirs="${subdirs} clients doc examples debian" if test $want_server = yes; then - subdirs="${subdirs} server plugins driver sounds" + subdirs="${subdirs} server plugins sounds" + if test "$rjk_cv_libao_plugin_api_works" = yes; then + subdirs="${subdirs} driver" + fi fi if test $want_cgi = yes; then subdirs="${subdirs} cgi templates images" @@ -465,6 +468,19 @@ if test $want_server = yes; then AC_CHECK_LIB([FLAC], [FLAC__stream_decoder_new], [AC_SUBST(LIBFLAC,[-lFLAC])], [missing_libraries="$missing_libraries libFLAC"]) + if test $ac_cv_lib_ao_ao_initialize = yes; then + # libao 1.0.0 breaks the plugin interface + AC_CACHE_CHECK([whether libao has a working plugin interface], + [rjk_cv_libao_plugin_api_works],[ + AC_COMPILE_IFELSE([#include +#include + +void ao_plugin_device_init(ao_device *d) { + d->internal = 0; +}],[rjk_cv_libao_plugin_api_works=yes],[rjk_cv_libao_plugin_api_works=no])]) + else + rjk_cv_libao_plugin_api_works=no + fi fi AC_CHECK_LIB([pthread], [pthread_create], [AC_SUBST(LIBPTHREAD,[-lpthread])], diff --git a/driver/disorder.c b/driver/disorder.c index e6b6575..143b043 100644 --- a/driver/disorder.c +++ b/driver/disorder.c @@ -1,6 +1,6 @@ /* * This file is part of DisOrder. - * Copyright (C) 2005, 2007 Richard Kettlewell + * Copyright (C) 2005, 2007, 2010 Richard Kettlewell * * 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 @@ -20,6 +20,9 @@ * * The output from this driver is expected to be fed to @c * disorder-normalize to convert to the confnigured target format. + * + * @attention This driver will not build with libao 1.0.0. libao has + * taken away half the plugin API and not provided any replacement. */ #include "common.h" -- [mdw]