diff options
author | Manjula Gupta <magupta@nvidia.com> | 2010-09-21 21:28:43 +0530 |
---|---|---|
committer | Bharat Nihalani <bnihalani@nvidia.com> | 2010-09-24 04:46:20 -0700 |
commit | 904ac2e3f599f21fb5a4f5103d130ecdb7271ebc (patch) | |
tree | bf18e9ec21529ccedb684319e20e86454276696c /sound | |
parent | ace3f5176551fa6c8d931ac6728cd47c93bacd16 (diff) |
[tegra ALSA] Fix playback with dmix plugin
With dmix appl_ptr is not modified i.e. it remains 0. Removed
the check using appl_ptr to avoid playback of last few buffer,
added more reasonable fix.
For Bug 734678
Change-Id: I0046541c0dece9c5f61b23430b60ac43d3c47a3b
Reviewed-on: http://git-master/r/7193
Tested-by: Manjula Gupta <magupta@nvidia.com>
Reviewed-by: Bharat Nihalani <bnihalani@nvidia.com>
Diffstat (limited to 'sound')
-rw-r--r-- | sound/soc/tegra/tegra_pcm_rpc.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/sound/soc/tegra/tegra_pcm_rpc.c b/sound/soc/tegra/tegra_pcm_rpc.c index cf2be772b802..02cdafebab24 100644 --- a/sound/soc/tegra/tegra_pcm_rpc.c +++ b/sound/soc/tegra/tegra_pcm_rpc.c @@ -109,8 +109,8 @@ static int play_thread( void *arg) if (kthread_should_stop()) break; - if ((prtd->audiofx_frames < runtime->control->appl_ptr) && - (state != NvAudioFxState_Stop)) { + if ((prtd->state != SNDRV_PCM_TRIGGER_STOP) && + (runtime->status->state != SNDRV_PCM_STATE_DRAINING )) { memset(&abd, 0, sizeof(NvAudioFxBufferDescriptor)); size = TEGRA_DEFAULT_BUFFER_SIZE; @@ -148,8 +148,8 @@ static int play_thread( void *arg) continue; } - if ((buffer_to_prime == buffer_in_queue) || - (prtd->audiofx_frames >= runtime->control->appl_ptr)) { + if ((buffer_to_prime == buffer_in_queue) && + (prtd->state != SNDRV_PCM_TRIGGER_STOP)) { down(&prtd->buf_done_sem); buffer_in_queue--; |