From 2c85f4862cc90db58c5a5cce21a4086b754c8c2d Mon Sep 17 00:00:00 2001
From: Josh Roberson <josh@asteriasgi.com>
Date: Mon, 18 Jul 2005 15:51:09 +0000
Subject: [PATCH] fix smoothfade for osx.

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@6153 65c4cc65-6c06-0410-ace0-fbb531ad65f3
---
 muted.c | 34 +++++++++++++++++++++++++++++-----
 1 file changed, 29 insertions(+), 5 deletions(-)

diff --git a/muted.c b/muted.c
index 17cc63bfe6..baeb63e1ab 100755
--- a/muted.c
+++ b/muted.c
@@ -378,30 +378,46 @@ static float oldvol = 0;
 static float mutevol = 0;
 #endif
 
+#ifndef __Darwin__
 static int mutedlevel(int orig, int mutelevel)
 {
 	int l = orig >> 8;
 	int r = orig & 0xff;
 	l = (float)(mutelevel) * (float)(l) / 100.0;
 	r = (float)(mutelevel) * (float)(r) / 100.0;
+
 	return (l << 8) | r;
+#else
+static float mutedlevel(float orig, float mutelevel)
+{
+	float master = orig;
+	master = mutelevel * master / 100.0;
+	return master;
+#endif
+	
 }
 
 static void mute(void)
 {
 #ifndef __Darwin__
 	int vol;
+	int start;
+	int x;
 #else
 	float vol;
+	float start = 1.0;
+	float x;
 #endif
-	int start;
-	int x;
 	vol = getvol();
 	oldvol = vol;
-	if (smoothfade) 
+	if (smoothfade)
+#ifdef __Darwin__ 
+		start = mutelevel;
+#else
 		start = 100;
 	else
 		start = mutelevel;
+#endif
 	for (x=start;x>=mutelevel;x-=stepsize) {
 		mutevol = mutedlevel(vol, x);
 		setvol(mutevol);
@@ -423,23 +439,31 @@ static void unmute(void)
 {
 #ifdef __Darwin__
 	float vol;
+	float start;
+	float x;
 #else
 	int vol;
-#endif
 	int start;
 	int x;
+#endif
 	vol = getvol();
 	if (debug)
 #ifdef __Darwin__
 		printf("Unmute from '%f' (should be '%f') to '%f'!\n", vol, mutevol, oldvol);
+	mutevol = vol;
+	if (vol == mutevol) {
 #else
 		printf("Unmute from '%04x' (should be '%04x') to '%04x'!\n", vol, mutevol, oldvol);
-#endif
 	if ((int)vol == mutevol) {
+#endif
 		if (smoothfade)
 			start = mutelevel;
 		else
+#ifdef __Darwin__
+			start = 1.0;
+#else
 			start = 100;
+#endif
 		for (x=start;x<100;x+=stepsize) {
 			mutevol = mutedlevel(oldvol, x);
 			setvol(mutevol);
-- 
GitLab