notaz.gp2x.de
/
libpicofe.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
oss: use other sync macro
[libpicofe.git]
/
linux
/
sndout_oss.c
diff --git
a/linux/sndout_oss.c
b/linux/sndout_oss.c
index
0df17b2
..
e10d96a
100644
(file)
--- a/
linux/sndout_oss.c
+++ b/
linux/sndout_oss.c
@@
-20,6
+20,9
@@
#include "sndout_oss.h"
#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;
static int sounddev = -1, mixerdev = -1;
static int can_write_safe;
@@
-39,15
+42,22
@@
int sndout_oss_init(void)
void sndout_oss_stop(void)
{
void sndout_oss_stop(void)
{
+ /* restarting audio on GP2X causes trouble,
+ * not restarting on Caanoo causes trouble */
+ if (!sndout_oss_can_restart)
+ return;
+
if (sounddev < 0)
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;
}
close(sounddev);
sounddev = -1;
}
-int sndout_oss_start(int rate, int stereo
, int frames_in_frag
)
+int sndout_oss_start(int rate, int stereo)
{
static int s_oldrate = 0, s_oldstereo = 0;
int frag, bsize, bits, ret;
{
static int s_oldrate = 0, s_oldstereo = 0;
int frag, bsize, bits, ret;
@@
-69,10
+79,11
@@
int sndout_oss_start(int rate, int stereo, int frames_in_frag)
}
}
}
}
- // try to fit frames_in_frag frames worth of data in fragment
+ // try to fit sndout_oss_frag_frames (video) frames
+ // worth of sound data in OSS fragment
// ignore mono because it's unlikely to be used and
// both GP2X and Wiz mixes mono to stereo anyway.
// ignore mono because it's unlikely to be used and
// both GP2X and Wiz mixes mono to stereo anyway.
- bsize = (
frames_in_frag
* rate / 50) * 4;
+ bsize = (
sndout_oss_frag_frames
* rate / 50) * 4;
for (frag = 0; bsize; bsize >>= 1, frag++)
;
for (frag = 0; bsize; bsize >>= 1, frag++)
;
@@
-164,9
+175,10
@@
int sndout_oss_can_write(int bytes)
return bi.bytes - bi.fragsize >= bytes ? 1 : 0;
}
return bi.bytes - bi.fragsize >= bytes ? 1 : 0;
}
-void sndout_oss_
sync
(void)
+void sndout_oss_
wait
(void)
{
{
- ioctl(sounddev, SOUND_PCM_SYNC, 0);
+ // FIXME?
+ ioctl(sounddev, SNDCTL_DSP_SYNC, 0);
}
void sndout_oss_setvol(int l, int r)
}
void sndout_oss_setvol(int l, int r)