From dc0d22190031dfca072c6bb05dbc46759bd8a6ff Mon Sep 17 00:00:00 2001 From: shenweip Date: Mon, 13 Jan 2014 21:44:05 +0800 Subject: [PATCH] Fix buffer queue. --- Core/HW/BufferQueue.h | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/Core/HW/BufferQueue.h b/Core/HW/BufferQueue.h index 26265280f9..0ceb0985e3 100644 --- a/Core/HW/BufferQueue.h +++ b/Core/HW/BufferQueue.h @@ -86,13 +86,20 @@ struct BufferQueue { if (buf) { if (start + bytesgot <= bufQueueSize) { memcpy(buf, bufQueue + start, bytesgot); + start += bytesgot; } else { int firstSize = bufQueueSize - start; memcpy(buf, bufQueue + start, firstSize); memcpy(buf + firstSize, bufQueue, bytesgot - firstSize); + start = bytesgot - firstSize; } + } else { + int firstSize = bufQueueSize - start; + if (start + bytesgot <= bufQueueSize) + start += bytesgot; + else + start = bytesgot - firstSize; } - start = (start + bytesgot) % bufQueueSize; return bytesgot; }