void pa_asyncq_write_after_poll(pa_asyncq *l) { pa_assert(l); if (l->waiting_for_post) { pa_fdsem_after_poll(l->read_fdsem); l->waiting_for_post = FALSE; } }
void pa_srbchannel_set_callback(pa_srbchannel *sr, pa_srbchannel_cb_t callback, void *userdata) { if (sr->callback) pa_fdsem_after_poll(sr->sem_read); sr->callback = callback; sr->cb_userdata = userdata; if (sr->callback) { /* If there are events to be read already in the ringbuffer, we will not get any IO event for that, because that's how pa_fdsem works. Therefore check the ringbuffer in a defer event instead. */ if (!sr->defer_event) sr->defer_event = sr->mainloop->defer_new(sr->mainloop, defer_cb, sr); sr->mainloop->defer_enable(sr->defer_event, 1); } }
void pa_shmasyncq_after_poll(pa_shmasyncq *l) { pa_assert(l); pa_fdsem_after_poll(l->write_fdsem); }
static void semread_cb(pa_mainloop_api *m, pa_io_event *e, int fd, pa_io_event_flags_t events, void *userdata) { pa_srbchannel* sr = userdata; pa_fdsem_after_poll(sr->sem_read); srbchannel_rwloop(sr); }