diff options
author | Lennart Poettering <lennart@poettering.net> | 2009-05-26 22:30:36 +0200 |
---|---|---|
committer | Colin Guthrie <cguthrie@mandriva.org> | 2009-06-08 22:31:50 +0100 |
commit | 14dd16ad13656d882245861a1f24ee36c3f6f072 (patch) | |
tree | c2f89c9a82bb5e9511f6818ce80aacb7cc2b0840 /src/modules | |
parent | 9c09d6b31b291d194f97f78a437e9717e8ebf228 (diff) |
oss: don't deadlock when we try to resume an OSS device that lacks a mixer
Diffstat (limited to 'src/modules')
-rw-r--r-- | src/modules/oss/module-oss.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/src/modules/oss/module-oss.c b/src/modules/oss/module-oss.c index 9f7863f5..aa5f9188 100644 --- a/src/modules/oss/module-oss.c +++ b/src/modules/oss/module-oss.c @@ -477,6 +477,7 @@ static void build_pollfd(struct userdata *u) { pollfd->revents = 0; } +/* Called from IO context */ static int suspend(struct userdata *u) { pa_assert(u); pa_assert(u->fd >= 0); @@ -526,6 +527,7 @@ static int suspend(struct userdata *u) { return 0; } +/* Called from IO context */ static int unsuspend(struct userdata *u) { int m; pa_sample_spec ss, *ss_original; @@ -616,10 +618,10 @@ static int unsuspend(struct userdata *u) { build_pollfd(u); - if (u->sink) - pa_sink_get_volume(u->sink, TRUE, FALSE); - if (u->source) - pa_source_get_volume(u->source, TRUE); + if (u->sink && u->sink->get_volume) + u->sink->get_volume(u->sink); + if (u->source && u->source->get_volume) + u->source->get_volume(u->source); pa_log_info("Resumed successfully..."); @@ -631,6 +633,7 @@ fail: return -1; } +/* Called from IO context */ static int sink_process_msg(pa_msgobject *o, int code, void *data, int64_t offset, pa_memchunk *chunk) { struct userdata *u = PA_SINK(o)->userdata; int ret; |