summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog2
-rw-r--r--rfbserver.c16
2 files changed, 10 insertions, 8 deletions
diff --git a/ChangeLog b/ChangeLog
index cd982cf..700f6ad 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,5 @@
+ fixed LinuxVNC colour handling
+ fixed a bug with pthreads where the connection was not closed
moved vncterm to main package (LinuxVNC included)
portability fixes (IRIX, OSX, Solaris)
more portable way to determine endianness and types of a given size
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)