ringbuffer: small optimization

This commit is contained in:
Wim Taymans 2017-04-26 09:36:01 +02:00
parent 63d060a63e
commit edb21a0ff8

View file

@ -126,12 +126,10 @@ spa_ringbuffer_read_data (SpaRingbuffer *rbuf,
void *data, void *data,
uint32_t len) uint32_t len)
{ {
if (SPA_LIKELY (offset + len < rbuf->size)) { uint32_t first = SPA_MIN (len, rbuf->size - offset);
memcpy (data, buffer + offset, len); memcpy (data, buffer + offset, first);
} else { if (SPA_UNLIKELY (len > first)) {
uint32_t l0 = rbuf->size - offset; memcpy (data + first, buffer, len - first);
memcpy (data, buffer + offset, l0);
memcpy (data + l0, buffer, len - l0);
} }
} }
@ -179,12 +177,10 @@ spa_ringbuffer_write_data (SpaRingbuffer *rbuf,
void *data, void *data,
uint32_t len) uint32_t len)
{ {
if (SPA_LIKELY (offset + len < rbuf->size)) { uint32_t first = SPA_MIN (len, rbuf->size - offset);
memcpy (buffer + offset, data, len); memcpy (buffer + offset, data, first);
} else { if (SPA_UNLIKELY (len > first)) {
uint32_t l0 = rbuf->size - offset; memcpy (buffer, data + first, len - first);
memcpy (buffer + offset, data, l0);
memcpy (buffer, data + l0, len - l0);
} }
} }