unbreak the macro used for incrementing the frame counters.

I don't know when the bug was introduced, but with the typical usage

	c->fin = FRAMECOUNT_INC(c->fin)

the frame counters stay to 0.



git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@48568 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
Luigi Rizzo 2006-12-18 17:44:18 +00:00
parent 381d49c9af
commit 02e21cb5f2
1 changed files with 14 additions and 1 deletions

View File

@ -310,8 +310,21 @@ struct ast_channel_tech {
struct ast_channel_spy_list; /*!< \todo Add explanation here */
struct ast_channel_whisper_buffer; /*!< \todo Add explanation here */
/*!
* The high bit of the frame count is used as a debug marker, so
* increments of the counters must be done with care.
* Please use c->fin = FRAMECOUNT_INC(c->fin) and the same for c->fout.
*/
#define DEBUGCHAN_FLAG 0x80000000
#define FRAMECOUNT_INC(x) ( ((x) & DEBUGCHAN_FLAG) | ((x++) & ~DEBUGCHAN_FLAG) )
/* XXX not ideal to evaluate x twice... */
#define FRAMECOUNT_INC(x) ( ((x) & DEBUGCHAN_FLAG) | (((x)+1) & ~DEBUGCHAN_FLAG) )
/*!
* The current value of the debug flags is stored in the two
* variables global_fin and global_fout (declared in main/channel.c)
*/
extern unsigned long global_fin, global_fout;
enum ast_channel_adsicpe {
AST_ADSI_UNKNOWN,