Clean up something I did for ABI compatability in 1.4
authorRussell Bryant <russell@russellbryant.com>
Tue, 15 Jan 2008 23:35:29 +0000 (23:35 +0000)
committerRussell Bryant <russell@russellbryant.com>
Tue, 15 Jan 2008 23:35:29 +0000 (23:35 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@98945 65c4cc65-6c06-0410-ace0-fbb531ad65f3

include/asterisk/translate.h
main/translate.c

index b1f615f..97f1028 100644 (file)
@@ -138,13 +138,7 @@ struct ast_trans_pvt {
        struct ast_translator *t;
        struct ast_frame f;     /*!< used in frameout */
        int samples;            /*!< samples available in outbuf */
-       /*! 
-        * \brief actual space used in outbuf
-        *
-        * Also, for the sake of ABI compatability, a magic value of -1 in this
-        * field means that the pvt has been requested to be destroyed, but is
-        * pending destruction until ast_translate_frame_freed() gets called. 
-        */
+       /*! \brief actual space used in outbuf */
        int datalen;
        void *pvt;              /*!< more private data, if any */
        char *outbuf;           /*!< the useful portion of the buffer */
@@ -152,6 +146,7 @@ struct ast_trans_pvt {
        struct ast_trans_pvt *next;     /*!< next in translator chain */
        struct timeval nextin;
        struct timeval nextout;
+       unsigned int destroy:1;
 };
 
 /*! \brief generic frameout function */
index 8bdaaf0..1af88ec 100644 (file)
@@ -139,8 +139,7 @@ static void destroy(struct ast_trans_pvt *pvt)
                 * When ast_frfree() gets called on that frame, this ast_trans_pvt
                 * will get destroyed, too. */
 
-               /* Set the magic hint that this has been requested to be destroyed. */
-               pvt->datalen = -1;
+               pvt->destroy = 1;
 
                return;
        }
@@ -898,7 +897,7 @@ void ast_translate_frame_freed(struct ast_frame *fr)
 
        pvt = (struct ast_trans_pvt *) (((char *) fr) - offsetof(struct ast_trans_pvt, f));
 
-       if (pvt->datalen != -1)
+       if (!pvt->destroy)
                return;
        
        destroy(pvt);