summaryrefslogtreecommitdiff
path: root/main/channel.c
diff options
context:
space:
mode:
authorGeorge Joseph <gjoseph@digium.com>2016-11-14 14:55:13 -0500
committerGeorge Joseph <gjoseph@digium.com>2016-11-14 14:14:28 -0600
commitf62c9c42fa8a8ca72496872c0d0065b2933e6d6b (patch)
treecc4a6f8f1e23ff6a7f66846b87706048851df101 /main/channel.c
parent2966fa5ad770710ca1d0ca7f306def6792255bd9 (diff)
Revert "Revert "AGI: Only defer frames when in an interception routine.""
This reverts commit 6bce938c2fcb60b7a77a0e997a6518860c0bfa39. Change-Id: Iadbf462bf2a52e8b2fa9ebc75b37b1f688ba51d9
Diffstat (limited to 'main/channel.c')
-rw-r--r--main/channel.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/main/channel.c b/main/channel.c
index 6317f6f20..b30bb1de7 100644
--- a/main/channel.c
+++ b/main/channel.c
@@ -10283,9 +10283,15 @@ int ast_channel_connected_line_macro(struct ast_channel *autoservice_chan, struc
ast_party_connected_line_copy(ast_channel_connected(macro_chan), connected);
}
+ ast_channel_start_defer_frames(macro_chan);
ast_channel_unlock(macro_chan);
retval = ast_app_run_macro(autoservice_chan, macro_chan, macro, macro_args);
+
+ ast_channel_lock(macro_chan);
+ ast_channel_stop_defer_frames(macro_chan);
+ ast_channel_unlock(macro_chan);
+
if (!retval) {
struct ast_party_connected_line saved_connected;
@@ -10333,9 +10339,15 @@ int ast_channel_redirecting_macro(struct ast_channel *autoservice_chan, struct a
ast_party_redirecting_copy(ast_channel_redirecting(macro_chan), redirecting);
}
+ ast_channel_start_defer_frames(macro_chan);
ast_channel_unlock(macro_chan);
retval = ast_app_run_macro(autoservice_chan, macro_chan, macro, macro_args);
+
+ ast_channel_lock(macro_chan);
+ ast_channel_stop_defer_frames(macro_chan);
+ ast_channel_unlock(macro_chan);
+
if (!retval) {
struct ast_party_redirecting saved_redirecting;
@@ -10376,9 +10388,15 @@ int ast_channel_connected_line_sub(struct ast_channel *autoservice_chan, struct
ast_party_connected_line_copy(ast_channel_connected(sub_chan), connected);
}
+ ast_channel_start_defer_frames(sub_chan);
ast_channel_unlock(sub_chan);
retval = ast_app_run_sub(autoservice_chan, sub_chan, sub, sub_args, 0);
+
+ ast_channel_lock(sub_chan);
+ ast_channel_stop_defer_frames(sub_chan);
+ ast_channel_unlock(sub_chan);
+
if (!retval) {
struct ast_party_connected_line saved_connected;
@@ -10419,9 +10437,15 @@ int ast_channel_redirecting_sub(struct ast_channel *autoservice_chan, struct ast
ast_party_redirecting_copy(ast_channel_redirecting(sub_chan), redirecting);
}
+ ast_channel_start_defer_frames(sub_chan);
ast_channel_unlock(sub_chan);
retval = ast_app_run_sub(autoservice_chan, sub_chan, sub, sub_args, 0);
+
+ ast_channel_lock(sub_chan);
+ ast_channel_stop_defer_frames(sub_chan);
+ ast_channel_unlock(sub_chan);
+
if (!retval) {
struct ast_party_redirecting saved_redirecting;