summaryrefslogtreecommitdiff
path: root/src/audiobackend-pulse.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/audiobackend-pulse.cc')
-rw-r--r--src/audiobackend-pulse.cc8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/audiobackend-pulse.cc b/src/audiobackend-pulse.cc
index 3b39d22..226ab35 100644
--- a/src/audiobackend-pulse.cc
+++ b/src/audiobackend-pulse.cc
@@ -54,6 +54,9 @@ AudioBackendPulse::AudioBackendPulse(const char *device)
memset(read_buffer, 0, sizeof(read_buffer));
+ pread = 0;
+ pwrite = 0;
+
running = true;
start();
}
@@ -94,6 +97,11 @@ void AudioBackendPulse::run()
int AudioBackendPulse::read(char *pcm, size_t maxsize)
{
+ // Wait until enough audio data has been read by the thread.
+ while((pread + maxsize) < pwrite) {
+ usleep(1000);
+ }
+
for(int i = 0; i < maxsize; i++) {
pcm[i] = read_buffer[pread % sizeof(read_buffer)];
pread++;