OpenAL 1.3.1.2 → 1.3.1.3
raw patch · 6 files changed
+395/−15 lines, 6 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
Files
- OpenAL.cabal +6/−5
- README +4/−0
- aclocal.m4 +318/−0
- configure +45/−9
- configure.ac +7/−1
- examples/test/TestDevice.hs +15/−0
OpenAL.cabal view
@@ -1,21 +1,22 @@ name: OpenAL-version: 1.3.1.2+version: 1.3.1.3 license: BSD3 license-file: LICENSE maintainer: Sven Panne <sven.panne@aedion.de> bug-reports: mailto:sven.panne@aedion.de+homepage: http://connect.creativelabs.com/openal/ category: Sound synopsis: A binding to the OpenAL cross-platform 3D audio API description: A Haskell binding for the OpenAL cross-platform 3D audio API, appropriate for use with gaming applications and many other types of audio applications. For more information about OpenAL,- please see: <http://www.openal.org/>.+ please see: <http://connect.creativelabs.com/openal/>. build-type: Configure extra-source-files:- config.guess config.sub install-sh- configure.ac configure OpenAL.buildinfo.in- include/HsOpenALConfig.h.in include/HsOpenAL.h.in+ OpenAL.buildinfo.in README aclocal.m4 config.guess config.sub configure+ configure.ac examples/test/TestDevice.hs include/HsOpenAL.h.in+ include/HsOpenALConfig.h.in install-sh extra-tmp-files: config.log config.status autom4te.cache OpenAL.buildinfo include/HsOpenALConfig.h include/HsOpenAL.h
+ README view
@@ -0,0 +1,4 @@+To build this package using Cabal directly from darcs, you must run+"autoreconf" before the usual Cabal build steps (configure/build/install).+autoreconf is included in the GNU autoconf tools. There is no need to run+the "configure" script: the "setup configure" step will do this for you.
+ aclocal.m4 view
@@ -0,0 +1,318 @@+# FPTOOLS_CHECK_HTYPE(TYPE [, DEFAULT_VALUE, [, VALUE-FOR-CROSS-COMPILATION])+#+# This test should *really* be rewritten!!!+AC_DEFUN([FPTOOLS_CHECK_HTYPE],+[changequote(<<, >>)dnl+dnl The name to #define.+define(<<AC_TYPE_NAME>>, translit(htype_$1, [a-z *], [A-Z_P]))dnl+dnl The cache variable name.+define(<<AC_CV_NAME>>, translit(fptools_cv_htype_$1, [ *], [_p]))dnl+define(<<AC_CV_NAME_supported>>, translit(fptools_cv_htype_sup_$1, [ *], [_p]))dnl+changequote([, ])dnl+AC_MSG_CHECKING(Haskell type for $1)+AC_CACHE_VAL(AC_CV_NAME,+[AC_CV_NAME_supported=yes+fp_check_htype_save_cppflags="$CPPFLAGS"+CPPFLAGS="$CPPFLAGS $X_CFLAGS"+AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <stdio.h>+#include <stddef.h>++#if HAVE_SYS_TYPES_H+# include <sys/types.h>+#endif++#if HAVE_UNISTD_H+# include <unistd.h>+#endif++#if HAVE_SYS_STAT_H+# include <sys/stat.h>+#endif++#if HAVE_FCNTL_H+# include <fcntl.h>+#endif++#if HAVE_SIGNAL_H+# include <signal.h>+#endif++#if HAVE_TIME_H+# include <time.h>+#endif++#if HAVE_TERMIOS_H+# include <termios.h>+#endif++#if HAVE_STRING_H+# include <string.h>+#endif++#if HAVE_CTYPE_H+# include <ctype.h>+#endif++#if defined(HAVE_GL_GL_H)+# include <GL/gl.h>+#elif defined(HAVE_OPENGL_GL_H)+# include <OpenGL/gl.h>+#endif++#if defined(HAVE_AL_AL_H)+# include <AL/al.h>+#elif defined(HAVE_OPENAL_AL_H)+# include <OpenAL/al.h>+#endif++#if defined(HAVE_AL_ALC_H)+# include <AL/alc.h>+#elif defined(HAVE_OPENAL_ALC_H)+# include <OpenAL/alc.h>+#endif++#if HAVE_SYS_RESOURCE_H+# include <sys/resource.h>+#endif++typedef $1 testing;++main() {+ FILE *f=fopen("conftestval", "w");+ if (!f) exit(1);+ if (((testing)((int)((testing)1.4))) == ((testing)1.4)) {+ fprintf(f, "%s%d\n",+ ((testing)(-1) < (testing)0) ? "Int" : "Word",+ sizeof(testing)*8);+ } else {+ fprintf(f,"%s\n",+ (sizeof(testing) > sizeof(double)) ? "LDouble" :+ (sizeof(testing) == sizeof(double)) ? "Double" : "Float");+ }+ fclose(f);+ exit(0);+}]])],[AC_CV_NAME=`cat conftestval`],+[ifelse([$2], , [AC_CV_NAME=NotReallyAType; AC_CV_NAME_supported=no], [AC_CV_NAME=$2])],+[ifelse([$3], , [AC_CV_NAME=NotReallyATypeCross; AC_CV_NAME_supported=no], [AC_CV_NAME=$3])])+CPPFLAGS="$fp_check_htype_save_cppflags"]) dnl+if test "$AC_CV_NAME_supported" = yes; then+ AC_MSG_RESULT($AC_CV_NAME)+ AC_DEFINE_UNQUOTED(AC_TYPE_NAME, $AC_CV_NAME, [Define to Haskell type for $1])+else+ AC_MSG_RESULT([not supported])+fi+undefine([AC_TYPE_NAME])dnl+undefine([AC_CV_NAME])dnl+undefine([AC_CV_NAME_supported])dnl+])+++# FP_COMPUTE_INT(EXPRESSION, VARIABLE, INCLUDES, IF-FAILS)+# ---------------------------------------------------------+# Assign VARIABLE the value of the compile-time EXPRESSION using INCLUDES for+# compilation. Execute IF-FAILS when unable to determine the value. Works for+# cross-compilation, too.+#+# Implementation note: We are lazy and use an internal autoconf macro, but it+# is supported in autoconf versions 2.50 up to the actual 2.57, so there is+# little risk.+AC_DEFUN([FP_COMPUTE_INT],+[_AC_COMPUTE_INT([$1], [$2], [$3], [$4])[]dnl+])# FP_COMPUTE_INT+++# FP_CHECK_CONST(EXPRESSION, [INCLUDES = DEFAULT-INCLUDES], [VALUE-IF-FAIL = -1])+# -------------------------------------------------------------------------------+# Defines CONST_EXPRESSION to the value of the compile-time EXPRESSION, using+# INCLUDES. If the value cannot be determined, use VALUE-IF-FAIL.+AC_DEFUN([FP_CHECK_CONST],+[AS_VAR_PUSHDEF([fp_Cache], [fp_cv_const_$1])[]dnl+AC_CACHE_CHECK([value of $1], fp_Cache,+[FP_COMPUTE_INT([$1], fp_check_const_result, [AC_INCLUDES_DEFAULT([$2])],+ [fp_check_const_result=m4_default([$3], ['-1'])])+AS_VAR_SET(fp_Cache, [$fp_check_const_result])])[]dnl+AC_DEFINE_UNQUOTED(AS_TR_CPP([CONST_$1]), AS_VAR_GET(fp_Cache), [The value of $1.])[]dnl+AS_VAR_POPDEF([fp_Cache])[]dnl+])# FP_CHECK_CONST+++# FP_CHECK_CONSTS_TEMPLATE(EXPRESSION...)+# ---------------------------------------+# autoheader helper for FP_CHECK_CONSTS+m4_define([FP_CHECK_CONSTS_TEMPLATE],+[AC_FOREACH([fp_Const], [$1],+ [AH_TEMPLATE(AS_TR_CPP(CONST_[]fp_Const),+ [The value of ]fp_Const[.])])[]dnl+])# FP_CHECK_CONSTS_TEMPLATE+++# FP_CHECK_CONSTS(EXPRESSION..., [INCLUDES = DEFAULT-INCLUDES], [VALUE-IF-FAIL = -1])+# -----------------------------------------------------------------------------------+# List version of FP_CHECK_CONST+AC_DEFUN([FP_CHECK_CONSTS],+[FP_CHECK_CONSTS_TEMPLATE([$1])dnl+for fp_const_name in $1+do+FP_CHECK_CONST([$fp_const_name], [$2], [$3])+done+])# FP_CHECK_CONSTS+++# FP_ARG_OPENAL+# -------------+AC_DEFUN([FP_ARG_OPENAL],+[AC_ARG_ENABLE([openal],+ [AC_HELP_STRING([--enable-openal],+ [build a Haskell binding for OpenAL (default=autodetect)])],+ [enable_openal=$enableval],+ [enable_openal=yes])+])# FP_ARG_OPENAL+++# FP_CHECK_OPENAL+# -------------+AC_DEFUN([FP_CHECK_OPENAL],+[AC_REQUIRE([AC_CANONICAL_TARGET])+AL_CFLAGS=+case $target_os in+darwin*)+ AL_LIBS=+ AL_FRAMEWORKS=OpenAL+ ;;+*)+ AC_SEARCH_LIBS([alGenSources], [openal openal32], [AL_LIBS="$ac_cv_search_alGenSources"])+ test x"$AL_LIBS" = x"none required" && AL_LIBS=+ AC_SUBST([AL_LIBS])+ AL_FRAMEWORKS=+ ;;+esac+AC_SUBST([AL_CFLAGS])+AC_SUBST([AL_FRAMEWORKS])+])# FP_CHECK_OPENAL+++# FP_HEADER_AL+# ------------+# Check for an AL header, setting the variable fp_found_al_header to no/yes,+# depending on the outcome.+AC_DEFUN([FP_HEADER_AL],+[if test -z "$fp_found_al_header"; then+ fp_found_al_header=no+ AC_CHECK_HEADERS([AL/al.h OpenAL/al.h], [fp_found_al_header=yes; break])+fi+]) # FP_HEADER_AL+++# FP_HEADER_ALC+# -------------+# Check for an ALC header, setting the variable fp_found_alc_header to no/yes,+# depending on the outcome.+AC_DEFUN([FP_HEADER_ALC],+[if test -z "$fp_found_alc_header"; then+ fp_found_alc_header=no+ AC_CHECK_HEADERS([AL/alc.h OpenAL/alc.h], [fp_found_alc_header=yes; break])+fi+]) # FP_HEADER_ALC+++# FP_FUNC_ALCCLOSEDEVICE_VOID+# ---------------------------+# Defines ALCCLOSEDEVICE_VOID to 1 if `alcCloseDevice' returns void.+AC_DEFUN([FP_FUNC_ALCCLOSEDEVICE_VOID],+[AC_REQUIRE([FP_HEADER_ALC])+AC_CACHE_CHECK([whether alcCloseDevice returns void],+ [fp_cv_func_alcclosedevice_void],+ [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT+#if defined(HAVE_AL_ALC_H)+#include <AL/alc.h>+#elif defined(HAVE_OPENAL_ALC_H)+#include <OpenAL/alc.h>+#endif+],+ [[int x = (int)alcCloseDevice(NULL);]])],+ [fp_cv_func_alcclosedevice_void=no],+ [fp_cv_func_alcclosedevice_void=yes])])+if test x"$fp_cv_func_alcclosedevice_void" = xyes; then+ AC_DEFINE([ALCCLOSEDEVICE_VOID], [1], [Define to 1 if `alcCloseDevice' returns void.])+fi+]) # FP_FUNC_ALCCLOSEDEVICE_VOID+++# FP_FUNC_ALCMAKECONTEXTCURRENT_VOID+# ----------------------------------+# Defines ALCMAKECONTEXTCURRENT_VOID to 1 if `alcMakeContextCurrent' returns void.+AC_DEFUN([FP_FUNC_ALCMAKECONTEXTCURRENT_VOID],+[AC_REQUIRE([FP_HEADER_ALC])+AC_CACHE_CHECK([whether alcMakeContextCurrent returns void],+ [fp_cv_func_alcmakecontextcurrent_void],+ [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT+#if defined(HAVE_AL_ALC_H)+#include <AL/alc.h>+#elif defined(HAVE_OPENAL_ALC_H)+#include <OpenAL/alc.h>+#endif+],+ [[int x = (int)alcMakeContextCurrent(NULL);]])],+ [fp_cv_func_alcmakecontextcurrent_void=no],+ [fp_cv_func_alcmakecontextcurrent_void=yes])])+if test x"$fp_cv_func_alcmakecontextcurrent_void)" = xyes; then+ AC_DEFINE([ALCMAKECONTEXTCURRENT_VOID], [1], [Define to 1 if `alcMakeContextCurrent' returns void.])+fi+]) # FP_FUNC_ALCMAKECONTEXTCURRENT_VOID+++# FP_FUNC_ALCPROCESSCONTEXT_VOID+# ------------------------------+# Defines ALCPROCESSCONTEXT_VOID to 1 if `alcProcessContext' returns void.+AC_DEFUN([FP_FUNC_ALCPROCESSCONTEXT_VOID],+[AC_REQUIRE([FP_HEADER_ALC])+AC_CACHE_CHECK([whether alcProcessContext returns void],+ [fp_cv_func_alcprocesscontext_void],+ [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT+#if defined(HAVE_AL_ALC_H)+#include <AL/alc.h>+#elif defined(HAVE_OPENAL_ALC_H)+#include <OpenAL/alc.h>+#endif+],+ [[int x = (int)alcProcessContext(NULL);]])],+ [fp_cv_func_alcprocesscontext_void=no],+ [fp_cv_func_alcprocesscontext_void=yes])])+if test x"$fp_cv_func_alcprocesscontext_void" = xyes; then+ AC_DEFINE([ALCPROCESSCONTEXT_VOID], [1], [Define to 1 if `alcProcessContext' returns void.])+fi+]) # FP_FUNC_ALCPROCESSCONTEXT_VOID+++# FP_FUNC_ALCDESTROYCONTEXT_VOID+# ------------------------------+# Defines ALCDESTROYCONTEXT_VOID to 1 if `alcDestroyContext' returns void.+AC_DEFUN([FP_FUNC_ALCDESTROYCONTEXT_VOID],+[AC_REQUIRE([FP_HEADER_ALC])+AC_CACHE_CHECK([whether alcDestroyContext returns void],+ [fp_cv_func_alcdestroycontext_void],+ [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT+#if defined(HAVE_AL_ALC_H)+#include <AL/alc.h>+#elif defined(HAVE_OPENAL_ALC_H)+#include <OpenAL/alc.h>+#endif+],+ [[int x = (int)alcDestroyContext(NULL);]])],+ [fp_cv_func_alcdestroycontext_void=no],+ [fp_cv_func_alcdestroycontext_void=yes])])+if test x"$fp_cv_func_alcdestroycontext_void" = xyes; then+ AC_DEFINE([ALCDESTROYCONTEXT_VOID], [1], [Define to 1 if `alcDestroyContext' returns void.])+fi+]) # FP_FUNC_ALCDESTROYCONTEXT_VOID+++# FP_ARG_COMPILER+# -------------+AC_DEFUN([FP_ARG_COMPILER],+[AC_ARG_WITH([compiler],+ [AC_HELP_STRING([--with-compiler@<:@=HC@:>@],+ [use the given Haskell compiler (default=ghc)])],+ [with_compiler=$withval],+ [with_compiler=ghc])+])# FP_ARG_COMPILER
configure view
@@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles.-# Generated by GNU Autoconf 2.63 for Haskell HOpenAL package 1.3.1.2.+# Generated by GNU Autoconf 2.63 for Haskell HOpenAL package 1.3.1.3. # # Report bugs to <sven.panne@aedion.de>. #@@ -596,8 +596,8 @@ # Identity of this package. PACKAGE_NAME='Haskell HOpenAL package' PACKAGE_TARNAME='OpenAL'-PACKAGE_VERSION='1.3.1.2'-PACKAGE_STRING='Haskell HOpenAL package 1.3.1.2'+PACKAGE_VERSION='1.3.1.3'+PACKAGE_STRING='Haskell HOpenAL package 1.3.1.3' PACKAGE_BUGREPORT='sven.panne@aedion.de' ac_unique_file="include/HsOpenAL.h.in"@@ -1270,7 +1270,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF-\`configure' configures Haskell HOpenAL package 1.3.1.2 to adapt to many kinds of systems.+\`configure' configures Haskell HOpenAL package 1.3.1.3 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1336,7 +1336,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in- short | recursive ) echo "Configuration of Haskell HOpenAL package 1.3.1.2:";;+ short | recursive ) echo "Configuration of Haskell HOpenAL package 1.3.1.3:";; esac cat <<\_ACEOF @@ -1428,7 +1428,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF-Haskell HOpenAL package configure 1.3.1.2+Haskell HOpenAL package configure 1.3.1.3 generated by GNU Autoconf 2.63 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,@@ -1442,7 +1442,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by Haskell HOpenAL package $as_me 1.3.1.2, which was+It was created by Haskell HOpenAL package $as_me 1.3.1.3, which was generated by GNU Autoconf 2.63. Invocation command line was $ $0 $@@@ -8047,6 +8047,12 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <stdio.h>+#if defined(HAVE_AL_AL_H)+#include <AL/al.h>+#elif defined(HAVE_OPENAL_AL_H)+#include <OpenAL/al.h>+#endif+ #if defined(HAVE_AL_ALC_H) #include <AL/alc.h> #elif defined(HAVE_OPENAL_ALC_H)@@ -8178,6 +8184,12 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <stdio.h>+#if defined(HAVE_AL_AL_H)+#include <AL/al.h>+#elif defined(HAVE_OPENAL_AL_H)+#include <OpenAL/al.h>+#endif+ #if defined(HAVE_AL_ALC_H) #include <AL/alc.h> #elif defined(HAVE_OPENAL_ALC_H)@@ -8326,6 +8338,12 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <stdio.h>+#if defined(HAVE_AL_AL_H)+#include <AL/al.h>+#elif defined(HAVE_OPENAL_AL_H)+#include <OpenAL/al.h>+#endif+ #if defined(HAVE_AL_ALC_H) #include <AL/alc.h> #elif defined(HAVE_OPENAL_ALC_H)@@ -8457,6 +8475,12 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <stdio.h>+#if defined(HAVE_AL_AL_H)+#include <AL/al.h>+#elif defined(HAVE_OPENAL_AL_H)+#include <OpenAL/al.h>+#endif+ #if defined(HAVE_AL_ALC_H) #include <AL/alc.h> #elif defined(HAVE_OPENAL_ALC_H)@@ -8615,6 +8639,12 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <stdio.h>+#if defined(HAVE_AL_AL_H)+#include <AL/al.h>+#elif defined(HAVE_OPENAL_AL_H)+#include <OpenAL/al.h>+#endif+ #if defined(HAVE_AL_ALC_H) #include <AL/alc.h> #elif defined(HAVE_OPENAL_ALC_H)@@ -8759,6 +8789,12 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <stdio.h>+#if defined(HAVE_AL_AL_H)+#include <AL/al.h>+#elif defined(HAVE_OPENAL_AL_H)+#include <OpenAL/al.h>+#endif+ #if defined(HAVE_AL_ALC_H) #include <AL/alc.h> #elif defined(HAVE_OPENAL_ALC_H)@@ -9386,7 +9422,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log="-This file was extended by Haskell HOpenAL package $as_me 1.3.1.2, which was+This file was extended by Haskell HOpenAL package $as_me 1.3.1.3, which was generated by GNU Autoconf 2.63. Invocation command line was CONFIG_FILES = $CONFIG_FILES@@ -9445,7 +9481,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_version="\\-Haskell HOpenAL package config.status 1.3.1.2+Haskell HOpenAL package config.status 1.3.1.3 configured by $0, generated by GNU Autoconf 2.63, with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
configure.ac view
@@ -1,4 +1,4 @@-AC_INIT([Haskell HOpenAL package], [1.3.1.2], [sven.panne@aedion.de], [OpenAL])+AC_INIT([Haskell HOpenAL package], [1.3.1.3], [sven.panne@aedion.de], [OpenAL]) # Safety check: Ensure that we are in the correct source directory. AC_CONFIG_SRCDIR([include/HsOpenAL.h.in])@@ -71,6 +71,12 @@ FPTOOLS_CHECK_HTYPE([ALCdouble], [Double]) FP_CHECK_CONSTS([AL_FALSE AL_TRUE AL_NO_ERROR AL_INVALID_NAME AL_INVALID_ENUM AL_INVALID_VALUE AL_INVALID_OPERATION AL_OUT_OF_MEMORY AL_DOPPLER_FACTOR AL_SPEED_OF_SOUND AL_DISTANCE_MODEL AL_VERSION AL_RENDERER AL_VENDOR AL_EXTENSIONS AL_NONE AL_INVERSE_DISTANCE AL_INVERSE_DISTANCE_CLAMPED AL_LINEAR_DISTANCE AL_LINEAR_DISTANCE_CLAMPED AL_EXPONENT_DISTANCE AL_EXPONENT_DISTANCE_CLAMPED AL_POSITION AL_VELOCITY AL_GAIN AL_ORIENTATION AL_SOURCE_RELATIVE AL_SOURCE_TYPE AL_LOOPING AL_BUFFER AL_BUFFERS_QUEUED AL_BUFFERS_PROCESSED AL_MIN_GAIN AL_MAX_GAIN AL_REFERENCE_DISTANCE AL_ROLLOFF_FACTOR AL_MAX_DISTANCE AL_PITCH AL_DIRECTION AL_CONE_INNER_ANGLE AL_CONE_OUTER_ANGLE AL_CONE_OUTER_GAIN AL_SEC_OFFSET AL_SAMPLE_OFFSET AL_BYTE_OFFSET AL_SOURCE_STATE AL_UNDETERMINED AL_STATIC AL_STREAMING AL_INITIAL AL_PLAYING AL_PAUSED AL_STOPPED AL_FREQUENCY AL_SIZE AL_BITS AL_CHANNELS AL_FORMAT_MONO8 AL_FORMAT_MONO16 AL_FORMAT_STEREO8 AL_FORMAT_STEREO16 ALC_FALSE ALC_TRUE ALC_FREQUENCY ALC_REFRESH ALC_SYNC ALC_MONO_SOURCES ALC_STEREO_SOURCES ALC_NO_ERROR ALC_INVALID_DEVICE ALC_INVALID_CONTEXT ALC_INVALID_ENUM ALC_INVALID_VALUE ALC_INVALID_OPERATION ALC_OUT_OF_MEMORY ALC_DEFAULT_DEVICE_SPECIFIER ALC_DEVICE_SPECIFIER ALC_EXTENSIONS ALC_CAPTURE_DEFAULT_DEVICE_SPECIFIER ALC_CAPTURE_DEVICE_SPECIFIER ALC_ATTRIBUTES_SIZE ALC_ALL_ATTRIBUTES ALC_MAJOR_VERSION ALC_MINOR_VERSION ALC_CAPTURE_SAMPLES], [#include <stdio.h>+#if defined(HAVE_AL_AL_H)+#include <AL/al.h>+#elif defined(HAVE_OPENAL_AL_H)+#include <OpenAL/al.h>+#endif+ #if defined(HAVE_AL_ALC_H) #include <AL/alc.h> #elif defined(HAVE_OPENAL_ALC_H)
+ examples/test/TestDevice.hs view
@@ -0,0 +1,15 @@+import Control.Monad ( unless )+import System.IO ( hPutStrLn, stderr )+import System.Posix.Unistd ( sleep )+import Sound.OpenAL++main :: IO ()+main = do+ maybeDevice <- openDevice (Just "'( ( devices '( native null ) ) )")+ case maybeDevice of+ Nothing -> hPutStrLn stderr "openDevice failed"+ Just device -> do+ sleep 1+ ok <- closeDevice device+ unless ok $+ hPutStrLn stderr "closeDevice failed"