On Sun, 25 Jun 2017 06:41:19 +0200, Takashi Sakamoto wrote: > > Handling mapping operation for status/control data includes some > supplemental operations for fallback mode. It's better to have helper > functions for this purpose. > > This commit adds the helper functions. > --- > src/pcm/pcm_hw.c | 48 ++++++++++++++++++++++++++++++++++-------------- > 1 file changed, 34 insertions(+), 14 deletions(-) > > diff --git a/src/pcm/pcm_hw.c b/src/pcm/pcm_hw.c > index a648d12c..abf4afe0 100644 > --- a/src/pcm/pcm_hw.c > +++ b/src/pcm/pcm_hw.c > @@ -31,6 +31,7 @@ > #include <stdlib.h> > #include <stddef.h> > #include <unistd.h> > +#include <stdbool.h> > #include <signal.h> > #include <string.h> > #include <fcntl.h> > @@ -866,7 +867,7 @@ static snd_pcm_sframes_t snd_pcm_hw_readn(snd_pcm_t *pcm, void **bufs, snd_pcm_u > return xfern.result; > } > > -static int snd_pcm_hw_mmap_status(snd_pcm_t *pcm) > +static int map_status_data(snd_pcm_t *pcm) > { > snd_pcm_hw_t *hw = pcm->private_data; > struct snd_pcm_sync_ptr sync_ptr; > @@ -900,7 +901,7 @@ static int snd_pcm_hw_mmap_status(snd_pcm_t *pcm) > return 0; > } > > -static int snd_pcm_hw_mmap_control(snd_pcm_t *pcm) > +static int map_control_data(snd_pcm_t *pcm) > { > snd_pcm_hw_t *hw = pcm->private_data; > void *ptr; > @@ -922,10 +923,28 @@ static int snd_pcm_hw_mmap_control(snd_pcm_t *pcm) > return 0; > } > > -static int snd_pcm_hw_munmap_status(snd_pcm_t *pcm) > +static int map_status_and_control_data(snd_pcm_t *pcm, bool force_fallback) > { > snd_pcm_hw_t *hw = pcm->private_data; > int err; > + > + hw->sync_ptr_ioctl = (int)force_fallback; > + > + err = map_status_data(pcm); > + if (err < 0) > + return err; > + > + err = map_control_data(pcm); > + if (err < 0) > + return err; This would leave the status mmap in the error path? thanks, Takashi _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel