From 617c912e950d582c5690e558b28fa1070f9b8263 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 6 Jun 2008 12:17:58 +0000 Subject: unify double inclusion defines src/sound-theme-spec.h src/read-wav.h src/read-vorbis.h src/proplist.h src/mutex.h src/llist.h src/common.h git-svn-id: file:///home/lennart/svn/public/libcanberra/trunk@52 01b60673-d06a-42c0-afdd-89cb8e0f78ac --- src/common.c | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) (limited to 'src/common.c') diff --git a/src/common.c b/src/common.c index 6e38c94..80be86c 100644 --- a/src/common.c +++ b/src/common.c @@ -36,6 +36,7 @@ int ca_context_create(ca_context **_c) { ca_context *c; int ret; + const char *d; ca_return_val_if_fail(_c, CA_ERROR_INVALID); @@ -43,16 +44,29 @@ int ca_context_create(ca_context **_c) { return CA_ERROR_OOM; if (!(c->mutex = ca_mutex_new())) { - ca_free(c); + ca_context_destroy(c); return CA_ERROR_OOM; } if ((ret = ca_proplist_create(&c->props)) < 0) { - ca_mutex_free(c->mutex); - ca_free(c); + ca_context_destroy(c); return ret; } + if ((d = getenv("CANBERRA_DRIVER"))) { + if ((ret = ca_context_set_driver(c, d)) < 0) { + ca_context_destroy(c); + return ret; + } + } + + if ((d = getenv("CANBERRA_DEVICE"))) { + if ((ret = ca_context_change_device(c, d)) < 0) { + ca_context_destroy(c); + return ret; + } + } + *_c = c; return CA_SUCCESS; } @@ -72,7 +86,9 @@ int ca_context_destroy(ca_context *c) { if (c->props) ca_assert_se(ca_proplist_destroy(c->props) == CA_SUCCESS); - ca_mutex_free(c->mutex); + if (c->mutex) + ca_mutex_free(c->mutex); + ca_free(c->driver); ca_free(c->device); ca_free(c); -- cgit