Merge remote branch 'alsa/devel' into topic/misc
This commit is contained in:
@@ -635,8 +635,7 @@ static long snd_pcm_alsa_frames(struct snd_pcm_substream *substream, long bytes)
|
||||
static inline
|
||||
snd_pcm_uframes_t get_hw_ptr_period(struct snd_pcm_runtime *runtime)
|
||||
{
|
||||
snd_pcm_uframes_t ptr = runtime->status->hw_ptr;
|
||||
return ptr - (ptr % runtime->period_size);
|
||||
return runtime->hw_ptr_interrupt;
|
||||
}
|
||||
|
||||
/* define extended formats in the recent OSS versions (if any) */
|
||||
|
@@ -325,8 +325,7 @@ static int snd_pcm_update_hw_ptr0(struct snd_pcm_substream *substream,
|
||||
if (in_interrupt) {
|
||||
/* we know that one period was processed */
|
||||
/* delta = "expected next hw_ptr" for in_interrupt != 0 */
|
||||
delta = old_hw_ptr - (old_hw_ptr % runtime->period_size)
|
||||
+ runtime->period_size;
|
||||
delta = runtime->hw_ptr_interrupt + runtime->period_size;
|
||||
if (delta > new_hw_ptr) {
|
||||
hw_base += runtime->buffer_size;
|
||||
if (hw_base >= runtime->boundary)
|
||||
@@ -437,6 +436,10 @@ static int snd_pcm_update_hw_ptr0(struct snd_pcm_substream *substream,
|
||||
runtime->silence_size > 0)
|
||||
snd_pcm_playback_silence(substream, new_hw_ptr);
|
||||
|
||||
if (in_interrupt) {
|
||||
runtime->hw_ptr_interrupt = new_hw_ptr -
|
||||
(new_hw_ptr % runtime->period_size);
|
||||
}
|
||||
runtime->hw_ptr_base = hw_base;
|
||||
runtime->status->hw_ptr = new_hw_ptr;
|
||||
runtime->hw_ptr_jiffies = jiffies;
|
||||
|
@@ -1252,6 +1252,8 @@ static int snd_pcm_do_reset(struct snd_pcm_substream *substream, int state)
|
||||
if (err < 0)
|
||||
return err;
|
||||
runtime->hw_ptr_base = 0;
|
||||
runtime->hw_ptr_interrupt = runtime->status->hw_ptr -
|
||||
runtime->status->hw_ptr % runtime->period_size;
|
||||
runtime->silence_start = runtime->status->hw_ptr;
|
||||
runtime->silence_filled = 0;
|
||||
return 0;
|
||||
|
Reference in New Issue
Block a user