Removed poll_ask callbacks.
poll_ask function is merged to poll_descriptors callbacks.
assert(pcm && pfds);
if (pcm->ops->poll_descriptors)
return pcm->ops->poll_descriptors(pcm->op_arg, pfds, space);
- if (pcm->fast_ops->poll_ask) {
- err = pcm->fast_ops->poll_ask(pcm->fast_op_arg);
- if (err < 0)
- return err;
- }
if (pcm->poll_fd < 0) {
SNDMSG("poll_fd < 0");
return -EIO;
.rewind = snd_pcm_dmix_rewind,
.forward = snd_pcm_dmix_forward,
.resume = snd_pcm_dmix_resume,
- .poll_ask = NULL,
.link_fd = NULL,
.link = NULL,
.unlink = NULL,
.rewind = snd_pcm_dshare_rewind,
.forward = snd_pcm_dshare_forward,
.resume = snd_pcm_dshare_resume,
- .poll_ask = NULL,
.link_fd = NULL,
.link = NULL,
.unlink = NULL,
.rewind = snd_pcm_dsnoop_rewind,
.forward = snd_pcm_dsnoop_forward,
.resume = snd_pcm_dsnoop_resume,
- .poll_ask = NULL,
.link_fd = NULL,
.link = NULL,
.unlink = NULL,
.rewind = snd_pcm_file_rewind,
.forward = snd_pcm_file_forward,
.resume = snd_pcm_generic_resume,
- .poll_ask = snd_pcm_generic_poll_ask,
.link_fd = snd_pcm_generic_link_fd,
.link = snd_pcm_generic_link,
.unlink = snd_pcm_generic_unlink,
return snd_pcm_rewind(generic->slave, frames);
}
-int snd_pcm_generic_poll_ask(snd_pcm_t *pcm)
-{
- snd_pcm_generic_t *generic = pcm->private_data;
- if (generic->slave->fast_ops->poll_ask)
- return generic->slave->fast_ops->poll_ask(generic->slave->fast_op_arg);
- return 0;
-}
-
int snd_pcm_generic_link_fd(snd_pcm_t *pcm, int *fds, int count, int (**failed)(snd_pcm_t *, int))
{
snd_pcm_generic_t *generic = pcm->private_data;
int snd_pcm_generic_delay(snd_pcm_t *pcm, snd_pcm_sframes_t *delayp);
snd_pcm_sframes_t snd_pcm_generic_forward(snd_pcm_t *pcm, snd_pcm_uframes_t frames);
snd_pcm_sframes_t snd_pcm_generic_rewind(snd_pcm_t *pcm, snd_pcm_uframes_t frames);
-int snd_pcm_generic_poll_ask(snd_pcm_t *pcm);
int snd_pcm_generic_link_fd(snd_pcm_t *pcm, int *fds, int count, int (**failed)(snd_pcm_t *, int));
int snd_pcm_generic_link(snd_pcm_t *pcm1, snd_pcm_t *pcm2);
int snd_pcm_generic_link2(snd_pcm_t *pcm1, snd_pcm_t *pcm2);
.rewind = snd_pcm_generic_rewind,
.forward = snd_pcm_generic_forward,
.resume = snd_pcm_generic_resume,
- .poll_ask = snd_pcm_generic_poll_ask,
.link_fd = snd_pcm_generic_link_fd,
.link = snd_pcm_generic_link,
.unlink = snd_pcm_generic_unlink,
.rewind = snd_pcm_hw_rewind,
.forward = snd_pcm_hw_forward,
.resume = snd_pcm_hw_resume,
- .poll_ask = NULL,
.link_fd = snd_pcm_hw_link_fd,
.link = snd_pcm_hw_link,
.unlink = snd_pcm_hw_unlink,
.hwsync = snd_pcm_ioplug_hwsync,
.delay = snd_pcm_ioplug_delay,
.resume = snd_pcm_ioplug_resume,
- .poll_ask = NULL,
.link_fd = NULL,
.link = NULL,
.unlink = NULL,
int (*hwsync)(snd_pcm_t *pcm);
int (*delay)(snd_pcm_t *pcm, snd_pcm_sframes_t *delayp);
int (*resume)(snd_pcm_t *pcm);
- int (*poll_ask)(snd_pcm_t *pcm);
int (*link_fd)(snd_pcm_t *pcm, int *fds, int count, int (**failed)(snd_pcm_t *, int));
int (*link)(snd_pcm_t *pcm1, snd_pcm_t *pcm2);
int (*unlink)(snd_pcm_t *pcm);
.rewind = snd_pcm_meter_rewind,
.forward = snd_pcm_meter_forward,
.resume = snd_pcm_generic_resume,
- .poll_ask = snd_pcm_generic_poll_ask,
.writei = snd_pcm_mmap_writei,
.writen = snd_pcm_mmap_writen,
.readi = snd_pcm_mmap_readi,
static int snd_pcm_multi_poll_descriptors(snd_pcm_t *pcm, struct pollfd *pfds, unsigned int space)
{
snd_pcm_multi_t *multi = pcm->private_data;
+ snd_pcm_t *slave;
snd_pcm_t *slave_0 = multi->slaves[multi->master_slave].pcm;
+ int err;
+ unsigned int i;
+
+ for (i = 0; i < multi->slaves_count; ++i) {
+ slave = multi->slaves[i].pcm;
+ if (slave == slave_0)
+ continue;
+ err = snd_pcm_poll_descriptors(slave, pfds, space);
+ if (err < 0)
+ return err;
+ }
+ /* finally overwrite with master's pfds */
return snd_pcm_poll_descriptors(slave_0, pfds, space);
}
return err;
}
-static int snd_pcm_multi_poll_ask(snd_pcm_t *pcm)
-{
- snd_pcm_multi_t *multi = pcm->private_data;
- snd_pcm_t *slave;
- int err = 0;
- unsigned int i;
- for (i = 0; i < multi->slaves_count; ++i) {
- slave = multi->slaves[i].pcm;
- if (slave->fast_ops->poll_ask == NULL)
- continue;
- err = slave->fast_ops->poll_ask(slave->fast_op_arg);
- if (err < 0)
- return err;
- }
- return err;
-}
-
static int snd_pcm_multi_link_fd_failed(snd_pcm_t *pcm, int fd)
{
snd_pcm_multi_t *multi = pcm->private_data;
.rewind = snd_pcm_multi_rewind,
.forward = snd_pcm_multi_forward,
.resume = snd_pcm_multi_resume,
- .poll_ask = snd_pcm_multi_poll_ask,
.link_fd = snd_pcm_multi_link_fd,
.link = snd_pcm_generic_link2,
.unlink = snd_pcm_multi_unlink,
.rewind = snd_pcm_null_rewind,
.forward = snd_pcm_null_forward,
.resume = snd_pcm_null_resume,
- .poll_ask = NULL,
.writei = snd_pcm_null_writei,
.writen = snd_pcm_null_writen,
.readi = snd_pcm_null_readi,
.rewind = snd_pcm_plugin_rewind,
.forward = snd_pcm_plugin_forward,
.resume = snd_pcm_generic_resume,
- .poll_ask = snd_pcm_generic_poll_ask,
.link_fd = snd_pcm_generic_link_fd,
.link = snd_pcm_generic_link,
.unlink = snd_pcm_generic_unlink,
return n;
}
-static int snd_pcm_rate_poll_ask(snd_pcm_t *pcm)
+static int snd_pcm_rate_poll_descriptors(snd_pcm_t *pcm, struct pollfd *pfds, unsigned int space)
{
snd_pcm_rate_t *rate = pcm->private_data;
snd_pcm_uframes_t avail_min;
- int err;
+ int ret, err;
+
+ ret = snd_pcm_generic_poll_descriptors(pcm, pfds, space);
+ if (ret < 0)
+ return ret;
- if (rate->gen.slave->fast_ops->poll_ask) {
- err = rate->gen.slave->fast_ops->poll_ask(rate->gen.slave->fast_op_arg);
- if (err < 0)
- return err;
- }
avail_min = rate->appl_ptr % pcm->period_size;
if (avail_min > 0) {
recalc(pcm, &avail_min);
avail_min = rate->orig_avail_min;
}
if (rate->sw_params.avail_min == avail_min)
- return 0;
+ return ret;
rate->sw_params.avail_min = avail_min;
- return snd_pcm_sw_params(rate->gen.slave, &rate->sw_params);
+ err = snd_pcm_sw_params(rate->gen.slave, &rate->sw_params);
+ if (err < 0)
+ return err;
+ return ret;
}
static int snd_pcm_rate_commit_area(snd_pcm_t *pcm, snd_pcm_rate_t *rate,
.rewind = snd_pcm_rate_rewind,
.forward = snd_pcm_rate_forward,
.resume = snd_pcm_generic_resume,
- .poll_ask = snd_pcm_rate_poll_ask,
.writei = snd_pcm_mmap_writei,
.writen = snd_pcm_mmap_writen,
.readi = snd_pcm_mmap_readi,
.rewind = snd_pcm_share_rewind,
.forward = snd_pcm_share_forward,
.resume = snd_pcm_share_resume,
- .poll_ask = NULL, /* FIXME */
.avail_update = snd_pcm_share_avail_update,
.mmap_commit = snd_pcm_share_mmap_commit,
};
.rewind = snd_pcm_shm_rewind,
.forward = snd_pcm_shm_forward,
.resume = snd_pcm_shm_resume,
- .poll_ask = NULL,
.writei = snd_pcm_mmap_writei,
.writen = snd_pcm_mmap_writen,
.readi = snd_pcm_mmap_readi,