summaryrefslogtreecommitdiffstats
path: root/rfbserver.c
diff options
context:
space:
mode:
Diffstat (limited to 'rfbserver.c')
-rw-r--r--rfbserver.c16
1 files changed, 8 insertions, 8 deletions
diff --git a/rfbserver.c b/rfbserver.c
index f8b273c..1403714 100644
--- a/rfbserver.c
+++ b/rfbserver.c
@@ -408,14 +408,14 @@ rfbClientConnectionGone(cl)
#endif
#ifdef HAVE_LIBPTHREAD
- LOCK(cl->refCountMutex);
- if(cl->refCount) {
- UNLOCK(cl->refCountMutex);
- if(cl->screen->backgroundLoop != FALSE)
- WAIT(cl->deleteCond,cl->refCountMutex);
- } else {
- UNLOCK(cl->refCountMutex);
- }
+ if(cl->screen->backgroundLoop != FALSE)
+ do {
+ LOCK(cl->refCountMutex);
+ i=cl->refCount;
+ UNLOCK(cl->refCountMutex);
+ if(i>0)
+ WAIT(cl->deleteCond,cl->refCountMutex);
+ } while(i>0);
#endif
if(cl->sock>=0)