mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-10-29 05:40:27 -04:00
Add poll interface and remove poll events
Use an interface to change items in a poll loop.
This commit is contained in:
parent
fc4fd1424a
commit
2905d91467
20 changed files with 227 additions and 148 deletions
|
|
@ -434,7 +434,6 @@ int
|
|||
spa_alsa_start (SpaALSAState *state)
|
||||
{
|
||||
int err;
|
||||
SpaNodeEvent event;
|
||||
|
||||
if (spa_alsa_open (state) < 0)
|
||||
return -1;
|
||||
|
|
@ -455,10 +454,6 @@ spa_alsa_start (SpaALSAState *state)
|
|||
return err;
|
||||
}
|
||||
|
||||
event.type = SPA_NODE_EVENT_TYPE_ADD_POLL;
|
||||
event.data = &state->poll;
|
||||
event.size = sizeof (state->poll);
|
||||
|
||||
state->poll.id = 0;
|
||||
state->poll.enabled = true;
|
||||
state->poll.fds = state->fds;
|
||||
|
|
@ -466,7 +461,7 @@ spa_alsa_start (SpaALSAState *state)
|
|||
state->poll.before_cb = NULL;
|
||||
state->poll.after_cb = alsa_on_fd_events;
|
||||
state->poll.user_data = state;
|
||||
state->event_cb (&state->node, &event, state->user_data);
|
||||
spa_poll_add_item (state->data_loop, &state->poll);
|
||||
|
||||
mmap_write (state);
|
||||
err = snd_pcm_start (state->hndl);
|
||||
|
|
@ -477,18 +472,11 @@ spa_alsa_start (SpaALSAState *state)
|
|||
int
|
||||
spa_alsa_stop (SpaALSAState *state)
|
||||
{
|
||||
SpaNodeEvent event;
|
||||
|
||||
if (!state->opened)
|
||||
return 0;
|
||||
|
||||
event.type = SPA_NODE_EVENT_TYPE_REMOVE_POLL;
|
||||
event.data = &state->poll;
|
||||
event.size = sizeof (state->poll);
|
||||
state->event_cb (&state->node, &event, state->user_data);
|
||||
|
||||
spa_poll_remove_item (state->data_loop, &state->poll);
|
||||
snd_pcm_drop (state->hndl);
|
||||
|
||||
spa_alsa_close (state);
|
||||
|
||||
return 0;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue