Loading sound/core/compress_offload.c +19 −4 Original line number Diff line number Diff line Loading @@ -758,21 +758,31 @@ int snd_compr_stop_error(struct snd_compr_stream *stream, } EXPORT_SYMBOL_GPL(snd_compr_stop_error); /* this fn is called without lock being held and we change stream states here * so while using the stream state auquire the lock but relase before invoking * DSP as the call will possibly take a while */ static int snd_compr_drain(struct snd_compr_stream *stream) { int retval; mutex_lock(&stream->device->lock); if (stream->runtime->state == SNDRV_PCM_STATE_PREPARED || stream->runtime->state == SNDRV_PCM_STATE_SETUP) return -EPERM; stream->runtime->state == SNDRV_PCM_STATE_SETUP) { retval = -EPERM; goto ret; } mutex_unlock(&stream->device->lock); retval = stream->ops->trigger(stream, SND_COMPR_TRIGGER_DRAIN); mutex_lock(&stream->device->lock); if (!retval) { stream->runtime->state = SNDRV_PCM_STATE_DRAINING; wake_up(&stream->runtime->sleep); return retval; } ret: mutex_unlock(&stream->device->lock); return retval; } Loading Loading @@ -801,9 +811,14 @@ static int snd_compr_next_track(struct snd_compr_stream *stream) static int snd_compr_partial_drain(struct snd_compr_stream *stream) { int retval; mutex_lock(&stream->device->lock); if (stream->runtime->state == SNDRV_PCM_STATE_PREPARED || stream->runtime->state == SNDRV_PCM_STATE_SETUP) stream->runtime->state == SNDRV_PCM_STATE_SETUP) { mutex_unlock(&stream->device->lock); return -EPERM; } mutex_unlock(&stream->device->lock); /* stream can be drained only when next track has been signalled */ if (stream->next_track == false) return -EPERM; Loading Loading
sound/core/compress_offload.c +19 −4 Original line number Diff line number Diff line Loading @@ -758,21 +758,31 @@ int snd_compr_stop_error(struct snd_compr_stream *stream, } EXPORT_SYMBOL_GPL(snd_compr_stop_error); /* this fn is called without lock being held and we change stream states here * so while using the stream state auquire the lock but relase before invoking * DSP as the call will possibly take a while */ static int snd_compr_drain(struct snd_compr_stream *stream) { int retval; mutex_lock(&stream->device->lock); if (stream->runtime->state == SNDRV_PCM_STATE_PREPARED || stream->runtime->state == SNDRV_PCM_STATE_SETUP) return -EPERM; stream->runtime->state == SNDRV_PCM_STATE_SETUP) { retval = -EPERM; goto ret; } mutex_unlock(&stream->device->lock); retval = stream->ops->trigger(stream, SND_COMPR_TRIGGER_DRAIN); mutex_lock(&stream->device->lock); if (!retval) { stream->runtime->state = SNDRV_PCM_STATE_DRAINING; wake_up(&stream->runtime->sleep); return retval; } ret: mutex_unlock(&stream->device->lock); return retval; } Loading Loading @@ -801,9 +811,14 @@ static int snd_compr_next_track(struct snd_compr_stream *stream) static int snd_compr_partial_drain(struct snd_compr_stream *stream) { int retval; mutex_lock(&stream->device->lock); if (stream->runtime->state == SNDRV_PCM_STATE_PREPARED || stream->runtime->state == SNDRV_PCM_STATE_SETUP) stream->runtime->state == SNDRV_PCM_STATE_SETUP) { mutex_unlock(&stream->device->lock); return -EPERM; } mutex_unlock(&stream->device->lock); /* stream can be drained only when next track has been signalled */ if (stream->next_track == false) return -EPERM; Loading