diff options
| author | dscho <dscho> | 2003-02-10 20:21:09 +0000 | 
|---|---|---|
| committer | dscho <dscho> | 2003-02-10 20:21:09 +0000 | 
| commit | 1e4c2e7369860be409964ad1f6f771780b5e2621 (patch) | |
| tree | 48a1c173ef279966b6c2cac1db2524dcdfdbd99c | |
| parent | 47c481b7ca247b6abdbece512be30427135b7a39 (diff) | |
| download | libtdevnc-1e4c2e7369860be409964ad1f6f771780b5e2621.tar.gz libtdevnc-1e4c2e7369860be409964ad1f6f771780b5e2621.zip  | |
really fixed ClientConnectionGone problem
| -rw-r--r-- | ChangeLog | 2 | ||||
| -rw-r--r-- | rfbserver.c | 16 | 
2 files changed, 10 insertions, 8 deletions
@@ -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)  | 
