diff options
author | Tanu Kaskinen <tanuk@iki.fi> | 2009-08-16 21:25:48 +0300 |
---|---|---|
committer | Tanu Kaskinen <tanuk@iki.fi> | 2009-08-16 21:25:48 +0300 |
commit | bcaba0b1b43d6a1b32aadfa98860f40b2c93e136 (patch) | |
tree | 6bd0d60a8fa822bfd688b90d062d0f73eee2e47e /src/pulsecore/aupdate.c | |
parent | 2bb3eef414f80189cf6af6cd66c519630e4c0a43 (diff) | |
parent | 01e4b61a910afdd21f860fadbe98075735c2bf51 (diff) |
Merge branch 'master' of git://0pointer.de/pulseaudio into dbus-work
Conflicts:
src/Makefile.am
src/daemon/daemon-conf.c
src/daemon/daemon.conf.in
src/modules/module-stream-restore.c
src/pulse/client-conf.c
src/pulsecore/namereg.c
Diffstat (limited to 'src/pulsecore/aupdate.c')
-rw-r--r-- | src/pulsecore/aupdate.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/pulsecore/aupdate.c b/src/pulsecore/aupdate.c index 56ebb8e5..85b6e00e 100644 --- a/src/pulsecore/aupdate.c +++ b/src/pulsecore/aupdate.c @@ -39,6 +39,7 @@ struct pa_aupdate { pa_atomic_t read_lock; pa_mutex *write_lock; pa_semaphore *semaphore; + pa_bool_t swapped; }; pa_aupdate *pa_aupdate_new(void) { @@ -101,6 +102,8 @@ unsigned pa_aupdate_write_begin(pa_aupdate *a) { n = (unsigned) pa_atomic_load(&a->read_lock); + a->swapped = FALSE; + return !WHICH(n); } @@ -119,11 +122,16 @@ unsigned pa_aupdate_write_swap(pa_aupdate *a) { break; } + a->swapped = TRUE; + return WHICH(n); } void pa_aupdate_write_end(pa_aupdate *a) { pa_assert(a); + if (!a->swapped) + pa_aupdate_write_swap(a); + pa_mutex_unlock(a->write_lock); } |