diff options
Diffstat (limited to 'rfbserver.c')
-rw-r--r-- | rfbserver.c | 16 |
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) |