Mercurial > hg > Applications > TightVNC_orginal
view src/main/java/com/glavsoft/rfb/protocol/TreeTask.java @ 24:1fe39e8ba3e9
remove RICH_CURSOR and CURSOR_POS
author | one |
---|---|
date | Thu, 30 Aug 2012 15:13:34 +0900 |
parents | 6a4312344a5a |
children | 73b13bc335c2 |
line wrap: on
line source
package com.glavsoft.rfb.protocol; import jp.ac.u_ryukyu.treevnc.server.*; import com.glavsoft.exceptions.CommonException; import com.glavsoft.exceptions.TransportException; import com.glavsoft.rfb.ClipboardController; import com.glavsoft.rfb.IRepaintController; import com.glavsoft.rfb.client.FramebufferUpdateRequestMessage; import com.glavsoft.rfb.client.SetPixelFormatMessage; import com.glavsoft.rfb.encoding.EncodingType; import com.glavsoft.rfb.encoding.decoder.Decoder; import com.glavsoft.rfb.encoding.decoder.DecodersContainer; import com.glavsoft.rfb.encoding.decoder.FramebufferUpdateRectangle; import com.glavsoft.rfb.encoding.decoder.RichCursorDecoder; import com.glavsoft.transport.Reader; public class TreeTask extends ReceiverTask { final static String versionMsg_3_855 = "RFB 003.855\n"; private MyRfbProtoProxy rfb; public TreeTask(Reader reader, IRepaintController repaintController, ClipboardController clipboardController, DecodersContainer decoders, ProtocolContext context, MyRfbProtoProxy _rfb) { super(reader, repaintController, clipboardController, decoders, context, true); rfb = _rfb; } /* * (non-Javadoc) * proxy * no Repaint * decoder!=0 ZRLE -> ZRLEE * readSendData(); * client * Repaint * no context.send(); * if necessary ZRLEE -> ZRLE * readSendData(); */ @Override public void framebufferUpdateMessage() throws CommonException { reader.readByte(); // padding int numberOfRectangles = reader.readUInt16(); // number of rectangles while (numberOfRectangles-- > 0) { FramebufferUpdateRectangle rect = new FramebufferUpdateRectangle(); rect.fill(reader); Decoder decoder = decoders.getDecoderByType(rect.getEncodingType()); logger.finest(rect.toString() + (0 == numberOfRectangles ? "\n---" : "")); if (decoder != null) { int zrleLength = getZrleLength(rect); reader.reset(); rfb.readSendData(zrleLength, reader); } else if (rect.getEncodingType() == EncodingType.RICH_CURSOR) { } else if (rect.getEncodingType() == EncodingType.CURSOR_POS) { } else if (rect.getEncodingType() == EncodingType.DESKTOP_SIZE) { fullscreenFbUpdateIncrementalRequest = new FramebufferUpdateRequestMessage(0, 0, rect.width, rect.height, true); context.sendMessage(new FramebufferUpdateRequestMessage(0, 0, rect.width, rect.height, false)); } else throw new CommonException("Unprocessed encoding: " + rect.toString()); } synchronized (this) { if (needSendPixelFormat) { needSendPixelFormat = false; context.setPixelFormat(pixelFormat); context.sendMessage(new SetPixelFormatMessage(pixelFormat)); logger.fine("sent: "+pixelFormat); context.sendRefreshMessage(); logger.fine("sent: nonincremental fb update"); } else { context.sendMessage(fullscreenFbUpdateIncrementalRequest); } } } private int getZrleLength(FramebufferUpdateRectangle rect) throws TransportException { int zrleLength = 0; if (rect.getEncodingType() == EncodingType.ZRLE || rect.getEncodingType() == EncodingType.ZRLEE || rect.getEncodingType() == EncodingType.ZLIB) { zrleLength = reader.readInt32(); } return zrleLength + 20; } }