diff options
author | Takashi Iwai <tiwai@suse.de> | 2005-05-17 09:28:29 +0000 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2005-05-17 09:28:29 +0000 |
commit | 51313cb2dd724b9ec51badc0cf2b6abc3ecef7bc (patch) | |
tree | 109f9369810567e724e54fee75ab16d98e74d269 /src/pcm/pcm_dsnoop.c | |
parent | e76bbd74d76ac158819d52cde6cbeb2eb28c92b7 (diff) | |
download | alsa-lib-51313cb2dd724b9ec51badc0cf2b6abc3ecef7bc.tar.gz |
Remove pause and fix timer initialization in prepare
- Removed broken pause implementations.
- Fixed the timer initialization in prepare callback so that poll
works again after prepare.
Diffstat (limited to 'src/pcm/pcm_dsnoop.c')
-rw-r--r-- | src/pcm/pcm_dsnoop.c | 22 |
1 files changed, 5 insertions, 17 deletions
diff --git a/src/pcm/pcm_dsnoop.c b/src/pcm/pcm_dsnoop.c index c287db67..58c8fb7c 100644 --- a/src/pcm/pcm_dsnoop.c +++ b/src/pcm/pcm_dsnoop.c @@ -248,7 +248,7 @@ static int snd_pcm_dsnoop_prepare(snd_pcm_t *pcm) dsnoop->state = SND_PCM_STATE_PREPARED; dsnoop->appl_ptr = 0; dsnoop->hw_ptr = 0; - return 0; + return snd_pcm_direct_set_timer_params(dsnoop); } static int snd_pcm_dsnoop_reset(snd_pcm_t *pcm) @@ -268,12 +268,12 @@ static int snd_pcm_dsnoop_start(snd_pcm_t *pcm) if (dsnoop->state != SND_PCM_STATE_PREPARED) return -EBADFD; + snd_pcm_hwsync(dsnoop->spcm); + dsnoop->slave_appl_ptr = dsnoop->slave_hw_ptr = *dsnoop->spcm->hw.ptr; err = snd_timer_start(dsnoop->timer); if (err < 0) return err; dsnoop->state = SND_PCM_STATE_RUNNING; - snd_pcm_hwsync(dsnoop->spcm); - dsnoop->slave_appl_ptr = dsnoop->slave_hw_ptr = *dsnoop->spcm->hw.ptr; gettimeofday(&tv, 0); dsnoop->trigger_tstamp.tv_sec = tv.tv_sec; dsnoop->trigger_tstamp.tv_nsec = tv.tv_usec * 1000L; @@ -313,21 +313,9 @@ static int snd_pcm_dsnoop_drain(snd_pcm_t *pcm) return snd_pcm_dsnoop_drop(pcm); } -static int snd_pcm_dsnoop_pause(snd_pcm_t *pcm, int enable) +static int snd_pcm_dsnoop_pause(snd_pcm_t *pcm ATTRIBUTE_UNUSED, int enable ATTRIBUTE_UNUSED) { - snd_pcm_direct_t *dsnoop = pcm->private_data; - if (enable) { - if (dsnoop->state != SND_PCM_STATE_RUNNING) - return -EBADFD; - dsnoop->state = SND_PCM_STATE_PAUSED; - snd_timer_stop(dsnoop->timer); - } else { - if (dsnoop->state != SND_PCM_STATE_PAUSED) - return -EBADFD; - dsnoop->state = SND_PCM_STATE_RUNNING; - snd_timer_start(dsnoop->timer); - } - return 0; + return -EIO; } static snd_pcm_sframes_t snd_pcm_dsnoop_rewind(snd_pcm_t *pcm, snd_pcm_uframes_t frames) |