diff --git a/libobs/util/circlebuf.h b/libobs/util/circlebuf.h index c2fce69de..60ec9b4f6 100644 --- a/libobs/util/circlebuf.h +++ b/libobs/util/circlebuf.h @@ -173,7 +173,12 @@ static inline void circlebuf_push_front(struct circlebuf *cb, const void *data, cb->size += size; circlebuf_ensure_capacity(cb); - if (cb->start_pos < size) { + if (cb->size == size) { + cb->start_pos = 0; + cb->end_pos = size; + memcpy((uint8_t *)cb->data, data, size); + + } else if (cb->start_pos < size) { size_t back_size = size - cb->start_pos; if (cb->start_pos) @@ -216,7 +221,12 @@ static inline void circlebuf_push_front_zero(struct circlebuf *cb, size_t size) cb->size += size; circlebuf_ensure_capacity(cb); - if (cb->start_pos < size) { + if (cb->size == size) { + cb->start_pos = 0; + cb->end_pos = size; + memset((uint8_t *)cb->data, 0, size); + + } else if (cb->start_pos < size) { size_t back_size = size - cb->start_pos; if (cb->start_pos)