Fix the problems of multi plugin with 32bit apps on 64bit kernel.
The forward/backward of hw plugin are fixed, too.
SYSMSG("SNDRV_PCM_IOCTL_REWIND failed");
return err;
}
+ err = sync_ptr(hw, SNDRV_PCM_SYNC_PTR_APPL);
+ if (err < 0)
+ return err;
return frames;
}
SYSMSG("SNDRV_PCM_IOCTL_FORWARD failed");
return err;
}
+ err = sync_ptr(hw, SNDRV_PCM_SYNC_PTR_APPL);
+ if (err < 0)
+ return err;
return frames;
} else {
snd_pcm_sframes_t avail;
int err = 0;
unsigned int i;
for (i = 0; i < multi->slaves_count; ++i) {
- if (multi->slaves[i].linked)
- continue;
+ /* We call prepare to each slave even if it's linked.
+ * This is to make sure to sync non-mmaped control/status.
+ */
err = snd_pcm_prepare(multi->slaves[i].pcm);
if (err < 0)
return err;
int err = 0;
unsigned int i;
for (i = 0; i < multi->slaves_count; ++i) {
- if (multi->slaves[i].linked)
- continue;
+ /* Reset each slave, as well as in prepare */
err = snd_pcm_reset(multi->slaves[i].pcm);
if (err < 0)
return err;