reset channel volumes when exiting apps that use them
authorKevin P. Fleming <kpfleming@digium.com>
Wed, 7 Sep 2005 14:15:37 +0000 (14:15 +0000)
committerKevin P. Fleming <kpfleming@digium.com>
Wed, 7 Sep 2005 14:15:37 +0000 (14:15 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@6525 65c4cc65-6c06-0410-ace0-fbb531ad65f3

apps/app_chanspy.c
apps/app_meetme.c

index 93c8987..89ee070 100755 (executable)
@@ -535,7 +535,7 @@ static int chanspy_exec(struct ast_channel *chan, void *data)
                oldwf = 0,
                fd = 0;
        struct ast_flags flags;
-
+       signed char zero_volume = 0;
 
        if (!(args = ast_strdupa((char *)data))) {
                ast_log(LOG_ERROR, "Out of memory!\n");
@@ -703,6 +703,9 @@ static int chanspy_exec(struct ast_channel *chan, void *data)
        }
 
        ast_clear_flag(chan, AST_FLAG_SPYING);
+
+       ast_channel_setoption(chan, AST_OPTION_TXGAIN, &zero_volume, sizeof(zero_volume), 0);
+
        ALL_DONE(u, res);
 }
 
index 89a96ac..95aaadd 100755 (executable)
@@ -365,6 +365,14 @@ static void tweak_listen_volume(struct ast_conf_user *user, enum volume_action a
                user->listen.actual = user->listen.desired;
 }
 
+static void reset_volumes(struct ast_conf_user *user)
+{
+       signed char zero_volume = 0;
+
+       ast_channel_setoption(user->chan, AST_OPTION_TXGAIN, &zero_volume, sizeof(zero_volume), 0);
+       ast_channel_setoption(user->chan, AST_OPTION_RXGAIN, &zero_volume, sizeof(zero_volume), 0);
+}
+
 static void adjust_volume(struct ast_frame *f, int vol)
 {
        int count;
@@ -1473,7 +1481,6 @@ zapretry:
                close(fd);
        else {
                /* Take out of conference */
-               /* Add us to the conference */
                ztc.chan = 0;   
                ztc.confno = 0;
                ztc.confmode = 0;
@@ -1482,6 +1489,8 @@ zapretry:
                }
        }
 
+       reset_volumes(user);
+
        ast_mutex_lock(&conflock);
        if (!(confflags & CONFFLAG_QUIET) && !(confflags & CONFFLAG_MONITOR) && !(confflags & CONFFLAG_ADMIN))
                conf_play(chan, conf, LEAVE);
@@ -1502,16 +1511,16 @@ zapretry:
 
 outrun:
        ast_mutex_lock(&conflock);
-       if (confflags &  CONFFLAG_MONITORTALKER && dsp)
+       if (confflags & CONFFLAG_MONITORTALKER && dsp)
                ast_dsp_free(dsp);
        
        if (user->user_no) { /* Only cleanup users who really joined! */
                manager_event(EVENT_FLAG_CALL, "MeetmeLeave", 
-                       "Channel: %s\r\n"
-                       "Uniqueid: %s\r\n"
-                       "Meetme: %s\r\n"
-                       "Usernum: %d\r\n",
-                       chan->name, chan->uniqueid, conf->confno, user->user_no);
+                             "Channel: %s\r\n"
+                             "Uniqueid: %s\r\n"
+                             "Meetme: %s\r\n"
+                             "Usernum: %d\r\n",
+                             chan->name, chan->uniqueid, conf->confno, user->user_no);
                conf->users--;
                if (confflags & CONFFLAG_MARKEDUSER) 
                        conf->markedusers--;