Add the ability to specify that a frame should not be considered for caching

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
1.4
Russell Bryant 19 years ago
parent 3057660a79
commit 4de3c0e447

@ -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

@ -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;

Loading…
Cancel
Save