Minor optimizations.
authorRichard Mudgett <rmudgett@digium.com>
Fri, 19 Jul 2013 23:30:10 +0000 (23:30 +0000)
committerRichard Mudgett <rmudgett@digium.com>
Fri, 19 Jul 2013 23:30:10 +0000 (23:30 +0000)
* 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

include/asterisk/audiohook.h
main/audiohook.c
main/channel.c

index 516c59f..1a4e469 100644 (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
  */
index d469362..6e02946 100644 (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
index f76d6a8..c598319 100644 (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));
 }