mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-02 09:01:50 -05:00
loop: always wake up blocking items
We should always wake up the blocking items if we scheduled the item.
This commit is contained in:
parent
8b9d398df6
commit
b8b2ce6ba9
1 changed files with 4 additions and 4 deletions
|
|
@ -123,7 +123,7 @@ static int loop_remove_source(void *object, struct spa_source *source)
|
||||||
return spa_system_pollfd_del(impl->system, impl->poll_fd, source->fd);
|
return spa_system_pollfd_del(impl->system, impl->poll_fd, source->fd);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void flush_items(struct impl *impl, bool async)
|
static void flush_items(struct impl *impl)
|
||||||
{
|
{
|
||||||
uint32_t index;
|
uint32_t index;
|
||||||
int res;
|
int res;
|
||||||
|
|
@ -142,7 +142,7 @@ static void flush_items(struct impl *impl, bool async)
|
||||||
|
|
||||||
spa_ringbuffer_read_update(&impl->buffer, index + item->item_size);
|
spa_ringbuffer_read_update(&impl->buffer, index + item->item_size);
|
||||||
|
|
||||||
if (block && async) {
|
if (block) {
|
||||||
if ((res = spa_system_eventfd_write(impl->system, impl->ack_fd, 1)) < 0)
|
if ((res = spa_system_eventfd_write(impl->system, impl->ack_fd, 1)) < 0)
|
||||||
spa_log_warn(impl->log, NAME " %p: failed to write event fd: %s",
|
spa_log_warn(impl->log, NAME " %p: failed to write event fd: %s",
|
||||||
impl, spa_strerror(res));
|
impl, spa_strerror(res));
|
||||||
|
|
@ -166,7 +166,7 @@ loop_invoke(void *object,
|
||||||
int res;
|
int res;
|
||||||
|
|
||||||
if (in_thread && !impl->flushing) {
|
if (in_thread && !impl->flushing) {
|
||||||
flush_items(impl, false);
|
flush_items(impl);
|
||||||
res = func ? func(&impl->loop, false, seq, data, size, user_data) : 0;
|
res = func ? func(&impl->loop, false, seq, data, size, user_data) : 0;
|
||||||
} else {
|
} else {
|
||||||
int32_t filled;
|
int32_t filled;
|
||||||
|
|
@ -236,7 +236,7 @@ loop_invoke(void *object,
|
||||||
static void wakeup_func(void *data, uint64_t count)
|
static void wakeup_func(void *data, uint64_t count)
|
||||||
{
|
{
|
||||||
struct impl *impl = data;
|
struct impl *impl = data;
|
||||||
flush_items(impl, true);
|
flush_items(impl);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int loop_get_fd(void *object)
|
static int loop_get_fd(void *object)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue