this is how /sys/src/cmd/vnc/draw.c was changed to not "mouse turd" on vesa. have put the changed file in contrib at: /n/sources/contrib/cinap_lenrek/draw.c didnt made a patch because its just a work arround, not a real fix. cpu% diff -c /n/dump/2009/0923/sys/src/cmd/vnc/draw.c draw.c /n/dump/2009/0923/sys/src/cmd/vnc/draw.c:107,112 - draw.c:107,113 updatescreen(Rectangle r) { int b, bb; + Image *i; lockdisplay(display); if(r.max.x > Dx(screen->r) || r.max.y > Dy(screen->r)){ /n/dump/2009/0923/sys/src/cmd/vnc/draw.c:117,129 - draw.c:118,138 } } + b = Dx(r) * pixb * Dy(r); + + if(i = allocimage(display, r, screen->chan, 0, DNofill)){ + loadimage(i, r, pixbuf, b); + draw(screen, rectaddpt(r, screen->r.min), i, nil, r.min); + freeimage(i); + } + /* * assume load image fails only because of resize - */ - b = Dx(r) * pixb * Dy(r); bb = loadimage(screen, rectaddpt(r, screen->r.min), pixbuf, b); if(bb != b && verbose) fprint(2, "loadimage %d on %R for %R returned %d: %r\n", b, rectaddpt(r, screen->r.min), screen->r, bb); + */ + unlockdisplay(display); } -- cinap