* 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
*/
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
*
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
*/
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))) {
/* Free ourselves */
ast_free(audiohook_list);
-
- return 0;
}
/*! \brief find an audiohook based on its source
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
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));
}