comparison src/main/java/com/glavsoft/rfb/protocol/TreeTask.java @ 23:6a4312344a5a

remove set rfb TreeTask
author one
date Thu, 30 Aug 2012 14:40:32 +0900
parents ea83f4be0cc9
children 1fe39e8ba3e9
comparison
equal deleted inserted replaced
21:bfddb801c3aa 23:6a4312344a5a
4 4
5 import com.glavsoft.exceptions.CommonException; 5 import com.glavsoft.exceptions.CommonException;
6 import com.glavsoft.exceptions.TransportException; 6 import com.glavsoft.exceptions.TransportException;
7 import com.glavsoft.rfb.ClipboardController; 7 import com.glavsoft.rfb.ClipboardController;
8 import com.glavsoft.rfb.IRepaintController; 8 import com.glavsoft.rfb.IRepaintController;
9 import com.glavsoft.rfb.client.FramebufferUpdateRequestMessage;
10 import com.glavsoft.rfb.client.SetPixelFormatMessage;
9 import com.glavsoft.rfb.encoding.EncodingType; 11 import com.glavsoft.rfb.encoding.EncodingType;
12 import com.glavsoft.rfb.encoding.decoder.Decoder;
10 import com.glavsoft.rfb.encoding.decoder.DecodersContainer; 13 import com.glavsoft.rfb.encoding.decoder.DecodersContainer;
11 import com.glavsoft.rfb.encoding.decoder.FramebufferUpdateRectangle; 14 import com.glavsoft.rfb.encoding.decoder.FramebufferUpdateRectangle;
15 import com.glavsoft.rfb.encoding.decoder.RichCursorDecoder;
12 import com.glavsoft.transport.Reader; 16 import com.glavsoft.transport.Reader;
13 17
14 public class TreeTask extends ReceiverTask { 18 public class TreeTask extends ReceiverTask {
15 final static String versionMsg_3_855 = "RFB 003.855\n"; 19 final static String versionMsg_3_855 = "RFB 003.855\n";
16 private Reader reader;
17 private MyRfbProtoProxy rfb; 20 private MyRfbProtoProxy rfb;
18 private ProtocolContext context;
19 21
20 public TreeTask(Reader reader, IRepaintController repaintController, 22 public TreeTask(Reader reader, IRepaintController repaintController,
21 ClipboardController clipboardController, 23 ClipboardController clipboardController,
22 DecodersContainer decoders, ProtocolContext context, boolean flag) { 24 DecodersContainer decoders, ProtocolContext context, MyRfbProtoProxy _rfb) {
23 super(reader, repaintController, clipboardController, decoders, 25 super(reader, repaintController, clipboardController, decoders,
24 context, true); 26 context, true);
25 this.context = context; 27 rfb = _rfb;
26 this.reader = reader;
27 } 28 }
28 29
29 @Override 30 @Override
30 public void framebufferUpdateMessage() throws CommonException { 31 public void framebufferUpdateMessage() throws CommonException {
31 reader.readByte(); // padding 32 reader.readByte(); // padding
32 int numberOfRectangles = reader.readUInt16(); // number of rectangles 33 int numberOfRectangles = reader.readUInt16(); // number of rectangles
34
33 while (numberOfRectangles-- > 0) { 35 while (numberOfRectangles-- > 0) {
34 FramebufferUpdateRectangle rect = new FramebufferUpdateRectangle(); 36 FramebufferUpdateRectangle rect = new FramebufferUpdateRectangle();
35 rect.fill(reader); 37 rect.fill(reader);
36 int zrleLength = getZrleLength(rect); 38
37 reader.reset(); 39 Decoder decoder = decoders.getDecoderByType(rect.getEncodingType());
38 rfb.readSendData(zrleLength, reader); 40 logger.finest(rect.toString() + (0 == numberOfRectangles ? "\n---" : ""));
39 boolean fullUpdateNeeded = false; 41 if (decoder != null) {
40 int w = context.getFbWidth(); 42 /*
41 int h = context.getFbHeight(); 43 decoder.decode(reader, renderer, rect);
42 rfb.writeFramebufferUpdateRequest(0, 0, w, h, !fullUpdateNeeded); 44 repaintController.repaintBitmap(rect);
43 // rfb.checkDelayData(); 45 */
46 int zrleLength = getZrleLength(rect);
47 reader.reset();
48 rfb.readSendData(zrleLength, reader);
49
50 } else if (rect.getEncodingType() == EncodingType.RICH_CURSOR) {
51 RichCursorDecoder.getInstance().decode(reader, renderer, rect);
52 repaintController.repaintCursor();
53 } else if (rect.getEncodingType() == EncodingType.CURSOR_POS) {
54 renderer.decodeCursorPosition(rect);
55 repaintController.repaintCursor();
56 } else if (rect.getEncodingType() == EncodingType.DESKTOP_SIZE) {
57 fullscreenFbUpdateIncrementalRequest =
58 new FramebufferUpdateRequestMessage(0, 0, rect.width, rect.height, true);
59 synchronized (renderer) {
60 renderer = repaintController.createRenderer(reader, rect.width, rect.height,
61 context.getPixelFormat());
62 }
63 context.sendMessage(new FramebufferUpdateRequestMessage(0, 0, rect.width, rect.height, false));
64 // repaintController.repaintCursor();
65 } else
66 throw new CommonException("Unprocessed encoding: " + rect.toString());
67 }
68 synchronized (this) {
69 if (needSendPixelFormat) {
70 needSendPixelFormat = false;
71 context.setPixelFormat(pixelFormat);
72 context.sendMessage(new SetPixelFormatMessage(pixelFormat));
73 logger.fine("sent: "+pixelFormat);
74 context.sendRefreshMessage();
75 logger.fine("sent: nonincremental fb update");
76 } else {
77 context.sendMessage(fullscreenFbUpdateIncrementalRequest);
78 }
44 } 79 }
45 } 80 }
46 81
47 private int getZrleLength(FramebufferUpdateRectangle rect) 82 private int getZrleLength(FramebufferUpdateRectangle rect)
48 throws TransportException { 83 throws TransportException {
54 ; 89 ;
55 } 90 }
56 return zrleLength + 20; 91 return zrleLength + 20;
57 } 92 }
58 93
59 @Override
60 public void setRfb(MyRfbProtoProxy _rfb) {
61 rfb = _rfb;
62 }
63 } 94 }