diff --git a/TODO b/TODO index 17ffe48..f17d3f0 100644 --- a/TODO +++ b/TODO @@ -1,24 +1,26 @@ immediate: ---------- -fix bug in http (java) client with big endian server: byte swapping is broken udp documentation perhaps the option (or just hint) not to mark very tiny regions as modified, because that is inefficient for the encodings. optionally dont draw rich cursors as xcursors +cursor smears on IRIX with pthreads, then has bus error. later: ------ autoconf? at least Sun Solaris and Windows compilation CORBA -cursor "smears" sometimes when not using cursor encoding - (seems to be gone now; haven't debugged properly, though) done: ----- +.fix bug in http (java) client with big endian server: byte swapping is broken + (was a cursorshape which was sent too soon; java vncviewer assumes + a rich cursor shape to be always 1 byte per pixel, however, framebuffer + updates before setting the pixel format can be server format) .rfbConnect, ConnectToTcpAddr .update to newest TridiaVNC version (1.2.1). .adapt rdp2vnc (rdesktop) diff --git a/rfbserver.c b/rfbserver.c index f43ceac..ef7eced 100644 --- a/rfbserver.c +++ b/rfbserver.c @@ -849,6 +849,7 @@ rfbSendFramebufferUpdate(cl, givenUpdateRegion) Bool sendCursorShape = FALSE; Bool cursorWasDrawn = FALSE; + /* * If this client understands cursor shape updates, cursor should be * removed from the framebuffer. Otherwise, make sure it's put up. @@ -860,8 +861,9 @@ rfbSendFramebufferUpdate(cl, givenUpdateRegion) if (cl->screen->cursorIsDrawn) { rfbUndrawCursor(cl); } - if (!cl->screen->cursorIsDrawn && cl->cursorWasChanged) - sendCursorShape = TRUE; + if (!cl->screen->cursorIsDrawn && cl->cursorWasChanged && + cl->readyForSetColourMapEntries) + sendCursorShape = TRUE; } else { if (!cl->screen->cursorIsDrawn) { rfbDrawCursor(cl);