From 519a8e0e399bf44893f2d61a3676f3257ab8d201 Mon Sep 17 00:00:00 2001 From: dscho Date: Wed, 10 Oct 2001 23:56:04 +0000 Subject: copyrect corrections, fd_set in rfbNewClient, dox in rfb.h for pthreads problem --- main.c | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'main.c') diff --git a/main.c b/main.c index ea85123..478d8d8 100644 --- a/main.c +++ b/main.c @@ -75,6 +75,7 @@ void rfbScheduleCopyRegion(rfbScreenInfoPtr rfbScreen,sraRegionPtr copyRegion,in while((cl=rfbClientIteratorNext(iterator))) { LOCK(cl->updateMutex); if(cl->useCopyRect) { + sraRegionPtr modifiedRegionBackup; if(!sraRgnEmpty(cl->copyRegion) && (cl->copyDX!=dx || cl->copyDY!=dy)) { sraRgnOr(cl->copyRegion,cl->modifiedRegion); sraRgnMakeEmpty(cl->copyRegion); @@ -83,6 +84,13 @@ void rfbScheduleCopyRegion(rfbScreenInfoPtr rfbScreen,sraRegionPtr copyRegion,in cl->copyDX = dx; cl->copyDY = dy; + /* if there were modified regions, which are now copied: */ + modifiedRegionBackup=sraRgnCreateRgn(cl->modifiedRegion); + sraRgnOffset(modifiedRegionBackup,dx,dy); + sraRgnAnd(modifiedRegionBackup,cl->copyRegion); + sraRgnOr(cl->modifiedRegion,modifiedRegionBackup); + sraRgnDestroy(modifiedRegionBackup); + /* while(!sraRgnEmpty(cl->copyRegion)) */ { #ifdef HAVE_PTHREADS if(!cl->screen->backgroundLoop) -- cgit v1.2.3