diff options
author | Thibaut Mattern <tmattern@users.sourceforge.net> | 2006-01-27 19:37:15 +0000 |
---|---|---|
committer | Thibaut Mattern <tmattern@users.sourceforge.net> | 2006-01-27 19:37:15 +0000 |
commit | 5941590357c91b94bc0008160781b3ecb0e2acd9 (patch) | |
tree | 248a384bc5c818715c871b2c6d2e1af388ad8179 /src/xine-utils/ring_buffer.h | |
parent | d2cae45649cba868d864c74c512d64cc37541096 (diff) | |
download | xine-lib-5941590357c91b94bc0008160781b3ecb0e2acd9.tar.gz xine-lib-5941590357c91b94bc0008160781b3ecb0e2acd9.tar.bz2 |
Fixed bugs.
Add a close function to handle EndOfStream.
Tested with 1 writer thread and 2 reader threads.
CVS patchset: 7851
CVS date: 2006/01/27 19:37:15
Diffstat (limited to 'src/xine-utils/ring_buffer.h')
-rw-r--r-- | src/xine-utils/ring_buffer.h | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/src/xine-utils/ring_buffer.h b/src/xine-utils/ring_buffer.h index 412c62b7a..ece5e7beb 100644 --- a/src/xine-utils/ring_buffer.h +++ b/src/xine-utils/ring_buffer.h @@ -17,7 +17,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA * - * $Id: ring_buffer.h,v 1.1 2006/01/27 07:55:18 tmattern Exp $ + * $Id: ring_buffer.h,v 1.2 2006/01/27 19:37:15 tmattern Exp $ * * Fifo + Ring Buffer */ @@ -36,10 +36,22 @@ void *xine_ring_buffer_alloc(xine_ring_buffer_t *ring_buffer, size_t size); /* Put a chunk into the ring */ void xine_ring_buffer_put(xine_ring_buffer_t *ring_buffer, void *chunk); -/* Get a chunk of a specified size from the ring buffer */ -/* Might block if the ring buffer is empty */ -void *xine_ring_buffer_get(xine_ring_buffer_t *ring_buffer, size_t size); +/* Get a chunk of a specified size from the ring buffer + * Might block if the ring buffer is empty + * param size: the desired size + * param rsize: the size of the chunk returned + * rsize is not equal to size at the end of stream, the caller MUST check + * rsize value. + */ +void *xine_ring_buffer_get(xine_ring_buffer_t *ring_buffer, size_t size, size_t *rsize); -/* Release the chunk, makes memory available for the alloc function */ +/* Releases the chunk, makes memory available for the alloc function */ void xine_ring_buffer_release(xine_ring_buffer_t *ring_buffer, void *chunk); +/* Closes the ring buffer + * The writer uses this function to signal the end of stream to the reader. + * The reader MUST check the rsize value returned by the get function. + */ +void xine_ring_buffer_close(xine_ring_buffer_t *ring_buffer); + + |