VNC client in Self

Chris Double chris.double at
Thu Apr 17 14:05:31 UTC 2014

I'm taking a stab at writing a VNC client in Self. Screenshot of
progress so far is at:


So far the VNC morph displays the image from the VNC session. No
interaction yet but I hope to get there soon.

I wasn't really able to find a performant way to paint the screen
buffer. I can't use ui2Image to hold the data as that's limited to 255
colors. At the moment I have a pixmap canvas that the morph holds and
it updates that in another Process. When it is complete it marks the
morph as changed. The morph then paints that pixmap canvas onto the
real canvas in its baseDrawOn method.

This helps stop the desktop UI from locking up during the draw. A
1024x768 image takes a fair while to do the updating. This is because
I'm doing a 'canvas point: x at y Color: c' for each point in the image
and each one of these involves creating a paint object for the color.

Is there a faster way of doing this? I could optimize it using a
primitive in some way but for the first attempt I'm trying to avoid
changing primitives.


More information about the Self-interest mailing list