]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Turn on volume adjustment if it needs to be on (issue #8136 reported by mnicholson)
authorJoshua Colp <jcolp@digium.com>
Fri, 13 Oct 2006 17:01:22 +0000 (17:01 +0000)
committerJoshua Colp <jcolp@digium.com>
Fri, 13 Oct 2006 17:01:22 +0000 (17:01 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@45060 65c4cc65-6c06-0410-ace0-fbb531ad65f3

apps/app_chanspy.c

index 873813aa3fc2de8c918045cc5868b1646fcfddaa..fcb931d3281d5cad0e832d3739403e610f9027bc 100644 (file)
@@ -259,8 +259,12 @@ static int channel_spy(struct ast_channel *chan, struct ast_channel *spyee, int
        ast_mutex_init(&csth.spy.lock);
        csth.volfactor = *volfactor;
        set_volume(chan, &csth);
-       csth.spy.read_vol_adjustment = csth.volfactor;
-       csth.spy.write_vol_adjustment = csth.volfactor;
+       if (csth.volfactor) {
+               ast_set_flag(&csth.spy, CHANSPY_READ_VOLADJUST);
+               csth.spy.read_vol_adjustment = csth.volfactor;
+               ast_set_flag(&csth.spy, CHANSPY_WRITE_VOLADJUST);
+               csth.spy.write_vol_adjustment = csth.volfactor;
+       }
        csth.fd = fd;
 
        if (start_spying(spyee, chan, &csth.spy)) {
@@ -306,8 +310,15 @@ static int channel_spy(struct ast_channel *chan, struct ast_channel *spyee, int
                                        ast_verbose(VERBOSE_PREFIX_3 "Setting spy volume on %s to %d\n", chan->name, *volfactor);
                                csth.volfactor = *volfactor;
                                set_volume(chan, &csth);
-                               csth.spy.read_vol_adjustment = csth.volfactor;
-                               csth.spy.write_vol_adjustment = csth.volfactor;
+                               if (csth.volfactor) {
+                                       ast_set_flag(&csth.spy, CHANSPY_READ_VOLADJUST);
+                                       csth.spy.read_vol_adjustment = csth.volfactor;
+                                       ast_set_flag(&csth.spy, CHANSPY_WRITE_VOLADJUST);
+                                       csth.spy.write_vol_adjustment = csth.volfactor;
+                               } else {
+                                       ast_clear_flag(&csth.spy, CHANSPY_READ_VOLADJUST);
+                                       ast_clear_flag(&csth.spy, CHANSPY_WRITE_VOLADJUST);
+                               }
                        }
                } else if (res == '*') {
                        break;