[ALSA] ALSA's struct _snd_pcm_substream: Obsolete open_flag
PCM Midlevel,ALSA<-OSS emulation,USB USX2Y This patch removes open_flag from struct _snd_pcm_substream. All of its uses are substituted by querying struct _snd_pcm_substream's member ffile instead. Signed-off-by: Karsten Wiese <annabellesgarden@yahoo.de> Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
9bcf655109
commit
443feb8826
5 changed files with 22 additions and 18 deletions
|
@ -379,7 +379,6 @@ struct _snd_pcm_substream {
|
|||
unsigned int dma_buf_id;
|
||||
size_t dma_max;
|
||||
/* -- hardware operations -- */
|
||||
unsigned int open_flag: 1; /* lowlevel device has been opened */
|
||||
snd_pcm_ops_t *ops;
|
||||
/* -- runtime information -- */
|
||||
snd_pcm_runtime_t *runtime;
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -2063,7 +2063,7 @@ static snd_pcm_sframes_t snd_pcm_lib_write1(snd_pcm_substream_t *substream,
|
|||
if (((avail < runtime->control->avail_min && size > avail) ||
|
||||
(size >= runtime->xfer_align && avail < runtime->xfer_align))) {
|
||||
wait_queue_t wait;
|
||||
enum { READY, SIGNALED, ERROR, SUSPENDED, EXPIRED } state;
|
||||
enum { READY, SIGNALED, ERROR, SUSPENDED, EXPIRED, DROPPED } state;
|
||||
long tout;
|
||||
|
||||
if (nonblock) {
|
||||
|
@ -2097,6 +2097,9 @@ static snd_pcm_sframes_t snd_pcm_lib_write1(snd_pcm_substream_t *substream,
|
|||
case SNDRV_PCM_STATE_SUSPENDED:
|
||||
state = SUSPENDED;
|
||||
goto _end_loop;
|
||||
case SNDRV_PCM_STATE_SETUP:
|
||||
state = DROPPED;
|
||||
goto _end_loop;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
@ -2123,6 +2126,9 @@ static snd_pcm_sframes_t snd_pcm_lib_write1(snd_pcm_substream_t *substream,
|
|||
snd_printd("playback write error (DMA or IRQ trouble?)\n");
|
||||
err = -EIO;
|
||||
goto _end_unlock;
|
||||
case DROPPED:
|
||||
err = -EBADFD;
|
||||
goto _end_unlock;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
@ -2359,7 +2365,7 @@ static snd_pcm_sframes_t snd_pcm_lib_read1(snd_pcm_substream_t *substream,
|
|||
} else if ((avail < runtime->control->avail_min && size > avail) ||
|
||||
(size >= runtime->xfer_align && avail < runtime->xfer_align)) {
|
||||
wait_queue_t wait;
|
||||
enum { READY, SIGNALED, ERROR, SUSPENDED, EXPIRED } state;
|
||||
enum { READY, SIGNALED, ERROR, SUSPENDED, EXPIRED, DROPPED } state;
|
||||
long tout;
|
||||
|
||||
if (nonblock) {
|
||||
|
@ -2394,6 +2400,9 @@ static snd_pcm_sframes_t snd_pcm_lib_read1(snd_pcm_substream_t *substream,
|
|||
goto _end_loop;
|
||||
case SNDRV_PCM_STATE_DRAINING:
|
||||
goto __draining;
|
||||
case SNDRV_PCM_STATE_SETUP:
|
||||
state = DROPPED;
|
||||
goto _end_loop;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
@ -2420,6 +2429,9 @@ static snd_pcm_sframes_t snd_pcm_lib_read1(snd_pcm_substream_t *substream,
|
|||
snd_printd("capture read error (DMA or IRQ trouble?)\n");
|
||||
err = -EIO;
|
||||
goto _end_unlock;
|
||||
case DROPPED:
|
||||
err = -EBADFD;
|
||||
goto _end_unlock;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -1967,13 +1967,12 @@ static int snd_pcm_release_file(snd_pcm_file_t * pcm_file)
|
|||
runtime = substream->runtime;
|
||||
str = substream->pstr;
|
||||
snd_pcm_unlink(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_remove_file(str, pcm_file);
|
||||
snd_pcm_release_substream(substream);
|
||||
kfree(pcm_file);
|
||||
|
@ -2022,18 +2021,15 @@ static int snd_pcm_open_file(struct file *file,
|
|||
snd_pcm_release_file(pcm_file);
|
||||
return err;
|
||||
}
|
||||
substream->open_flag = 1;
|
||||
substream->ffile = file;
|
||||
|
||||
err = snd_pcm_hw_constraints_complete(substream);
|
||||
if (err < 0) {
|
||||
snd_printd("snd_pcm_hw_constraints_complete failed\n");
|
||||
substream->ops->close(substream);
|
||||
snd_pcm_release_file(pcm_file);
|
||||
return err;
|
||||
}
|
||||
|
||||
substream->ffile = file;
|
||||
|
||||
file->private_data = pcm_file;
|
||||
*rpcm_file = pcm_file;
|
||||
return 0;
|
||||
|
|
|
@ -624,7 +624,7 @@ static int usX2Y_pcms_lock_check(snd_card_t *card)
|
|||
for (s = 0; s < 2; ++s) {
|
||||
snd_pcm_substream_t *substream;
|
||||
substream = pcm->streams[s].substream;
|
||||
if (substream && substream->open_flag)
|
||||
if (substream && substream->ffile != NULL)
|
||||
err = -EBUSY;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue