- err = snd_pcm_hw_params_get_buffer_size (hw, &buffer_size);
- if (0 > err) {
- Sys_Printf ("ALSA: unable to get buffer size. %s\n",
+ buffer_size = requested->speed / 5;
+ err = snd_pcm_hw_params_set_buffer_size_near (pcm_handle, hw_params, &buffer_size);
+ if (err != 0)
+ {
+ Con_Printf ("SndSys_Init: can't set sound buffer size to %lu (%s)\n",
+ buffer_size, snd_strerror (err));
+ goto init_error;
+ }
+
+ buffer_size /= NB_PERIODS;
+ err = snd_pcm_hw_params_set_period_size_near(pcm_handle, hw_params, &buffer_size, 0);
+ if (err != 0)
+ {
+ Con_Printf ("SndSys_Init: can't set sound period size to %lu (%s)\n",
+ buffer_size, snd_strerror (err));
+ goto init_error;
+ }
+
+ err = snd_pcm_hw_params (pcm_handle, hw_params);
+ if (err != 0)
+ {
+ Con_Printf ("SndSys_Init: can't set hardware parameters (%s)\n",