Skip to content

Commit

Permalink
ALSA: ALSA: ctxfi - Release PCM resources at each prepare call
Browse files Browse the repository at this point in the history
The prepare callback can be called multiple times, thus it needs to
release and acquire the resource again by itself at the second or later
call.

Simply add pcm_release_resources() at the beginning of each prepare
callback in ctatc.c.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
  • Loading branch information
Takashi Iwai committed Jun 2, 2009
1 parent 8a4259b commit 822fa19
Showing 1 changed file with 9 additions and 0 deletions.
9 changes: 9 additions & 0 deletions sound/pci/ctxfi/ctatc.c
Original file line number Diff line number Diff line change
Expand Up @@ -254,6 +254,9 @@ static int atc_pcm_playback_prepare(struct ct_atc *atc, struct ct_atc_pcm *apcm)
return 0;
}

/* first release old resources */
atc->pcm_release_resources(atc, apcm);

/* Get SRC resource */
desc.multi = apcm->substream->runtime->channels;
desc.msr = atc->msr;
Expand Down Expand Up @@ -496,6 +499,9 @@ atc_pcm_capture_get_resources(struct ct_atc *atc, struct ct_atc_pcm *apcm)
int n_srcimp = 0, n_amixer = 0, n_srcc = 0, n_sum = 0;
struct src_node_conf_t src_node_conf[2] = {{0} };

/* first release old resources */
atc->pcm_release_resources(atc, apcm);

/* The numbers of converting SRCs and SRCIMPs should be determined
* by pitch value. */

Expand Down Expand Up @@ -767,6 +773,9 @@ static int spdif_passthru_playback_get_resources(struct ct_atc *atc,
int n_amixer = apcm->substream->runtime->channels, i = 0;
unsigned int pitch = 0, rsr = atc->pll_rate;

/* first release old resources */
atc->pcm_release_resources(atc, apcm);

/* Get SRC resource */
desc.multi = apcm->substream->runtime->channels;
desc.msr = 1;
Expand Down

0 comments on commit 822fa19

Please sign in to comment.