ALSA: oxfw: unify substreams counter

In former commits, two isochronous contexts are handles at the same
time. This commit unifies stream counters to obsolete them.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
Takashi Sakamoto 2019-06-12 17:44:20 +09:00 коммит произвёл Takashi Iwai
Родитель 779f0dba0b
Коммит 4a0a04729a
4 изменённых файлов: 11 добавлений и 12 удалений

Просмотреть файл

@ -19,7 +19,7 @@ static int midi_capture_open(struct snd_rawmidi_substream *substream)
mutex_lock(&oxfw->mutex); mutex_lock(&oxfw->mutex);
oxfw->capture_substreams++; ++oxfw->substreams_count;
err = snd_oxfw_stream_start_duplex(oxfw, &oxfw->tx_stream, 0, 0); err = snd_oxfw_stream_start_duplex(oxfw, &oxfw->tx_stream, 0, 0);
mutex_unlock(&oxfw->mutex); mutex_unlock(&oxfw->mutex);
@ -41,7 +41,7 @@ static int midi_playback_open(struct snd_rawmidi_substream *substream)
mutex_lock(&oxfw->mutex); mutex_lock(&oxfw->mutex);
oxfw->playback_substreams++; ++oxfw->substreams_count;
err = snd_oxfw_stream_start_duplex(oxfw, &oxfw->rx_stream, 0, 0); err = snd_oxfw_stream_start_duplex(oxfw, &oxfw->rx_stream, 0, 0);
mutex_unlock(&oxfw->mutex); mutex_unlock(&oxfw->mutex);
@ -58,7 +58,7 @@ static int midi_capture_close(struct snd_rawmidi_substream *substream)
mutex_lock(&oxfw->mutex); mutex_lock(&oxfw->mutex);
oxfw->capture_substreams--; --oxfw->substreams_count;
snd_oxfw_stream_stop_duplex(oxfw); snd_oxfw_stream_stop_duplex(oxfw);
mutex_unlock(&oxfw->mutex); mutex_unlock(&oxfw->mutex);
@ -73,7 +73,7 @@ static int midi_playback_close(struct snd_rawmidi_substream *substream)
mutex_lock(&oxfw->mutex); mutex_lock(&oxfw->mutex);
oxfw->playback_substreams--; --oxfw->substreams_count;
snd_oxfw_stream_stop_duplex(oxfw); snd_oxfw_stream_stop_duplex(oxfw);
mutex_unlock(&oxfw->mutex); mutex_unlock(&oxfw->mutex);

Просмотреть файл

@ -220,7 +220,7 @@ static int pcm_capture_hw_params(struct snd_pcm_substream *substream,
if (substream->runtime->status->state == SNDRV_PCM_STATE_OPEN) { if (substream->runtime->status->state == SNDRV_PCM_STATE_OPEN) {
mutex_lock(&oxfw->mutex); mutex_lock(&oxfw->mutex);
oxfw->capture_substreams++; ++oxfw->substreams_count;
mutex_unlock(&oxfw->mutex); mutex_unlock(&oxfw->mutex);
} }
@ -239,7 +239,7 @@ static int pcm_playback_hw_params(struct snd_pcm_substream *substream,
if (substream->runtime->status->state == SNDRV_PCM_STATE_OPEN) { if (substream->runtime->status->state == SNDRV_PCM_STATE_OPEN) {
mutex_lock(&oxfw->mutex); mutex_lock(&oxfw->mutex);
oxfw->playback_substreams++; ++oxfw->substreams_count;
mutex_unlock(&oxfw->mutex); mutex_unlock(&oxfw->mutex);
} }
@ -253,7 +253,7 @@ static int pcm_capture_hw_free(struct snd_pcm_substream *substream)
mutex_lock(&oxfw->mutex); mutex_lock(&oxfw->mutex);
if (substream->runtime->status->state != SNDRV_PCM_STATE_OPEN) if (substream->runtime->status->state != SNDRV_PCM_STATE_OPEN)
oxfw->capture_substreams--; --oxfw->substreams_count;
snd_oxfw_stream_stop_duplex(oxfw); snd_oxfw_stream_stop_duplex(oxfw);
@ -268,7 +268,7 @@ static int pcm_playback_hw_free(struct snd_pcm_substream *substream)
mutex_lock(&oxfw->mutex); mutex_lock(&oxfw->mutex);
if (substream->runtime->status->state != SNDRV_PCM_STATE_OPEN) if (substream->runtime->status->state != SNDRV_PCM_STATE_OPEN)
oxfw->playback_substreams--; --oxfw->substreams_count;
snd_oxfw_stream_stop_duplex(oxfw); snd_oxfw_stream_stop_duplex(oxfw);

Просмотреть файл

@ -244,7 +244,7 @@ int snd_oxfw_stream_start_duplex(struct snd_oxfw *oxfw,
enum avc_general_plug_dir dir; enum avc_general_plug_dir dir;
int err = 0; int err = 0;
if (oxfw->capture_substreams == 0 && oxfw->playback_substreams == 0) if (oxfw->substreams_count == 0)
return -EIO; return -EIO;
// Considering JACK/FFADO streaming: // Considering JACK/FFADO streaming:
@ -323,7 +323,7 @@ error:
void snd_oxfw_stream_stop_duplex(struct snd_oxfw *oxfw) void snd_oxfw_stream_stop_duplex(struct snd_oxfw *oxfw)
{ {
if (oxfw->capture_substreams == 0 && oxfw->playback_substreams == 0) { if (oxfw->substreams_count == 0) {
amdtp_stream_stop(&oxfw->rx_stream); amdtp_stream_stop(&oxfw->rx_stream);
cmp_connection_break(&oxfw->in_conn); cmp_connection_break(&oxfw->in_conn);

Просмотреть файл

@ -52,8 +52,7 @@ struct snd_oxfw {
struct cmp_connection in_conn; struct cmp_connection in_conn;
struct amdtp_stream tx_stream; struct amdtp_stream tx_stream;
struct amdtp_stream rx_stream; struct amdtp_stream rx_stream;
unsigned int capture_substreams; unsigned int substreams_count;
unsigned int playback_substreams;
unsigned int midi_input_ports; unsigned int midi_input_ports;
unsigned int midi_output_ports; unsigned int midi_output_ports;