summaryrefslogtreecommitdiffstats
path: root/src/modules/oss
diff options
context:
space:
mode:
Diffstat (limited to 'src/modules/oss')
-rw-r--r--src/modules/oss/module-oss.c8
-rw-r--r--src/modules/oss/oss-util.c2
2 files changed, 7 insertions, 3 deletions
diff --git a/src/modules/oss/module-oss.c b/src/modules/oss/module-oss.c
index b5b9e2a5..f277d63d 100644
--- a/src/modules/oss/module-oss.c
+++ b/src/modules/oss/module-oss.c
@@ -121,7 +121,7 @@ struct userdata {
int mixer_fd;
int mixer_devmask;
- int nfrags, frag_size;
+ int nfrags, frag_size, orig_frag_size;
pa_bool_t use_mmap;
unsigned out_mmap_current, in_mmap_current;
@@ -536,7 +536,7 @@ static int unsuspend(struct userdata *u) {
}
if (u->nfrags >= 2 && u->frag_size >= 1)
- if (pa_oss_set_fragments(u->fd, u->nfrags, u->frag_size) < 0) {
+ if (pa_oss_set_fragments(u->fd, u->nfrags, u->orig_frag_size) < 0) {
pa_log_warn("Resume failed, couldn't set original fragment settings.");
goto fail;
}
@@ -1146,7 +1146,7 @@ int pa__init(pa_module*m) {
struct userdata *u = NULL;
const char *dev;
int fd = -1;
- int nfrags, frag_size;
+ int nfrags, orig_frag_size, frag_size;
int mode, caps;
pa_bool_t record = TRUE, playback = TRUE, use_mmap = TRUE;
pa_sample_spec ss;
@@ -1218,6 +1218,7 @@ int pa__init(pa_module*m) {
pa_log_info("Device opened in %s mode.", mode == O_WRONLY ? "O_WRONLY" : (mode == O_RDONLY ? "O_RDONLY" : "O_RDWR"));
+ orig_frag_size = frag_size;
if (nfrags >= 2 && frag_size >= 1)
if (pa_oss_set_fragments(fd, nfrags, frag_size) < 0)
goto fail;
@@ -1245,6 +1246,7 @@ int pa__init(pa_module*m) {
u->device_name = pa_xstrdup(dev);
u->in_nfrags = u->out_nfrags = (uint32_t) (u->nfrags = nfrags);
u->out_fragment_size = u->in_fragment_size = (uint32_t) (u->frag_size = frag_size);
+ u->orig_frag_size = orig_frag_size;
u->use_mmap = use_mmap;
u->rtpoll = pa_rtpoll_new();
pa_thread_mq_init(&u->thread_mq, m->core->mainloop, u->rtpoll);
diff --git a/src/modules/oss/oss-util.c b/src/modules/oss/oss-util.c
index ea8d8111..41092d81 100644
--- a/src/modules/oss/oss-util.c
+++ b/src/modules/oss/oss-util.c
@@ -250,6 +250,8 @@ int pa_oss_set_fragments(int fd, int nfrags, int frag_size) {
int arg;
arg = ((int) nfrags << 16) | simple_log2(frag_size);
+ pa_log_debug("Asking for %i fragments of size %i (requested %i)", nfrags, 1 << simple_log2(frag_size), frag_size);
+
if (ioctl(fd, SNDCTL_DSP_SETFRAGMENT, &arg) < 0) {
pa_log("SNDCTL_DSP_SETFRAGMENT: %s", pa_cstrerror(errno));
return -1;