diff options
| author | Lennart Poettering <lennart@poettering.net> | 2007-08-11 23:43:39 +0000 | 
|---|---|---|
| committer | Lennart Poettering <lennart@poettering.net> | 2007-08-11 23:43:39 +0000 | 
| commit | 45e495499e5dede1d7c0e8b18b4b2ef3df215d3e (patch) | |
| tree | 2a0dfc0eeef2937e837394ebce608acac9819f63 /src/modules/module-alsa-source.c | |
| parent | 06f2799d8f695fc4545a5027980518be72c18788 (diff) | |
fix latency reporting for oss and alsa modules
git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/lennart@1645 fefdeb5f-60dc-0310-8127-8f9354f1896f
Diffstat (limited to 'src/modules/module-alsa-source.c')
| -rw-r--r-- | src/modules/module-alsa-source.c | 13 | 
1 files changed, 7 insertions, 6 deletions
diff --git a/src/modules/module-alsa-source.c b/src/modules/module-alsa-source.c index b6471850..8ff074d6 100644 --- a/src/modules/module-alsa-source.c +++ b/src/modules/module-alsa-source.c @@ -209,17 +209,18 @@ static int mmap_read(struct userdata *u) {  static pa_usec_t source_get_latency(struct userdata *u) {      pa_usec_t r = 0; +    snd_pcm_status_t *status;      snd_pcm_sframes_t frames = 0;      int err; + +    snd_pcm_status_alloca(&status);      pa_assert(u); -    snd_pcm_avail_update(u->pcm_handle); - -    if ((err = snd_pcm_delay(u->pcm_handle, &frames)) < 0) { +    if ((err = snd_pcm_status(u->pcm_handle, status)) < 0)           pa_log("Failed to get delay: %s", snd_strerror(err)); -        return 0; -    } +    else +        frames = snd_pcm_status_get_delay(status);      if (frames > 0)          r = pa_bytes_to_usec(frames * u->frame_size, &u->source->sample_spec); @@ -345,7 +346,7 @@ static int source_process_msg(pa_msgobject *o, int code, void *data, int64_t off              *((pa_usec_t*) data) = r; -            break; +            return 0;          }          case PA_SOURCE_MESSAGE_SET_STATE:  | 
