aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJaroslav Kysela <perex@suse.cz>2005-05-27 04:07:06 -0400
committerJaroslav Kysela <perex@suse.cz>2005-05-29 04:15:03 -0400
commit8e72ab349e54da49cf3e11480581a3e6704d9553 (patch)
tree926c3390d9bce0926657fb9e77f9ba17fb230f22
parentc3a9cfac750d78241b5dde7d004522f687703b90 (diff)
[ALSA] Reverted last patch for SNDCTL_DSP_GETOPTR fix & possible overflow fix
ALSA<-OSS emulation This reverts the last patch which wrongly mixes bytes and frames. The real culprit might be the 32-bit overflow, so the return expression uses 64-bit values now in snd_pcm_oss_bytes(). Signed-off-by: Jaroslav Kysela <perex@suse.cz>
-rw-r--r--sound/core/oss/pcm_oss.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/sound/core/oss/pcm_oss.c b/sound/core/oss/pcm_oss.c
index 6f90dbb76804..a293982bdd21 100644
--- a/sound/core/oss/pcm_oss.c
+++ b/sound/core/oss/pcm_oss.c
@@ -124,13 +124,12 @@ int snd_pcm_plugin_append(snd_pcm_plugin_t *plugin)
124 124
125static long snd_pcm_oss_bytes(snd_pcm_substream_t *substream, long frames) 125static long snd_pcm_oss_bytes(snd_pcm_substream_t *substream, long frames)
126{ 126{
127 long bytes = 0;
128 snd_pcm_runtime_t *runtime = substream->runtime; 127 snd_pcm_runtime_t *runtime = substream->runtime;
129 snd_pcm_uframes_t buffer_size = snd_pcm_lib_buffer_bytes(substream); 128 snd_pcm_uframes_t buffer_size = snd_pcm_lib_buffer_bytes(substream);
130 bytes = frames_to_bytes(runtime, frames); 129 frames = frames_to_bytes(runtime, frames);
131 if (buffer_size == runtime->oss.buffer_bytes) 130 if (buffer_size == runtime->oss.buffer_bytes)
132 return bytes; 131 return frames;
133 return (runtime->oss.buffer_bytes * frames) / buffer_size; 132 return (long)(((int64_t)runtime->oss.buffer_bytes * (int64_t)frames) / (int64_t)buffer_size);
134} 133}
135 134
136static long snd_pcm_alsa_frames(snd_pcm_substream_t *substream, long bytes) 135static long snd_pcm_alsa_frames(snd_pcm_substream_t *substream, long bytes)