diff options
author | Jaroslav Kysela <perex@perex.cz> | 2010-01-05 11:19:34 -0500 |
---|---|---|
committer | Jaroslav Kysela <perex@perex.cz> | 2010-01-07 09:47:38 -0500 |
commit | f240406babfe1526998e10583ea5eccc2676a433 (patch) | |
tree | 311f0dd33f0ec87bd0ac48d4871f67ad78b9ee36 /include/sound | |
parent | 4d96eb255c53ab5e39b37fd4d484ea3dc39ab456 (diff) |
ALSA: pcm_lib - cleanup & merge hw_ptr update functions
Do general cleanup in snd_pcm_update_hw_ptr*() routines and merge them.
The main change is hw_ptr_interrupt variable removal to simplify code
logic. This variable can be computed directly from hw_ptr.
Ensure that updated hw_ptr is not lower than previous one (it was possible
with old code in some obscure situations when interrupt was delayed or
the lowlevel driver returns wrong ring buffer position value).
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Diffstat (limited to 'include/sound')
-rw-r--r-- | include/sound/pcm.h | 1 | ||||
-rw-r--r-- | include/sound/pcm_oss.h | 2 |
2 files changed, 1 insertions, 2 deletions
diff --git a/include/sound/pcm.h b/include/sound/pcm.h index 4e18a6dbe690..fe1b131842be 100644 --- a/include/sound/pcm.h +++ b/include/sound/pcm.h | |||
@@ -271,7 +271,6 @@ struct snd_pcm_runtime { | |||
271 | int overrange; | 271 | int overrange; |
272 | snd_pcm_uframes_t avail_max; | 272 | snd_pcm_uframes_t avail_max; |
273 | snd_pcm_uframes_t hw_ptr_base; /* Position at buffer restart */ | 273 | snd_pcm_uframes_t hw_ptr_base; /* Position at buffer restart */ |
274 | snd_pcm_uframes_t hw_ptr_interrupt; /* Position at interrupt time */ | ||
275 | unsigned long hw_ptr_jiffies; /* Time when hw_ptr is updated */ | 274 | unsigned long hw_ptr_jiffies; /* Time when hw_ptr is updated */ |
276 | snd_pcm_sframes_t delay; /* extra delay; typically FIFO size */ | 275 | snd_pcm_sframes_t delay; /* extra delay; typically FIFO size */ |
277 | 276 | ||
diff --git a/include/sound/pcm_oss.h b/include/sound/pcm_oss.h index cc4e226f35fd..760c969d885d 100644 --- a/include/sound/pcm_oss.h +++ b/include/sound/pcm_oss.h | |||
@@ -61,7 +61,7 @@ struct snd_pcm_oss_runtime { | |||
61 | struct snd_pcm_plugin *plugin_first; | 61 | struct snd_pcm_plugin *plugin_first; |
62 | struct snd_pcm_plugin *plugin_last; | 62 | struct snd_pcm_plugin *plugin_last; |
63 | #endif | 63 | #endif |
64 | unsigned int prev_hw_ptr_interrupt; | 64 | unsigned int prev_hw_ptr_period; |
65 | }; | 65 | }; |
66 | 66 | ||
67 | struct snd_pcm_oss_file { | 67 | struct snd_pcm_oss_file { |