From f7b707b9541fa2e5e7a709ccb3f26c0be11bc6a9 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Sat, 11 Aug 2007 16:00:02 +0000 Subject: [PATCH] allow destruction of pa_fdsem object that are still in 'poll' state git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/lennart@1634 fefdeb5f-60dc-0310-8127-8f9354f1896f --- src/pulsecore/fdsem.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/pulsecore/fdsem.c b/src/pulsecore/fdsem.c index 4de531a..c51ebba 100644 --- a/src/pulsecore/fdsem.c +++ b/src/pulsecore/fdsem.c @@ -64,8 +64,6 @@ pa_fdsem *pa_fdsem_new(void) { void pa_fdsem_free(pa_fdsem *f) { pa_assert(f); - pa_assert(pa_atomic_load(&f->waiting) == 0); - close(f->fds[0]); close(f->fds[1]); @@ -168,17 +166,16 @@ int pa_fdsem_before_poll(pa_fdsem *f) { pa_atomic_inc(&f->waiting); if (pa_atomic_cmpxchg(&f->signalled, 1, 0)) { - pa_atomic_dec(&f->waiting); + pa_assert_se(pa_atomic_dec(&f->waiting) >= 1); return -1; - } - + } return 0; } int pa_fdsem_after_poll(pa_fdsem *f) { pa_assert(f); - pa_atomic_dec(&f->waiting); + pa_assert_se(pa_atomic_dec(&f->waiting) >= 1); flush(f); -- 2.7.4