Mercurial > hg > Applications > TightVNC_orginal
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 } |