summaryrefslogtreecommitdiff
path: root/src/xine-engine/buffer.c
diff options
context:
space:
mode:
authorGuenter Bartsch <guenter@users.sourceforge.net>2002-03-24 14:15:36 +0000
committerGuenter Bartsch <guenter@users.sourceforge.net>2002-03-24 14:15:36 +0000
commit0b1e872fa96412fdf7dc54b8f18ab34ac148e65d (patch)
treea0da29367fe2d667485a63d38c7e6e5380916a99 /src/xine-engine/buffer.c
parent6d9934d47e664e902402f49c4cf962de5627bc87 (diff)
downloadxine-lib-0b1e872fa96412fdf7dc54b8f18ab34ac148e65d.tar.gz
xine-lib-0b1e872fa96412fdf7dc54b8f18ab34ac148e65d.tar.bz2
scr unregister patch from Michael Roitzsch, buffer mem release fix, xmalloc_aligned cleanup - fb vo plugin needs to be fixed for this one
CVS patchset: 1626 CVS date: 2002/03/24 14:15:36
Diffstat (limited to 'src/xine-engine/buffer.c')
-rw-r--r--src/xine-engine/buffer.c27
1 files changed, 18 insertions, 9 deletions
diff --git a/src/xine-engine/buffer.c b/src/xine-engine/buffer.c
index cb1dee715..b69752e85 100644
--- a/src/xine-engine/buffer.c
+++ b/src/xine-engine/buffer.c
@@ -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: buffer.c,v 1.15 2002/03/12 11:04:07 guenter Exp $
+ * $Id: buffer.c,v 1.16 2002/03/24 14:15:37 guenter Exp $
*
*
* contents:
@@ -225,7 +225,7 @@ static int fifo_buffer_size (fifo_buffer_t *this) {
static void fifo_buffer_dispose (fifo_buffer_t *this) {
buf_element_t *buf, *next;
- unsigned char *mem = NULL;
+ int received = 0;
this->clear( this );
buf = this->buffer_pool_top;
@@ -234,15 +234,25 @@ static void fifo_buffer_dispose (fifo_buffer_t *this) {
next = buf->next;
- if (mem == NULL || buf->mem < mem)
- mem = buf->mem;
-
free (buf);
+ received++;
buf = next;
}
+
+ while (received < this->buffer_pool_capacity) {
+
+ buf = this->get(this);
+
+ free(buf);
+ received++;
+ }
- xine_free_aligned (mem);
+ free (this->buffer_pool_base);
+ pthread_mutex_destroy(&this->mutex);
+ pthread_cond_destroy(&this->not_empty);
+ pthread_mutex_destroy(&this->buffer_pool_mutex);
+ pthread_cond_destroy(&this->buffer_pool_cond_not_empty);
free (this);
}
@@ -282,7 +292,8 @@ fifo_buffer_t *fifo_buffer_new (int num_buffers, uint32_t buf_size) {
printf ("Allocating %d buffers of %ld bytes in one chunk (alignment = %d)\n",
num_buffers, (long int) buf_size, alignment);
*/
- multi_buffer = xine_xmalloc_aligned (alignment, num_buffers * buf_size);
+ multi_buffer = xine_xmalloc_aligned (alignment, num_buffers * buf_size,
+ &this->buffer_pool_base);
this->buffer_pool_top = NULL;
@@ -311,5 +322,3 @@ fifo_buffer_t *fifo_buffer_new (int num_buffers, uint32_t buf_size) {
return this;
}
-
-