From 18301dfca56ba8545549e80f84423d83a46c6b64 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 2 Oct 2007 20:26:08 +0000 Subject: a lot of minor cleanups git-svn-id: file:///home/lennart/svn/public/libsydney/trunk@36 9ba3c220-e4d3-45a2-8aa3-73fcc9aff6ce --- src/common.c | 108 +++++++++++++++++++++++++++++++---------------------------- 1 file changed, 56 insertions(+), 52 deletions(-) (limited to 'src/common.c') diff --git a/src/common.c b/src/common.c index 5a81d02..c8017e8 100644 --- a/src/common.c +++ b/src/common.c @@ -1,3 +1,7 @@ +#ifdef HAVE_CONFIG_H +#include +#endif + #include #include #include @@ -21,11 +25,11 @@ static sa_stream_t *stream_alloc(void) { /* All fields a carefully chosen in a way that initializing them * NUL bytes is sufficient */ - if (!(d->mutex = sa_mutex_new(0))) { + if (!(d->mutex = sa_mutex_new(FALSE, FALSE))) { sa_free(d); return NULL; } - + return d; } @@ -34,7 +38,7 @@ int sa_stream_create_opaque( const char *client_name, sa_mode_t mode, const char *codec) { - + int error; sa_return_val_if_fail(s, SA_ERROR_INVALID); @@ -74,7 +78,7 @@ int sa_stream_create_pcm( int ret; size_t lwm; - + sa_return_val_if_fail(s, SA_ERROR_INVALID); sa_return_val_if_fail(mode == SA_MODE_RDONLY || mode == SA_MODE_WRONLY || mode == SA_MODE_RDWR, SA_ERROR_INVALID); sa_return_val_if_fail(format < _SA_PCM_FORMAT_MAX, SA_ERROR_INVALID); @@ -100,12 +104,12 @@ int sa_stream_create_pcm( if ((ret = sa_stream_change_rate(*s, rate))) goto fail; - + lwm = ((*s)->pcm_frame_size * (*s)->pcm_attrs.rate) / 20; /* 50 ms */ if (lwm <= 0) lwm = (*s)->pcm_frame_size * (*s)->pcm_attrs.rate; /* 1s */ - + if (mode & SA_MODE_RDONLY) { if ((ret = sa_stream_set_read_lower_watermark(*s, lwm))) @@ -113,7 +117,7 @@ int sa_stream_create_pcm( if ((ret = sa_stream_set_read_upper_watermark(*s, lwm*2))) goto fail; - } + } if (mode & SA_MODE_WRONLY) { @@ -123,24 +127,24 @@ int sa_stream_create_pcm( if ((ret = sa_stream_set_write_upper_watermark(*s, lwm*2))) goto fail; } - + oil_init(); if (client_name) if ((ret = sa_stream_change_meta_data(*s, SA_META_CLIENT_NAME, client_name, strlen(client_name))) < 0) goto fail; - + return SA_SUCCESS; fail: - + sa_stream_destroy(*s); return ret; } int sa_stream_open(sa_stream_t *s) { int ret; - + sa_return_val_if_fail(s, SA_ERROR_INVALID); sa_mutex_lock(s->mutex); sa_return_val_if_fail_mutex(s->mutex, s->state == SA_STATE_INIT, SA_ERROR_STATE); @@ -161,7 +165,7 @@ int sa_stream_open(sa_stream_t *s) { int sa_stream_destroy(sa_stream_t *s) { int ret; unsigned u; - + sa_return_val_if_fail_mutex(s->mutex, s, SA_ERROR_INVALID); ret = driver_destroy(s); @@ -241,7 +245,7 @@ int sa_stream_set_read_upper_watermark(sa_stream_t *s, size_t size) { int sa_stream_set_channel_map(sa_stream_t *s, const sa_channel_t *map, unsigned n) { const sa_channel_t *c; sa_channel_t *m; - + sa_return_val_if_fail(s, SA_ERROR_INVALID); sa_return_val_if_fail(map, SA_ERROR_INVALID); sa_mutex_lock(s->mutex); @@ -254,7 +258,7 @@ int sa_stream_set_channel_map(sa_stream_t *s, const sa_channel_t *map, unsigned sa_mutex_unlock(s->mutex); return SA_ERROR_INVALID; } - + if (!(m = sa_memdup(map, sizeof(sa_channel_t) * s->pcm_attrs.nchannels))) { sa_mutex_unlock(s->mutex); return SA_ERROR_OOM; @@ -305,7 +309,7 @@ int sa_stream_set_dynamic_rate(sa_stream_t *s, int enable) { int sa_stream_set_driver(sa_stream_t *s, const char *driver) { char *d; - + sa_return_val_if_fail(s, SA_ERROR_INVALID); sa_return_val_if_fail(driver, SA_ERROR_INVALID); sa_mutex_lock(s->mutex); @@ -315,17 +319,17 @@ int sa_stream_set_driver(sa_stream_t *s, const char *driver) { sa_mutex_unlock(s->mutex); return SA_ERROR_OOM; } - + sa_free(s->driver); s->driver = d; - + sa_mutex_unlock(s->mutex); return SA_SUCCESS; } int sa_stream_start_thread(sa_stream_t *s, sa_event_callback_t callback) { int r; - + sa_return_val_if_fail(s, SA_ERROR_INVALID); sa_return_val_if_fail(callback, SA_ERROR_INVALID); sa_mutex_lock(s->mutex); @@ -336,14 +340,14 @@ int sa_stream_start_thread(sa_stream_t *s, sa_event_callback_t callback) { if (r == SA_SUCCESS) s->callback = callback; - + sa_mutex_unlock(s->mutex); return r; } int sa_stream_stop_thread(sa_stream_t *s) { int r; - + sa_return_val_if_fail(s, SA_ERROR_INVALID); sa_mutex_lock(s->mutex); sa_return_val_if_fail_mutex(s->mutex, s->state == SA_STATE_RUNNING || s->state == SA_STATE_STOPPED, SA_ERROR_STATE); @@ -353,7 +357,7 @@ int sa_stream_stop_thread(sa_stream_t *s) { if (r == SA_SUCCESS) s->callback = NULL; - + sa_mutex_unlock(s->mutex); return r; } @@ -361,7 +365,7 @@ int sa_stream_stop_thread(sa_stream_t *s) { int sa_stream_change_device(sa_stream_t *s, const char *device_name) { char *d; int ret; - + sa_return_val_if_fail(s, SA_ERROR_INVALID); sa_return_val_if_fail(device_name, SA_ERROR_INVALID); @@ -379,7 +383,7 @@ int sa_stream_change_device(sa_stream_t *s, const char *device_name) { sa_free(d); sa_mutex_unlock(s->mutex); - + return ret; } @@ -404,11 +408,11 @@ int sa_stream_change_read_volume(sa_stream_t *s, const int32_t vol[], unsigned n sa_mutex_unlock(s->mutex); return SA_ERROR_OOM; } - + for (i = 0; i < s->pcm_attrs.nchannels; i++) v[i] = vol[0]; } - + ret = s->state == SA_STATE_INIT ? SA_SUCCESS : driver_change_read_volume(s, v); if (ret == SA_SUCCESS) { @@ -442,7 +446,7 @@ int sa_stream_change_write_volume(sa_stream_t *s, const int32_t vol[], unsigned sa_mutex_unlock(s->mutex); return SA_ERROR_OOM; } - + for (i = 0; i < s->pcm_attrs.nchannels; i++) v[i] = vol[0]; } @@ -461,7 +465,7 @@ int sa_stream_change_write_volume(sa_stream_t *s, const int32_t vol[], unsigned int sa_stream_change_rate(sa_stream_t *s, unsigned rate) { int ret; - + sa_return_val_if_fail(s, SA_ERROR_INVALID); sa_return_val_if_fail(rate > 0, SA_ERROR_INVALID); sa_mutex_lock(s->mutex); @@ -480,9 +484,9 @@ int sa_stream_change_rate(sa_stream_t *s, unsigned rate) { int sa_stream_change_user_data(sa_stream_t *s, const void *value) { sa_return_val_if_fail(s->mutex, SA_ERROR_INVALID); sa_mutex_lock(s->mutex); - + s->user_data = (void*) value; - + sa_mutex_unlock(s->mutex); return SA_SUCCESS; } @@ -597,7 +601,7 @@ int sa_stream_get_mode(sa_stream_t *s, sa_mode_t *access_mode) { int sa_stream_get_codec(sa_stream_t *s, char *codec, size_t *size) { size_t n; - + sa_return_val_if_fail(s, SA_ERROR_INVALID); sa_return_val_if_fail(size && (*size == 0 || codec), SA_ERROR_INVALID); sa_mutex_lock(s->mutex); @@ -612,7 +616,7 @@ int sa_stream_get_codec(sa_stream_t *s, char *codec, size_t *size) { if (codec) strcpy(codec, s->codec); *size = n; - + sa_mutex_unlock(s->mutex); return SA_SUCCESS; } @@ -719,7 +723,7 @@ int sa_stream_get_dynamic_rate(sa_stream_t *s, int *enabled) { int sa_stream_get_driver(sa_stream_t *s, char *driver, size_t *size) { size_t n; - + sa_return_val_if_fail(s, SA_ERROR_INVALID); sa_return_val_if_fail(size && (*size == 0 || driver), SA_ERROR_INVALID); sa_mutex_lock(s->mutex); @@ -734,7 +738,7 @@ int sa_stream_get_driver(sa_stream_t *s, char *driver, size_t *size) { if (driver) strcpy(driver, s->driver); *size = n; - + sa_mutex_unlock(s->mutex); return SA_SUCCESS; } @@ -885,7 +889,7 @@ int sa_stream_get_event_notify(sa_stream_t *s, sa_notify_t *notify) { int sa_stream_get_position(sa_stream_t *s, sa_position_t position, int64_t *pos) { int ret; - + sa_return_val_if_fail(s, SA_ERROR_INVALID); sa_return_val_if_fail(pos, SA_ERROR_INVALID); sa_return_val_if_fail(position < _SA_POSITION_MAX, SA_ERROR_INVALID); @@ -930,7 +934,7 @@ int sa_stream_read_ni(sa_stream_t *s, unsigned channel, void *data, size_t nbyte sa_return_val_if_fail_mutex(s->mutex, s->state == SA_STATE_RUNNING || s->state == SA_STATE_STOPPED, SA_ERROR_STATE); ret = driver_read_ni(s, channel, data, nbytes); - + sa_mutex_unlock(s->mutex); return ret; } @@ -945,7 +949,7 @@ int sa_stream_write_ni(sa_stream_t *s, unsigned channel, const void *data, size_ int sa_stream_pwrite(sa_stream_t *s, const void *data, size_t nbytes, int64_t offset, sa_seek_t whence) { int ret; - + sa_return_val_if_fail(s, SA_ERROR_INVALID); sa_return_val_if_fail(data, SA_ERROR_INVALID); sa_return_val_if_fail(nbytes > 0, SA_ERROR_INVALID); @@ -1002,7 +1006,7 @@ int sa_stream_get_read_size(sa_stream_t *s, size_t *size) { int sa_stream_get_write_size(sa_stream_t *s, size_t *size) { int ret; - + sa_return_val_if_fail(s, SA_ERROR_INVALID); sa_return_val_if_fail(size, SA_ERROR_INVALID); sa_mutex_lock(s->mutex); @@ -1017,7 +1021,7 @@ int sa_stream_get_write_size(sa_stream_t *s, size_t *size) { int sa_stream_resume(sa_stream_t *s) { int ret; - + sa_return_val_if_fail(s, SA_ERROR_INVALID); sa_mutex_lock(s->mutex); sa_return_val_if_fail_mutex(s->mutex, s->state == SA_STATE_RUNNING || s->state == SA_STATE_STOPPED, SA_ERROR_STATE); @@ -1043,7 +1047,7 @@ int sa_stream_pause(sa_stream_t *s) { int sa_stream_drain(sa_stream_t *s) { int ret; - + sa_return_val_if_fail(s, SA_ERROR_INVALID); sa_mutex_lock(s->mutex); sa_return_val_if_fail_mutex(s->mutex, s->mode & SA_MODE_WRONLY, SA_ERROR_STATE); @@ -1056,7 +1060,7 @@ int sa_stream_drain(sa_stream_t *s) { } size_t sa_get_pcm_sample_size(sa_pcm_format_t f) { - + switch (f) { case SA_PCM_FORMAT_U8: case SA_PCM_FORMAT_ULAW: @@ -1069,7 +1073,7 @@ size_t sa_get_pcm_sample_size(sa_pcm_format_t f) { case SA_PCM_FORMAT_S24_LE: case SA_PCM_FORMAT_S24_BE: return 3; - + case SA_PCM_FORMAT_S32_LE: case SA_PCM_FORMAT_S32_BE: case SA_PCM_FORMAT_FLOAT32_LE: @@ -1089,13 +1093,13 @@ static int meta_check_png(const void *data, size_t size) { if (size < sizeof(png_signature)) return 0; - + return memcmp(data, png_signature, 8) == 0; } static int meta_check_utf8(const void *data, size_t size) { int32_t idx; - + oil_utf8_validate(&idx, data, size); return (size_t) idx == size; @@ -1110,14 +1114,14 @@ static int meta_check_pid(const void *data, size_t size) { if (memchr(data, 0, size)) return 0; - + if (!(t = sa_strndup(data, size))) return 0; - + errno = 0; pid = strtol(t, NULL, 10); sa_free(t); - + if (errno != 0) return 0; @@ -1135,7 +1139,7 @@ static int meta_check_icon_name(const void *data, size_t size) { if (memchr(data, 0, size)) return 0; - + if (size == 1 && t[0] == '.') return 0; @@ -1144,7 +1148,7 @@ static int meta_check_icon_name(const void *data, size_t size) { if (memchr(t, '/', size)) return 0; - + return 1; } @@ -1154,7 +1158,7 @@ static int meta_check_word(const void *data, size_t size) { for (; size > 0; size --, t++) if (*t <= 32 || *t >= 127) return 0; - + return 1; } @@ -1175,7 +1179,7 @@ int sa_stream_change_meta_data(sa_stream_t *s, const char *name, const void *dat meta_check_word, /* FIXME */ meta_check_word, /* FIXME */ }; - + sa_return_val_if_fail(s, SA_ERROR_INVALID); sa_return_val_if_fail(name, SA_ERROR_INVALID); sa_mutex_lock(s->mutex); @@ -1205,7 +1209,7 @@ int sa_stream_change_meta_data(sa_stream_t *s, const char *name, const void *dat s->meta_data_size[m->idx] = size; } else sa_free(d); - + sa_mutex_unlock(s->mutex); return ret; } @@ -1217,7 +1221,7 @@ int sa_stream_get_meta_data(sa_stream_t *s, const char *name, void *data, size_t sa_return_val_if_fail(name, SA_ERROR_INVALID); sa_return_val_if_fail(size && (*size == 0 || data), SA_ERROR_INVALID); sa_mutex_lock(s->mutex); - + if (!(m = sa_lookup_meta_name(name, strlen(name)))) { sa_mutex_unlock(s->mutex); return SA_ERROR_NO_META; -- cgit