loop: fix ringbuffer handling

This commit is contained in:
Wim Taymans 2017-07-04 10:18:24 +02:00
parent 9fa1df6f2c
commit 791137e9e5

View file

@ -223,9 +223,7 @@ loop_invoke(struct spa_loop *loop,
} }
offset = idx & impl->buffer.mask; offset = idx & impl->buffer.mask;
l0 = offset + avail; l0 = impl->buffer.size - offset;
if (l0 > impl->buffer.size)
l0 = impl->buffer.size - l0;
item = SPA_MEMBER(impl->buffer_data, offset, struct invoke_item); item = SPA_MEMBER(impl->buffer_data, offset, struct invoke_item);
item->func = func; item->func = func;
@ -241,7 +239,7 @@ loop_invoke(struct spa_loop *loop,
item->item_size = l0; item->item_size = l0;
} else { } else {
item->data = impl->buffer_data; item->data = impl->buffer_data;
item->item_size = l0 + 1 + size; item->item_size = l0 + size;
} }
memcpy(item->data, data, size); memcpy(item->data, data, size);