mirror of
https://github.com/alsa-project/alsa-lib.git
synced 2025-10-29 05:40:25 -04:00
pcm: rate - correct the previous fix for snd_pcm_rate_may_wait_for_avail_min()
The previous fix inaa4f56c3was not correct. The root of the cause is implementation in snd_pcm_may_wait_for_avail_min() inline function where the improper pcm argument is passed to the fast_ops function. Fixes:aa4f56c3("pcm: rate - fix the crash in snd_pcm_rate_may_wait_for_avail_min()") Fixes:d9dbb57b("pcm: rate - rewrite the may_wait_for_avail_min callback for the rate plugin") Signed-off-by: Jaroslav Kysela <perex@perex.cz>
This commit is contained in:
parent
aa4f56c3c9
commit
39060852d8
2 changed files with 8 additions and 4 deletions
|
|
@ -1144,7 +1144,7 @@ static inline int snd_pcm_may_wait_for_avail_min(snd_pcm_t *pcm, snd_pcm_uframes
|
||||||
if (avail >= pcm->avail_min)
|
if (avail >= pcm->avail_min)
|
||||||
return 0;
|
return 0;
|
||||||
if (pcm->fast_ops->may_wait_for_avail_min)
|
if (pcm->fast_ops->may_wait_for_avail_min)
|
||||||
return pcm->fast_ops->may_wait_for_avail_min(pcm, avail);
|
return pcm->fast_ops->may_wait_for_avail_min(pcm->fast_op_arg, avail);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -597,8 +597,12 @@ int snd_pcm_plugin_may_wait_for_avail_min_conv(
|
||||||
* a) the slave can provide contineous hw_ptr between periods
|
* a) the slave can provide contineous hw_ptr between periods
|
||||||
* b) avail_min does not match one slave_period
|
* b) avail_min does not match one slave_period
|
||||||
*/
|
*/
|
||||||
snd_pcm_plugin_t *plugin = pcm->private_data;
|
snd_pcm_generic_t *generic = pcm->private_data;
|
||||||
snd_pcm_t *slave = plugin->gen.slave;
|
/*
|
||||||
|
* do not use snd_pcm_plugin_t pointer here
|
||||||
|
* this code is used from the generic plugins, too
|
||||||
|
*/
|
||||||
|
snd_pcm_t *slave = generic->slave;
|
||||||
snd_pcm_uframes_t needed_slave_avail_min;
|
snd_pcm_uframes_t needed_slave_avail_min;
|
||||||
snd_pcm_sframes_t available;
|
snd_pcm_sframes_t available;
|
||||||
|
|
||||||
|
|
@ -622,7 +626,7 @@ int snd_pcm_plugin_may_wait_for_avail_min_conv(
|
||||||
* This code is also used by extplug, but extplug does not allow to alter the sampling rate.
|
* This code is also used by extplug, but extplug does not allow to alter the sampling rate.
|
||||||
*/
|
*/
|
||||||
if (conv)
|
if (conv)
|
||||||
needed_slave_avail_min = conv(pcm->fast_op_arg, needed_slave_avail_min);
|
needed_slave_avail_min = conv(pcm, needed_slave_avail_min);
|
||||||
|
|
||||||
if (slave->avail_min != needed_slave_avail_min) {
|
if (slave->avail_min != needed_slave_avail_min) {
|
||||||
snd_pcm_sw_params_t *swparams;
|
snd_pcm_sw_params_t *swparams;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue