bufsize should be the size of a block, not the size of the full buffer. try to get 0.1 second total latency, but more importantly, make sure the buffer has at least two blocks, if the client asked for large blocks.
switch to REVISION while here. tested with openarena, I'll send a patch to let it work there shortly. ok? -- jake...@sdf.lonestar.org SDF Public Access UNIX System - http://sdf.lonestar.org Index: Makefile =================================================================== RCS file: /cvs/ports/audio/openal/Makefile,v retrieving revision 1.14 diff -N -u -p Makefile --- Makefile 2 Apr 2010 16:02:27 -0000 1.14 +++ Makefile 27 Aug 2010 00:20:26 -0000 @@ -3,7 +3,7 @@ COMMENT= cross-platform 3D audio API DISTNAME= openal-0.0.8 -PKGNAME= ${DISTNAME}p6 +REVISION= 7 CATEGORIES= audio SHARED_LIBS += openal 1.0 # .0.0 @@ -28,7 +28,8 @@ CONFIGURE_ARGS= --disable-vorbis \ --disable-arts \ --disable-mp3 \ --disable-esd \ - --disable-sdl + --disable-sdl \ + --disable-solaris MODGNU_CONFIG_GUESS_DIRS=${WRKSRC}/admin/autotools Index: files/alc_backend_sndio.c =================================================================== RCS file: /cvs/ports/audio/openal/files/alc_backend_sndio.c,v retrieving revision 1.2 diff -N -u -p files/alc_backend_sndio.c --- files/alc_backend_sndio.c 16 Dec 2009 21:12:20 -0000 1.2 +++ files/alc_backend_sndio.c 27 Aug 2010 00:20:26 -0000 @@ -48,7 +48,8 @@ alcBackendSetAttributesNative_ (ALC_OpenMode mode, voi par.pchan = chan; par.rate = *speed; - par.appbufsz = *bufsiz / SIO_BPS(par.bits) / chan; + par.round = *bufsiz / SIO_BPS(par.bits) / chan; + par.appbufsz = *bufsiz > par.rate / 20 ? *bufsiz * 2 : par.rate / 10; if (!sio_setpar(handle, &par) || !sio_getpar(handle, &par) || !sio_start(handle)) { @@ -77,7 +78,7 @@ alcBackendSetAttributesNative_ (ALC_OpenMode mode, voi return AL_FALSE; } - *bufsiz = par.appbufsz * par.bps * chan; + *bufsiz = par.round * par.bps * chan; *speed = par.rate; return AL_TRUE;