diff options
author | Lennart Poettering <lennart@poettering.net> | 2008-06-23 18:14:54 +0200 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2008-06-23 18:14:54 +0200 |
commit | 3639e65c41630247c4910e1679fd9d40b7f9311d (patch) | |
tree | 076be635fb0d9af7bc19f0874c861b6bf9aef714 /src/common.c | |
parent | c47b8cd562cc66881efe257b5ebc3109e07097a9 (diff) |
add new property CA_PROP_CANBERRA_ENABLE for disabling/enabling event sounds
Diffstat (limited to 'src/common.c')
-rw-r--r-- | src/common.c | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/src/common.c b/src/common.c index b285514..71b887a 100644 --- a/src/common.c +++ b/src/common.c @@ -518,6 +518,8 @@ int ca_context_play(ca_context *c, uint32_t id, ...) { int ca_context_play_full(ca_context *c, uint32_t id, ca_proplist *p, ca_finish_callback_t cb, void *userdata) { int ret; + const char *t; + ca_bool_t enabled = TRUE; ca_return_val_if_fail(c, CA_ERROR_INVALID); ca_return_val_if_fail(p, CA_ERROR_INVALID); @@ -528,6 +530,18 @@ int ca_context_play_full(ca_context *c, uint32_t id, ca_proplist *p, ca_finish_c ca_return_val_if_fail_unlock(ca_proplist_contains(p, CA_PROP_EVENT_ID) || ca_proplist_contains(c->props, CA_PROP_EVENT_ID), CA_ERROR_INVALID, c->mutex); + ca_mutex_lock(c->props->mutex); + if ((t = ca_proplist_gets_unlocked(c->props, CA_PROP_CANBERRA_ENABLE))) + enabled = !streq(t, "0"); + ca_mutex_unlock(c->props->mutex); + + ca_mutex_lock(p->mutex); + if ((t = ca_proplist_gets_unlocked(p, CA_PROP_CANBERRA_ENABLE))) + enabled = !streq(t, "0"); + ca_mutex_unlock(p->mutex); + + ca_return_val_if_fail_unlock(enabled, CA_ERROR_DISABLED, c->mutex); + if ((ret = context_open_unlocked(c)) < 0) goto finish; @@ -674,7 +688,8 @@ const char *ca_strerror(int code) { [-CA_ERROR_NOTAVAILABLE] = "Not available", [-CA_ERROR_ACCESS] = "Access forbidden", [-CA_ERROR_IO] = "IO error", - [-CA_ERROR_INTERNAL] = "Internal error" + [-CA_ERROR_INTERNAL] = "Internal error", + [-CA_ERROR_DISABLED] = "Sounds disabled" }; ca_return_val_if_fail(code <= 0, NULL); |