mirror of
https://github.com/alsa-project/alsa-lib.git
synced 2025-11-02 09:01:48 -05:00
pcm: recalculate all rules after changing hw_params flags
The rules engine avoids recalculating rules that do not depend on any changed parameter, but there is no mechanism to record changed flags. So when we change a flag, we have to ensure that all rules depending on that flag are recalculated; the only method to do this is to force recalculation of all rules. So far, there have been no kernel drivers with rules depending on flags, but rules to disable hardware SRCs by setting SND_PCM_HW_PARAMS_NORESAMPLE are being introduced now. Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
This commit is contained in:
parent
7924500688
commit
6dab1a91cb
1 changed files with 3 additions and 0 deletions
|
|
@ -4200,6 +4200,7 @@ int snd_pcm_hw_params_set_rate_resample(snd_pcm_t *pcm, snd_pcm_hw_params_t *par
|
|||
params->flags |= SND_PCM_HW_PARAMS_NORESAMPLE;
|
||||
else
|
||||
params->flags &= ~SND_PCM_HW_PARAMS_NORESAMPLE;
|
||||
params->rmask = ~0;
|
||||
return snd_pcm_hw_refine(pcm, params);
|
||||
}
|
||||
|
||||
|
|
@ -4231,6 +4232,7 @@ int snd_pcm_hw_params_set_export_buffer(snd_pcm_t *pcm, snd_pcm_hw_params_t *par
|
|||
params->flags |= SND_PCM_HW_PARAMS_EXPORT_BUFFER;
|
||||
else
|
||||
params->flags &= ~SND_PCM_HW_PARAMS_EXPORT_BUFFER;
|
||||
params->rmask = ~0;
|
||||
return snd_pcm_hw_refine(pcm, params);
|
||||
}
|
||||
|
||||
|
|
@ -4280,6 +4282,7 @@ int snd_pcm_hw_params_set_period_wakeup(snd_pcm_t *pcm, snd_pcm_hw_params_t *par
|
|||
params->flags |= SND_PCM_HW_PARAMS_NO_PERIOD_WAKEUP;
|
||||
} else
|
||||
params->flags &= ~SND_PCM_HW_PARAMS_NO_PERIOD_WAKEUP;
|
||||
params->rmask = ~0;
|
||||
|
||||
return snd_pcm_hw_refine(pcm, params);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue