--- ./openal-20050504/linux/src/arch/alsa/alsa.c 2005-03-25 11:48:23.000000000 +0100 +++ ./openal-modified/linux/src/arch/alsa/alsa.c 2005-09-01 16:31:45.000000000 +0200 @@ -58,6 +58,7 @@ static int (*psnd_pcm_hw_params_set_channels)(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int val) = NULL; static int (*psnd_pcm_hw_params_set_format)(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, snd_pcm_format_t val) = NULL; static int (*psnd_pcm_hw_params_set_periods)(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int val, int dir) = NULL; +static int (*psnd_pcm_hw_params_set_periods_near)(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *val, int *dir) = NULL; static int (*psnd_pcm_hw_params_set_rate)(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int val, int dir) = NULL; static int (*psnd_pcm_hw_params_set_rate_near)(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *val, int *dir) = NULL; static size_t (*psnd_pcm_hw_params_sizeof)(void) = NULL; @@ -143,6 +144,7 @@ OPENAL_LOAD_ALSA_SYMBOL(snd_pcm_hw_params_set_format); OPENAL_LOAD_ALSA_SYMBOL(snd_pcm_hw_params_set_period_size); OPENAL_LOAD_ALSA_SYMBOL(snd_pcm_hw_params_set_periods); + OPENAL_LOAD_ALSA_SYMBOL(snd_pcm_hw_params_set_periods_near); OPENAL_LOAD_ALSA_SYMBOL(snd_pcm_hw_params_set_rate); OPENAL_LOAD_ALSA_SYMBOL(snd_pcm_hw_params_set_rate_near); OPENAL_LOAD_ALSA_SYMBOL(snd_pcm_hw_params_sizeof); @@ -450,7 +452,7 @@ return AL_FALSE; } - err = psnd_pcm_hw_params_set_periods(phandle, setup, ai->periods, 0); + err = psnd_pcm_hw_params_set_periods_near(phandle, setup, &ai->periods, 0); if (err < 0) { _alDebug(ALD_MAXIMUS, __FILE__, __LINE__, "set_read_alsa: %s\n", psnd_strerror(err)); @@ -622,7 +624,7 @@ /* Set number of periods. Periods used to be called fragments. */ - err = psnd_pcm_hw_params_set_periods(phandle, setup, ai->periods, 0); + err = psnd_pcm_hw_params_set_periods_near(phandle, setup, &ai->periods, 0); if (err < 0) { _alDebug(ALD_MAXIMUS, __FILE__, __LINE__, "set_write_alsa: %s\n", psnd_strerror(err)); @@ -812,4 +814,3 @@ return(retval*chans); } -