summaryrefslogtreecommitdiff
path: root/src/outputBuffer.c
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2008-04-12 04:12:42 +0000
committerEric Wong <normalperson@yhbt.net>2008-04-12 04:12:42 +0000
commite626028b41a957d969b93f2d3cb39813eebaac2b (patch)
tree8cdc984c07644ec30594e50276cf2ddf708ad976 /src/outputBuffer.c
parenta5464282639e46550f3120126d0ba877dd91a44b (diff)
moved check to outputBufferAbsolute()
decoderParent() uses a lot of OutputBuffer internals to see whether cross-fading should be started. Move these checks to outputBuffer.c, which also simplifies decoderParent(). git-svn-id: https://svn.musicpd.org/mpd/trunk@7262 09075e82-0dd4-0310-85a5-a0d7c8717e4f
Diffstat (limited to 'src/outputBuffer.c')
-rw-r--r--src/outputBuffer.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/outputBuffer.c b/src/outputBuffer.c
index f5a6dbf51..b5fddd98d 100644
--- a/src/outputBuffer.c
+++ b/src/outputBuffer.c
@@ -65,6 +65,23 @@ unsigned availableOutputBuffer(const OutputBuffer * cb)
return cb->end + buffered_chunks - cb->begin;
}
+int outputBufferAbsolute(const OutputBuffer * cb, unsigned relative)
+{
+ unsigned i, max;
+
+ max = cb->end;
+ if (max < cb->begin)
+ max += buffered_chunks;
+ i = (unsigned)cb->begin + relative;
+ if (i >= max)
+ return -1;
+
+ if (i >= buffered_chunks)
+ i -= buffered_chunks;
+
+ return (int)i;
+}
+
/**
* Return the tail chunk has room for additional data. If there is no
* room in the queue, this function blocks until the player thread has