|
@@ -1705,13 +1705,12 @@ static int snd_pcm_oss_release_file(snd_pcm_oss_file_t *pcm_oss_file)
|
|
|
if (snd_pcm_running(substream))
|
|
|
snd_pcm_stop(substream, SNDRV_PCM_STATE_SETUP);
|
|
|
snd_pcm_stream_unlock_irq(substream);
|
|
|
- if (substream->open_flag) {
|
|
|
+ if (substream->ffile != NULL) {
|
|
|
if (substream->ops->hw_free != NULL)
|
|
|
substream->ops->hw_free(substream);
|
|
|
substream->ops->close(substream);
|
|
|
- substream->open_flag = 0;
|
|
|
+ substream->ffile = NULL;
|
|
|
}
|
|
|
- substream->ffile = NULL;
|
|
|
snd_pcm_oss_release_substream(substream);
|
|
|
snd_pcm_release_substream(substream);
|
|
|
}
|
|
@@ -1778,14 +1777,13 @@ static int snd_pcm_oss_open_file(struct file *file,
|
|
|
snd_pcm_oss_release_file(pcm_oss_file);
|
|
|
return err;
|
|
|
}
|
|
|
- psubstream->open_flag = 1;
|
|
|
+ psubstream->ffile = file;
|
|
|
err = snd_pcm_hw_constraints_complete(psubstream);
|
|
|
if (err < 0) {
|
|
|
snd_printd("snd_pcm_hw_constraint_complete failed\n");
|
|
|
snd_pcm_oss_release_file(pcm_oss_file);
|
|
|
return err;
|
|
|
}
|
|
|
- psubstream->ffile = file;
|
|
|
snd_pcm_oss_init_substream(psubstream, psetup, minor);
|
|
|
}
|
|
|
if (csubstream != NULL) {
|
|
@@ -1800,14 +1798,13 @@ static int snd_pcm_oss_open_file(struct file *file,
|
|
|
snd_pcm_oss_release_file(pcm_oss_file);
|
|
|
return err;
|
|
|
}
|
|
|
- csubstream->open_flag = 1;
|
|
|
+ csubstream->ffile = file;
|
|
|
err = snd_pcm_hw_constraints_complete(csubstream);
|
|
|
if (err < 0) {
|
|
|
snd_printd("snd_pcm_hw_constraint_complete failed\n");
|
|
|
snd_pcm_oss_release_file(pcm_oss_file);
|
|
|
return err;
|
|
|
}
|
|
|
- csubstream->ffile = file;
|
|
|
snd_pcm_oss_init_substream(csubstream, csetup, minor);
|
|
|
}
|
|
|
|