From 947848ebf6eb4706e8b3a88e7506e893b01f9a07 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Sat, 17 Sep 2011 19:33:51 +0200 Subject: output/roar: export volume methods Use these instead of exposing the internal roar_t struct. --- src/output/roar_output_plugin.c | 49 +++++++++++++++++++++++++++++++++++++++++ src/output/roar_output_plugin.h | 22 +++++++----------- 2 files changed, 57 insertions(+), 14 deletions(-) (limited to 'src/output') diff --git a/src/output/roar_output_plugin.c b/src/output/roar_output_plugin.c index f9d44a3d8..059f83b71 100644 --- a/src/output/roar_output_plugin.c +++ b/src/output/roar_output_plugin.c @@ -30,16 +30,65 @@ #include #include +#include #undef G_LOG_DOMAIN #define G_LOG_DOMAIN "roaraudio" +typedef struct roar +{ + roar_vs_t * vss; + int err; + char *host; + char *name; + int role; + struct roar_connection con; + struct roar_audio_info info; + GMutex *lock; + volatile bool alive; +} roar_t; + static inline GQuark roar_output_quark(void) { return g_quark_from_static_string("roar_output"); } +int +roar_output_get_volume(struct roar *roar) +{ + g_mutex_lock(roar->lock); + if (roar->vss && roar->alive) { + float l, r; + int error; + roar_vs_volume_get(roar->vss, &l, &r, &error); + g_mutex_unlock(roar->lock); + return (l + r) * 50; + } else { + g_mutex_unlock(roar->lock); + return 0; + } +} + +bool +roar_output_set_volume(struct roar *roar, unsigned volume) +{ + g_mutex_lock(roar->lock); + if (roar->vss && roar->alive) { + assert(volume <= 100); + + int error; + float level = volume / 100.0; + + roar_vs_volume_mono(roar->vss, level, &error); + g_mutex_unlock(roar->lock); + return true; + } else { + g_mutex_unlock(roar->lock); + return false; + } +} + static void roar_configure(struct roar * self, const struct config_param *param) { diff --git a/src/output/roar_output_plugin.h b/src/output/roar_output_plugin.h index 08e272007..e6eff1e08 100644 --- a/src/output/roar_output_plugin.h +++ b/src/output/roar_output_plugin.h @@ -22,20 +22,14 @@ #ifndef __ROAR_OUTPUT_H #define __ROAR_OUTPUT_H -#include -#include +#include -typedef struct roar -{ - roar_vs_t * vss; - int err; - char *host; - char *name; - int role; - struct roar_connection con; - struct roar_audio_info info; - GMutex *lock; - volatile bool alive; -} roar_t; +struct roar; + +int +roar_output_get_volume(struct roar *roar); + +bool +roar_output_set_volume(struct roar *roar, unsigned volume); #endif -- cgit v1.2.3