diff options
author | dscho <dscho> | 2005-01-20 14:04:10 +0000 |
---|---|---|
committer | dscho <dscho> | 2005-01-20 14:04:10 +0000 |
commit | 155f4c1053739e248a82b91e4c989b94727c3ea6 (patch) | |
tree | d743402edc128890bd7b497cb38f3955249686bd /libvncserver/cursor.c | |
parent | 47646a200feefc37754c385389f7d7b6119c7f07 (diff) | |
download | libtdevnc-155f4c1053739e248a82b91e4c989b94727c3ea6.tar.gz libtdevnc-155f4c1053739e248a82b91e4c989b94727c3ea6.zip |
fix disappearing cursor
Diffstat (limited to 'libvncserver/cursor.c')
-rw-r--r-- | libvncserver/cursor.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/libvncserver/cursor.c b/libvncserver/cursor.c index 3a01e64..df6a36d 100644 --- a/libvncserver/cursor.c +++ b/libvncserver/cursor.c @@ -570,7 +570,7 @@ void rfbShowCursor(rfbClientPtr cl) * region gets redrawn. */ -void rfbRedrawAfterHideCursor(rfbClientPtr cl) +void rfbRedrawAfterHideCursor(rfbClientPtr cl,sraRegionPtr updateRegion) { rfbScreenInfoPtr s = cl->screen; rfbCursorPtr c = s->cursor; @@ -587,7 +587,10 @@ void rfbRedrawAfterHideCursor(rfbClientPtr cl) sraRegionPtr rect; fprintf(stderr,"%d %d %d %d\n",x,y,x2,y2); rect = sraRgnCreateRect(x,y,x2,y2); - sraRgnOr(cl->modifiedRegion,rect); + if(updateRegion) + sraRgnOr(updateRegion,rect); + else + sraRgnOr(cl->modifiedRegion,rect); sraRgnDestroy(rect); } } @@ -620,7 +623,7 @@ void rfbSetCursor(rfbScreenInfoPtr rfbScreen,rfbCursorPtr c) iterator=rfbGetClientIterator(rfbScreen); while((cl=rfbClientIteratorNext(iterator))) if(!cl->enableCursorShapeUpdates) - rfbRedrawAfterHideCursor(cl); + rfbRedrawAfterHideCursor(cl,0); rfbReleaseClientIterator(iterator); if(rfbScreen->cursor->cleanup) @@ -633,7 +636,7 @@ void rfbSetCursor(rfbScreenInfoPtr rfbScreen,rfbCursorPtr c) while((cl=rfbClientIteratorNext(iterator))) { cl->cursorWasChanged = TRUE; if(!cl->enableCursorShapeUpdates) - rfbRedrawAfterHideCursor(cl); + rfbRedrawAfterHideCursor(cl,0); } rfbReleaseClientIterator(iterator); |