summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2008-05-27 16:49:13 +0000
committerLennart Poettering <lennart@poettering.net>2008-05-27 16:49:13 +0000
commit95b49fb8cfc7a17c8911be856064bfb35daf119e (patch)
treef2df5d85baafd15e1d113f159c222b00b04f0c90
parent2bd0abb8d2ad834d26f1dcbb1be8a6c522c6e8c8 (diff)
minor fixes
git-svn-id: file:///home/lennart/svn/public/libcanberra/trunk@22 01b60673-d06a-42c0-afdd-89cb8e0f78ac
-rw-r--r--src/pulse.c23
1 files changed, 14 insertions, 9 deletions
diff --git a/src/pulse.c b/src/pulse.c
index 0ceab56..a094167 100644
--- a/src/pulse.c
+++ b/src/pulse.c
@@ -265,7 +265,7 @@ int driver_open(ca_context *c) {
return CA_ERROR_OOM;
}
- if ((ret = convert_proplist(&l, c->props))) {
+ if ((ret = convert_proplist(&l, c->props)) < 0) {
driver_destroy(c);
return ret;
}
@@ -385,7 +385,7 @@ int driver_change_props(ca_context *c, ca_proplist *changed, ca_proplist *merged
ca_return_val_if_fail(p->mainloop, CA_ERROR_STATE);
ca_return_val_if_fail(p->context, CA_ERROR_STATE);
- if ((ret = convert_proplist(&l, changed)))
+ if ((ret = convert_proplist(&l, changed)) < 0)
return ret;
strip_canberra_data(l);
@@ -438,16 +438,21 @@ static int subscribe(ca_context *c) {
}
static void play_sample_cb(pa_context *c, uint32_t idx, void *userdata) {
+ struct private *p;
struct outstanding *out = userdata;
ca_assert(c);
ca_assert(out);
+ p = PRIVATE(out->context);
+
if (idx != PA_INVALID_INDEX) {
out->error = CA_SUCCESS;
out->sink_input = idx;
} else
out->error = translate_error(pa_context_errno(c));
+
+ pa_threaded_mainloop_signal(p->mainloop, FALSE);
}
static void stream_state_cb(pa_stream *s, void *userdata) {
@@ -480,7 +485,7 @@ static void stream_state_cb(pa_stream *s, void *userdata) {
}
}
- pa_threaded_mainloop_signal(p->mainloop, TRUE);
+ pa_threaded_mainloop_signal(p->mainloop, FALSE);
}
static void stream_drain_cb(pa_stream *s, int success, void *userdata) {
@@ -547,7 +552,7 @@ static void stream_write_cb(pa_stream *s, size_t bytes, void *userdata) {
}
/* Let's just signal driver_cache() which has been waiting for us */
- pa_threaded_mainloop_signal(p->mainloop, TRUE);
+ pa_threaded_mainloop_signal(p->mainloop, FALSE);
} else {
pa_operation *o;
@@ -579,7 +584,7 @@ finish:
outstanding_free(out);
} else {
pa_stream_disconnect(s);
- pa_threaded_mainloop_signal(p->mainloop, TRUE);
+ pa_threaded_mainloop_signal(p->mainloop, FALSE);
out->error = ret;
}
}
@@ -625,7 +630,7 @@ int driver_play(ca_context *c, uint32_t id, ca_proplist *proplist, ca_finish_cal
out->callback = cb;
out->userdata = userdata;
- if ((ret = convert_proplist(&l, proplist)))
+ if ((ret = convert_proplist(&l, proplist)) < 0)
goto finish;
if (!(n = pa_proplist_gets(l, CA_PROP_EVENT_ID))) {
@@ -701,7 +706,7 @@ int driver_play(ca_context *c, uint32_t id, ca_proplist *proplist, ca_finish_cal
out->type = OUTSTANDING_STREAM;
/* Let's stream the sample directly */
- if ((ret = ca_lookup_sound(&out->file, &p->theme, proplist)) < 0)
+ if ((ret = ca_lookup_sound(&out->file, &p->theme, c->props, proplist)) < 0)
goto finish;
ss.channels = sample_type_table[ca_sound_file_get_sample_type(out->file)];
@@ -862,7 +867,7 @@ int driver_cache(ca_context *c, ca_proplist *proplist) {
out->context = c;
out->sink_input = PA_INVALID_INDEX;
- if ((ret = convert_proplist(&l, proplist)))
+ if ((ret = convert_proplist(&l, proplist)) < 0)
goto finish;
if (!(n = pa_proplist_gets(l, CA_PROP_EVENT_ID))) {
@@ -889,7 +894,7 @@ int driver_cache(ca_context *c, ca_proplist *proplist) {
strip_canberra_data(l);
/* Let's stream the sample directly */
- if ((ret = ca_lookup_sound(&out->file, &p->theme, proplist)) < 0)
+ if ((ret = ca_lookup_sound(&out->file, &p->theme, c->props, proplist)) < 0)
goto finish;
ss.channels = sample_type_table[ca_sound_file_get_sample_type(out->file)];