From 0e7c78e2f7cbc39560cdd8255ba2096d34812db8 Mon Sep 17 00:00:00 2001 From: Nicolas Pennequin Date: Sat, 4 Aug 2007 23:00:52 +0200 Subject: [PATCH] free_buffer: Keep h->offset in sync so we know where we are in the file. --- testplugin.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/testplugin.c b/testplugin.c index 2ae948e..109b10e 100644 --- a/testplugin.c +++ b/testplugin.c @@ -78,6 +78,7 @@ struct memory_handle { size_t offset; /* Offset at which we started reading the file */ struct memory_handle *next; }; +/* at all times, we have: filesize == offset + available + filerem */ static char *buffer; @@ -370,8 +371,8 @@ static ssize_t buffer_handle(int handle_id) rb->close(h->fd); } - DEBUGF("buffered %ld bytes (%ld of %ld available, remaining: %ld)\n", - ret, h->available, h->filesize, h->filerem); + DEBUGF("buffered %ld bytes (%ld of %ld available, rem: %ld, off: %ld)\n", + ret, h->available, h->filesize, h->filerem, h->offset); graph_view(100); @@ -399,6 +400,7 @@ static void free_buffer(int handle_id) if (!h) return; h->data = RINGBUF_ADD(h->data, delta); h->ridx = RINGBUF_ADD(h->ridx, delta); + h->widx = RINGBUF_ADD(h->widx, delta); DEBUGF("free_buffer(%d): metadata, moved by %ld bytes\n", handle_id, delta); } @@ -410,6 +412,7 @@ static void free_buffer(int handle_id) if (!h) return; h->data = RINGBUF_ADD(h->data, delta); h->available -= delta; + h->offset += delta; DEBUGF("free_buffer(%d): audio, %ld bytes freed\n", handle_id, delta); } } -- 2.11.4.GIT