Add the ability to specify that a frame should not be considered for caching
authorRussell Bryant <russell@russellbryant.com>
Sun, 3 Sep 2006 23:14:54 +0000 (23:14 +0000)
committerRussell Bryant <russell@russellbryant.com>
Sun, 3 Sep 2006 23:14:54 +0000 (23:14 +0000)
for uses in cases where you *know* that it will do no good.  This patch was
inspired by file for use in some work of his on mixmonitor/chanspy.

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@41958 65c4cc65-6c06-0410-ace0-fbb531ad65f3

include/asterisk/frame.h
main/frame.c

index bc7273a..4cc0cd5 100644 (file)
@@ -31,6 +31,8 @@ extern "C" {
 
 #include <sys/types.h>
 #include <sys/time.h>
+
+#include "asterisk/compiler.h"
 #include "asterisk/endian.h"
 #include "asterisk/linkedlists.h"
 
@@ -354,12 +356,18 @@ struct ast_option_header {
 struct ast_frame *ast_fralloc(char *source, int len);
 #endif
 
-/*!  \brief Frees a frame 
+/*!  
+ * \brief Frees a frame 
+ * 
  * \param fr Frame to free
- * Free a frame, and the memory it used if applicable
- * \return no return.
+ * \param cache Whether to consider this frame for frame caching
  */
-void ast_frfree(struct ast_frame *fr);
+void ast_frame_free(struct ast_frame *fr, int cache);
+
+static void force_inline ast_frfree(struct ast_frame *fr)
+{
+       ast_frame_free(fr, 1);
+}
 
 /*! \brief Makes a frame independent of any static storage
  * \param fr frame to act upon
index ba47f73..17da73f 100644 (file)
@@ -317,12 +317,12 @@ static void frame_cache_cleanup(void *data)
        free(frames);
 }
 
-void ast_frfree(struct ast_frame *fr)
+void ast_frame_free(struct ast_frame *fr, int cache)
 {
        if (!fr->mallocd)
                return;
 
-       if (fr->mallocd == AST_MALLOCD_HDR) {
+       if (cache && fr->mallocd == AST_MALLOCD_HDR) {
                /* Cool, only the header is malloc'd, let's just cache those for now 
                 * to keep things simple... */
                struct ast_frame_cache *frames;