Commit bbab5a93 authored by Rémi Denis-Courmont's avatar Rémi Denis-Courmont

block_Bytestream: use block_Release() and simplify a little

parent 68dbf6ec
......@@ -28,10 +28,10 @@
typedef struct block_bytestream_t
{
block_t *p_chain;
block_t *p_block;
size_t i_offset;
block_t *p_chain; /**< byte stream head block */
block_t *p_block; /**< byte stream read pointer block */
size_t i_offset; /**< byte stream read pointer offset within block */
/* TODO? add tail pointer for faster push? */
} block_bytestream_t;
/*****************************************************************************
......@@ -45,12 +45,12 @@ static inline void block_BytestreamInit( block_bytestream_t *p_bytestream )
static inline void block_BytestreamRelease( block_bytestream_t *p_bytestream )
{
while( p_bytestream->p_chain )
for( block_t *block = p_bytestream->p_chain; block != NULL; )
{
block_t *p_next;
p_next = p_bytestream->p_chain->p_next;
p_bytestream->p_chain->pf_release( p_bytestream->p_chain );
p_bytestream->p_chain = p_next;
block_t *p_next = block->p_next;
block_Release( block );
block = p_next;
}
}
......@@ -68,22 +68,26 @@ static inline void block_BytestreamEmpty( block_bytestream_t *p_bytestream )
*/
static inline void block_BytestreamFlush( block_bytestream_t *p_bytestream )
{
while( p_bytestream->p_chain != p_bytestream->p_block )
block_t *block = p_bytestream->p_chain;
while( block != p_bytestream->p_block )
{
block_t *p_next;
p_next = p_bytestream->p_chain->p_next;
p_bytestream->p_chain->pf_release( p_bytestream->p_chain );
p_bytestream->p_chain = p_next;
block_t *p_next = block->p_next;
block_Release( block );
block = p_next;
}
while( p_bytestream->p_block &&
(p_bytestream->p_block->i_buffer - p_bytestream->i_offset) == 0 )
while( block != NULL && block->i_buffer == p_bytestream->i_offset )
{
block_t *p_next;
p_next = p_bytestream->p_chain->p_next;
p_bytestream->p_chain->pf_release( p_bytestream->p_chain );
p_bytestream->p_chain = p_bytestream->p_block = p_next;
block_t *p_next = block->p_next;
block_Release( block );
block = p_next;
p_bytestream->i_offset = 0;
}
p_bytestream->p_chain = p_bytestream->p_block = block;
}
static inline void block_BytestreamPush( block_bytestream_t *p_bytestream,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment