summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorManjula Gupta <magupta@nvidia.com>2010-09-21 21:28:43 +0530
committerBharat Nihalani <bnihalani@nvidia.com>2010-09-24 04:46:20 -0700
commit904ac2e3f599f21fb5a4f5103d130ecdb7271ebc (patch)
treebf18e9ec21529ccedb684319e20e86454276696c
parentace3f5176551fa6c8d931ac6728cd47c93bacd16 (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>
-rw-r--r--sound/soc/tegra/tegra_pcm_rpc.c8
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--;