|
@@ -1510,16 +1510,19 @@ static ssize_t snd_pcm_oss_read1(struct snd_pcm_substream *substream, char __use
|
|
static int snd_pcm_oss_reset(struct snd_pcm_oss_file *pcm_oss_file)
|
|
static int snd_pcm_oss_reset(struct snd_pcm_oss_file *pcm_oss_file)
|
|
{
|
|
{
|
|
struct snd_pcm_substream *substream;
|
|
struct snd_pcm_substream *substream;
|
|
|
|
+ struct snd_pcm_runtime *runtime;
|
|
|
|
+ int i;
|
|
|
|
|
|
- substream = pcm_oss_file->streams[SNDRV_PCM_STREAM_PLAYBACK];
|
|
|
|
- if (substream != NULL) {
|
|
|
|
- snd_pcm_kernel_ioctl(substream, SNDRV_PCM_IOCTL_DROP, NULL);
|
|
|
|
- substream->runtime->oss.prepare = 1;
|
|
|
|
- }
|
|
|
|
- substream = pcm_oss_file->streams[SNDRV_PCM_STREAM_CAPTURE];
|
|
|
|
- if (substream != NULL) {
|
|
|
|
|
|
+ for (i = 0; i < 2; i++) {
|
|
|
|
+ substream = pcm_oss_file->streams[i];
|
|
|
|
+ if (!substream)
|
|
|
|
+ continue;
|
|
|
|
+ runtime = substream->runtime;
|
|
snd_pcm_kernel_ioctl(substream, SNDRV_PCM_IOCTL_DROP, NULL);
|
|
snd_pcm_kernel_ioctl(substream, SNDRV_PCM_IOCTL_DROP, NULL);
|
|
- substream->runtime->oss.prepare = 1;
|
|
|
|
|
|
+ runtime->oss.prepare = 1;
|
|
|
|
+ runtime->oss.buffer_used = 0;
|
|
|
|
+ runtime->oss.prev_hw_ptr_period = 0;
|
|
|
|
+ runtime->oss.period_ptr = 0;
|
|
}
|
|
}
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|