Lines Matching defs:fdl

332     struct pa_alsa_fdlist *fdl = userdata;
338 pa_assert(fdl);
339 pa_assert(fdl->mixer || fdl->hctl);
340 pa_assert(fdl->fds);
341 pa_assert(fdl->work_fds);
343 if (fdl->polled)
346 fdl->polled = true;
348 memcpy(fdl->work_fds, fdl->fds, sizeof(struct pollfd) * fdl->num_fds);
350 for (i = 0; i < fdl->num_fds; i++) {
351 if (e == fdl->ios[i]) {
353 fdl->work_fds[i].revents |= POLLIN;
355 fdl->work_fds[i].revents |= POLLOUT;
357 fdl->work_fds[i].revents |= POLLERR;
359 fdl->work_fds[i].revents |= POLLHUP;
364 pa_assert(i != fdl->num_fds);
366 if (fdl->hctl)
367 err = snd_hctl_poll_descriptors_revents(fdl->hctl, fdl->work_fds, fdl->num_fds, &revents);
369 err = snd_mixer_poll_descriptors_revents(fdl->mixer, fdl->work_fds, fdl->num_fds, &revents);
376 a->defer_enable(fdl->defer, 1);
379 if (fdl->hctl)
380 snd_hctl_handle_events(fdl->hctl);
382 snd_mixer_handle_events(fdl->mixer);
387 struct pa_alsa_fdlist *fdl = userdata;
393 pa_assert(fdl);
394 pa_assert(fdl->mixer || fdl->hctl);
396 a->defer_enable(fdl->defer, 0);
398 if (fdl->hctl)
399 n = snd_hctl_poll_descriptors_count(fdl->hctl);
401 n = snd_mixer_poll_descriptors_count(fdl->mixer);
413 if (num_fds != fdl->num_fds) {
414 if (fdl->fds)
415 pa_xfree(fdl->fds);
416 if (fdl->work_fds)
417 pa_xfree(fdl->work_fds);
418 fdl->fds = pa_xnew0(struct pollfd, num_fds);
419 fdl->work_fds = pa_xnew(struct pollfd, num_fds);
422 memset(fdl->work_fds, 0, sizeof(struct pollfd) * num_fds);
424 if (fdl->hctl)
425 err = snd_hctl_poll_descriptors(fdl->hctl, fdl->work_fds, num_fds);
427 err = snd_mixer_poll_descriptors(fdl->mixer, fdl->work_fds, num_fds);
434 fdl->polled = false;
436 if (memcmp(fdl->fds, fdl->work_fds, sizeof(struct pollfd) * num_fds) == 0)
439 if (fdl->ios) {
440 for (i = 0; i < fdl->num_fds; i++)
441 a->io_free(fdl->ios[i]);
443 if (num_fds != fdl->num_fds) {
444 pa_xfree(fdl->ios);
445 fdl->ios = NULL;
449 if (!fdl->ios)
450 fdl->ios = pa_xnew(pa_io_event*, num_fds);
453 temp = fdl->work_fds;
454 fdl->work_fds = fdl->fds;
455 fdl->fds = temp;
457 fdl->num_fds = num_fds;
460 fdl->ios[i] = a->io_new(a, fdl->fds[i].fd,
461 ((fdl->fds[i].events & POLLIN) ? PA_IO_EVENT_INPUT : 0) |
462 ((fdl->fds[i].events & POLLOUT) ? PA_IO_EVENT_OUTPUT : 0),
463 io_cb, fdl);
467 struct pa_alsa_fdlist *fdl;
469 fdl = pa_xnew0(struct pa_alsa_fdlist, 1);
471 return fdl;
474 void pa_alsa_fdlist_free(struct pa_alsa_fdlist *fdl) {
475 pa_assert(fdl);
477 if (fdl->defer) {
478 pa_assert(fdl->m);
479 fdl->m->defer_free(fdl->defer);
482 if (fdl->ios) {
484 pa_assert(fdl->m);
485 for (i = 0; i < fdl->num_fds; i++)
486 fdl->m->io_free(fdl->ios[i]);
487 pa_xfree(fdl->ios);
490 if (fdl->fds)
491 pa_xfree(fdl->fds);
492 if (fdl->work_fds)
493 pa_xfree(fdl->work_fds);
495 pa_xfree(fdl);
499 int pa_alsa_fdlist_set_handle(struct pa_alsa_fdlist *fdl, snd_mixer_t *mixer_handle, snd_hctl_t *hctl_handle, pa_mainloop_api *m) {
500 pa_assert(fdl);
504 pa_assert(!fdl->m);
506 fdl->hctl = hctl_handle;
507 fdl->mixer = mixer_handle;
508 fdl->m = m;
509 fdl->defer = m->defer_new(m, defer_cb, fdl);