From b9d7dfcc62c80d2b2827dd7b70701dfb21512c13 Mon Sep 17 00:00:00 2001 From: Jonathan Rose Date: Fri, 18 Apr 2014 20:09:24 +0000 Subject: ARI: Make bridges/{bridgeID}/play queue sound files Previously multiple play actions against a bridge at one time would cause the sounds to play simultaneously on the bridge. Now if a sound is already playing, the play action will queue playback to occur after the completion of other sounds currently on the queue. (closes issue ASTERISK-22677) Reported by: John Bigelow Review: https://reviewboard.asterisk.org/r/3379/ ........ Merged revisions 412639 from http://svn.asterisk.org/svn/asterisk/branches/12 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@412641 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- res/stasis/control.c | 10 ++++++++++ res/stasis/control.h | 11 +++++++++++ 2 files changed, 21 insertions(+) (limited to 'res/stasis') diff --git a/res/stasis/control.c b/res/stasis/control.c index d91a9f8d0..88ef8969d 100644 --- a/res/stasis/control.c +++ b/res/stasis/control.c @@ -368,12 +368,22 @@ void stasis_app_control_clear_roles(struct stasis_app_control *control) ast_channel_clear_bridge_roles(control->channel); } +int control_command_count(struct stasis_app_control *control) +{ + return ao2_container_count(control->command_queue); +} + int control_is_done(struct stasis_app_control *control) { /* Called from stasis_app_exec thread; no lock needed */ return control->is_done; } +void control_mark_done(struct stasis_app_control *control) +{ + control->is_done = 1; +} + struct stasis_app_control_continue_data { char context[AST_MAX_CONTEXT]; char extension[AST_MAX_EXTENSION]; diff --git a/res/stasis/control.h b/res/stasis/control.h index 6b602e770..0febd8438 100644 --- a/res/stasis/control.h +++ b/res/stasis/control.h @@ -57,6 +57,15 @@ int control_dispatch_all(struct stasis_app_control *control, */ void control_wait(struct stasis_app_control *control); +/*! + * \brief Returns the count of items in a control's command queue. + * + * \param control Control to count commands on + * + * \retval number of commands in the command que + */ +int control_command_count(struct stasis_app_control *control); + /*! * \brief Returns true if control_continue() has been called on this \a control. * @@ -66,5 +75,7 @@ void control_wait(struct stasis_app_control *control); */ int control_is_done(struct stasis_app_control *control); +void control_mark_done(struct stasis_app_control *control); + #endif /* _ASTERISK_RES_STASIS_CONTROL_H */ -- cgit v1.2.3