Minor optimizations.

* Made ast_audiohook_detach_list() and ast_audiohook_write_list_empty()
NULL tolerant.

* Made ast_audiohook_detach_list() return void since it is a destructor.


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@394836 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
Richard Mudgett
2013-07-19 23:30:10 +00:00
parent 2838683742
commit 643fb1ed14
3 changed files with 20 additions and 23 deletions

View File

@@ -175,11 +175,12 @@ int ast_audiohook_attach(struct ast_channel *chan, struct ast_audiohook *audioho
*/
int ast_audiohook_detach(struct ast_audiohook *audiohook);
/*! \brief Detach audiohooks from list and destroy said list
* \param audiohook_list List of audiohooks
* \return Returns 0 on success, -1 on failure
/*!
* \brief Detach audiohooks from list and destroy said list
* \param audiohook_list List of audiohooks (NULL tolerant)
* \return Nothing
*/
int ast_audiohook_detach_list(struct ast_audiohook_list *audiohook_list);
void ast_audiohook_detach_list(struct ast_audiohook_list *audiohook_list);
/*! \brief Move an audiohook from one channel to a new one
*
@@ -221,7 +222,9 @@ int ast_audiohook_detach_source(struct ast_channel *chan, const char *source);
int ast_audiohook_remove(struct ast_channel *chan, struct ast_audiohook *audiohook);
/*!
* \brief determines if a audiohook_list is empty or not.
* \brief Determine if a audiohook_list is empty or not.
*
* \param audiohook Audiohook to check. (NULL also means empty)
*
* retval 0 false, 1 true
*/

View File

@@ -512,14 +512,14 @@ int ast_audiohook_detach(struct ast_audiohook *audiohook)
return 0;
}
/*! \brief Detach audiohooks from list and destroy said list
* \param audiohook_list List of audiohooks
* \return Returns 0 on success, -1 on failure
*/
int ast_audiohook_detach_list(struct ast_audiohook_list *audiohook_list)
void ast_audiohook_detach_list(struct ast_audiohook_list *audiohook_list)
{
int i = 0;
struct ast_audiohook *audiohook = NULL;
int i;
struct ast_audiohook *audiohook;
if (!audiohook_list) {
return;
}
/* Drop any spies */
while ((audiohook = AST_LIST_REMOVE_HEAD(&audiohook_list->spy_list, list))) {
@@ -547,8 +547,6 @@ int ast_audiohook_detach_list(struct ast_audiohook_list *audiohook_list)
/* Free ourselves */
ast_free(audiohook_list);
return 0;
}
/*! \brief find an audiohook based on its source
@@ -899,13 +897,10 @@ static struct ast_frame *audio_audiohook_write_list(struct ast_channel *chan, st
int ast_audiohook_write_list_empty(struct ast_audiohook_list *audiohook_list)
{
if (AST_LIST_EMPTY(&audiohook_list->spy_list) &&
AST_LIST_EMPTY(&audiohook_list->whisper_list) &&
AST_LIST_EMPTY(&audiohook_list->manipulate_list)) {
return 1;
}
return 0;
return !audiohook_list
|| (AST_LIST_EMPTY(&audiohook_list->spy_list)
&& AST_LIST_EMPTY(&audiohook_list->whisper_list)
&& AST_LIST_EMPTY(&audiohook_list->manipulate_list));
}
/*! \brief Pass a frame off to be handled by the audiohook core

View File

@@ -2632,8 +2632,7 @@ void ast_set_hangupsource(struct ast_channel *chan, const char *source, int forc
int ast_channel_has_audio_frame_or_monitor(struct ast_channel *chan)
{
return ast_channel_monitor(chan)
|| (ast_channel_audiohooks(chan)
&& !ast_audiohook_write_list_empty(ast_channel_audiohooks(chan)))
|| !ast_audiohook_write_list_empty(ast_channel_audiohooks(chan))
|| !ast_framehook_list_contains_no_active(ast_channel_framehooks(chan));
}