From 8cf2226b05197a3003328c2cc960830bf4bc5f7a Mon Sep 17 00:00:00 2001 From: Bent Bisballe Nyeng Date: Sat, 20 Sep 2014 12:15:31 +0200 Subject: Free resources in soundplayer --- src/soundplayer.cc | 20 +++++++++++++------- src/soundplayer.h | 3 ++- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/src/soundplayer.cc b/src/soundplayer.cc index 6aea2bf..9802d1b 100644 --- a/src/soundplayer.cc +++ b/src/soundplayer.cc @@ -33,6 +33,7 @@ #define BUFSZ 512 SoundPlayer::SoundPlayer() + : sem_write(1) { start(); } @@ -63,7 +64,7 @@ void SoundPlayer::run() short s[BUFSZ]; while(running) { - sem.acquire(); + sem_read.acquire(); char *pcm; size_t size; @@ -74,11 +75,13 @@ void SoundPlayer::run() size = qi.size; } + sem_write.release(); + printf("."); fflush(stdout); ao_play(dev, pcm, size); - //free(pcm); + free(pcm); /* memset(s, 0, BUFSZ * sizeof(short)); @@ -113,11 +116,14 @@ void SoundPlayer::run() void SoundPlayer::playSamples(const char *pcm, size_t size) { - QMutexLocker lock(&mutex); + sem_write.acquire(); - qi.pcm = (char*)malloc(size); - memcpy(qi.pcm, pcm, size); - qi.size = size; + { + QMutexLocker lock(&mutex); + qi.pcm = (char*)malloc(size); + memcpy(qi.pcm, pcm, size); + qi.size = size; + } - sem.release(); + sem_read.release(); } diff --git a/src/soundplayer.h b/src/soundplayer.h index 28c0cf8..9a1e811 100644 --- a/src/soundplayer.h +++ b/src/soundplayer.h @@ -54,7 +54,8 @@ public: private: volatile bool running; QMutex mutex; - QSemaphore sem; + QSemaphore sem_read; + QSemaphore sem_write; QueueItem qi; -- cgit v1.2.3