コード例 #1
0
ファイル: asyncq.c プロジェクト: KimT/pulseaudio_kt
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;
    }
}
コード例 #2
0
ファイル: srbchannel.c プロジェクト: asceticmt/pulseaudio
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);
    }
}
コード例 #3
0
ファイル: shmasyncq.c プロジェクト: Elemecca/pulseaudio
void pa_shmasyncq_after_poll(pa_shmasyncq *l) {
    pa_assert(l);

    pa_fdsem_after_poll(l->write_fdsem);
}
コード例 #4
0
ファイル: srbchannel.c プロジェクト: asceticmt/pulseaudio
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);
}