Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8e72ab34 authored by Jaroslav Kysela's avatar Jaroslav Kysela
Browse files

[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: default avatarJaroslav Kysela <perex@suse.cz>
parent c3a9cfac
Loading
Loading
Loading
Loading
+3 −4
Original line number Original line Diff line number Diff line
@@ -124,13 +124,12 @@ int snd_pcm_plugin_append(snd_pcm_plugin_t *plugin)


static long snd_pcm_oss_bytes(snd_pcm_substream_t *substream, long frames)
static long snd_pcm_oss_bytes(snd_pcm_substream_t *substream, long frames)
{
{
	long bytes = 0;
	snd_pcm_runtime_t *runtime = substream->runtime;
	snd_pcm_runtime_t *runtime = substream->runtime;
	snd_pcm_uframes_t buffer_size = snd_pcm_lib_buffer_bytes(substream);
	snd_pcm_uframes_t buffer_size = snd_pcm_lib_buffer_bytes(substream);
	bytes = frames_to_bytes(runtime, frames);
	frames = frames_to_bytes(runtime, frames);
	if (buffer_size == runtime->oss.buffer_bytes)
	if (buffer_size == runtime->oss.buffer_bytes)
		return bytes;
		return frames;
	return (runtime->oss.buffer_bytes * frames) / buffer_size;
	return (long)(((int64_t)runtime->oss.buffer_bytes * (int64_t)frames) / (int64_t)buffer_size);
}
}


static long snd_pcm_alsa_frames(snd_pcm_substream_t *substream, long bytes)
static long snd_pcm_alsa_frames(snd_pcm_substream_t *substream, long bytes)