From 8d01110c8407b1efbdbe255f2e27a6daf6ac2d9a Mon Sep 17 00:00:00 2001
From: Max Kellermann <max@duempel.org>
Date: Sat, 14 Mar 2009 11:35:54 +0100
Subject: [PATCH] mixer_control: moved functions to mixer_all.c

---
 src/mixer_all.c     | 65 ++++++++++++++++++++++++++++++++++++++++++---
 src/mixer_control.c | 61 ------------------------------------------
 src/mixer_control.h |  6 -----
 3 files changed, 61 insertions(+), 71 deletions(-)

diff --git a/src/mixer_all.c b/src/mixer_all.c
index de5856bbb..b4ac024b9 100644
--- a/src/mixer_all.c
+++ b/src/mixer_all.c
@@ -18,14 +18,37 @@
  */
 
 #include "mixer_all.h"
-#include "mixer_control.h"
+#include "mixer_api.h"
 #include "output_all.h"
+#include "output_plugin.h"
+#include "output_internal.h"
 
 #include <glib.h>
 
+#include <assert.h>
+
 #undef G_LOG_DOMAIN
 #define G_LOG_DOMAIN "mixer"
 
+static int
+output_mixer_get_volume(unsigned i)
+{
+	struct audio_output *output;
+	struct mixer *mixer;
+
+	assert(i < audio_output_count());
+
+	output = audio_output_get(i);
+	if (!output->enabled)
+		return -1;
+
+	mixer = ao_plugin_get_mixer(output->plugin, output->data);
+	if (mixer == NULL)
+		return -1;
+
+	return mixer_get_volume(mixer);
+}
+
 int
 mixer_all_get_volume(void)
 {
@@ -33,8 +56,9 @@ mixer_all_get_volume(void)
 	int volume, total = 0;
 
 	for (unsigned i = 0; i < count; i++) {
-		if (mixer_control_getvol(i, &volume)) {
-			g_debug("device %d: volume=%d", i, volume);
+		volume = output_mixer_get_volume(i);
+		g_debug("device %d: volume=%d", i, volume);
+		if (volume >= 0) {
 			total += volume;
 			++ok;
 		}
@@ -46,6 +70,38 @@ mixer_all_get_volume(void)
 	return total / ok;
 }
 
+static bool
+output_mixer_set_volume(unsigned i, int volume, bool relative)
+{
+	struct audio_output *output;
+	struct mixer *mixer;
+
+	assert(i < audio_output_count());
+
+	output = audio_output_get(i);
+	if (!output->enabled)
+		return false;
+
+	mixer = ao_plugin_get_mixer(output->plugin, output->data);
+	if (mixer == NULL)
+		return false;
+
+	if (relative) {
+		int prev = mixer_get_volume(mixer);
+		if (prev < 0)
+			return false;
+
+		volume += prev;
+	}
+
+	if (volume > 100)
+		volume = 100;
+	else if (volume < 0)
+		volume = 0;
+
+	return mixer_set_volume(mixer, volume);
+}
+
 bool
 mixer_all_set_volume(int volume, bool relative)
 {
@@ -53,7 +109,8 @@ mixer_all_set_volume(int volume, bool relative)
 	unsigned count = audio_output_count();
 
 	for (unsigned i = 0; i < count; i++)
-		success = mixer_control_setvol(i, volume, relative) || success;
+		success = output_mixer_set_volume(i, volume, relative)
+			|| success;
 
 	return success;
 }
diff --git a/src/mixer_control.c b/src/mixer_control.c
index 66b68bde4..229c3683e 100644
--- a/src/mixer_control.c
+++ b/src/mixer_control.c
@@ -19,66 +19,5 @@
 
 #include "mixer_control.h"
 #include "mixer_api.h"
-#include "output_all.h"
-#include "output_plugin.h"
-#include "output_internal.h"
 
 #include <assert.h>
-
-bool
-mixer_control_setvol(unsigned int device, int volume, int rel)
-{
-	struct audio_output *output;
-	struct mixer *mixer;
-
-	assert(device < audio_output_count());
-
-	output = audio_output_get(device);
-	if (!output->enabled)
-		return false;
-
-	mixer = ao_plugin_get_mixer(output->plugin, output->data);
-	if (mixer != NULL) {
-		if (rel) {
-			int cur_volume = mixer_get_volume(mixer);
-			if (cur_volume < 0)
-				return false;
-
-			volume = volume + cur_volume;
-		}
-		if (volume > 100)
-			volume = 100;
-		else if (volume < 0)
-			volume = 0;
-
-		return mixer_set_volume(mixer, volume);
-	}
-	return false;
-}
-
-bool
-mixer_control_getvol(unsigned int device, int *volume)
-{
-	struct audio_output *output;
-	struct mixer *mixer;
-
-	assert(device < audio_output_count());
-
-	output = audio_output_get(device);
-	if (!output->enabled)
-		return false;
-
-	mixer = ao_plugin_get_mixer(output->plugin, output->data);
-	if (mixer != NULL) {
-		int volume2;
-
-		volume2 = mixer_get_volume(mixer);
-		if (volume2 < 0)
-			return false;
-
-		*volume = volume2;
-		return true;
-	}
-
-	return false;
-}
diff --git a/src/mixer_control.h b/src/mixer_control.h
index 7276ab745..4f3a97dbc 100644
--- a/src/mixer_control.h
+++ b/src/mixer_control.h
@@ -22,10 +22,4 @@
 
 #include <stdbool.h>
 
-bool
-mixer_control_setvol(unsigned int device, int volume, int rel);
-
-bool
-mixer_control_getvol(unsigned int device, int *volume);
-
 #endif
-- 
2.24.1