#include "sndout_oss.h"
int sndout_oss_frag_frames = 1;
+int sndout_oss_can_restart = 1;
static int sounddev = -1, mixerdev = -1;
static int can_write_safe;
void sndout_oss_stop(void)
{
-#ifdef __GP2X__
- /* restarting audio on GP2X causes trouble */
- return;
-#endif
+ /* restarting audio on GP2X causes trouble,
+ * not restarting on Caanoo causes trouble */
+ if (!sndout_oss_can_restart)
+ return;
if (sounddev < 0)
return;
- ioctl(sounddev, SOUND_PCM_SYNC, 0);
+ // sync causes trouble on Caanoo..
+ //ioctl(sounddev, SNDCTL_DSP_SYNC, 0);
+
close(sounddev);
sounddev = -1;
}
void sndout_oss_wait(void)
{
// FIXME?
- ioctl(sounddev, SOUND_PCM_SYNC, 0);
+ ioctl(sounddev, SNDCTL_DSP_SYNC, 0);
}
void sndout_oss_setvol(int l, int r)
void sndout_oss_exit(void)
{
- if (sounddev >= 0) close(sounddev); sounddev = -1;
- if (mixerdev >= 0) close(mixerdev); mixerdev = -1;
+ if (sounddev >= 0)
+ close(sounddev);
+ if (mixerdev >= 0)
+ close(mixerdev);
+ sounddev = mixerdev = -1;
}