changeset 23:6a4312344a5a

remove set rfb TreeTask
author one
date Thu, 30 Aug 2012 14:40:32 +0900
parents bfddb801c3aa
children 1fe39e8ba3e9
files src/main/java/com/glavsoft/rfb/protocol/Protocol.java src/main/java/com/glavsoft/rfb/protocol/ReceiverTask.java src/main/java/com/glavsoft/rfb/protocol/TreeTask.java src/main/java/jp/ac/u_ryukyu/treevnc/server/MyRfbProtoProxy.java src/main/java/jp/ac/u_ryukyu/treevnc/server/VncProxyService.java
diffstat 5 files changed, 56 insertions(+), 32 deletions(-) [+]
line wrap: on
line diff
--- a/src/main/java/com/glavsoft/rfb/protocol/Protocol.java	Wed Aug 29 23:35:54 2012 +0900
+++ b/src/main/java/com/glavsoft/rfb/protocol/Protocol.java	Thu Aug 30 14:40:32 2012 +0900
@@ -318,8 +318,7 @@
 		receiverTask = new TreeTask(
 				reader, repaintController,
 				clipboardController,
-				decoders, this, true);
-		receiverTask.setRfb(rfb);
+				decoders, this, rfb);
 		receiverThread = new Thread(receiverTask);
 		receiverThread.start();
 	}
--- a/src/main/java/com/glavsoft/rfb/protocol/ReceiverTask.java	Wed Aug 29 23:35:54 2012 +0900
+++ b/src/main/java/com/glavsoft/rfb/protocol/ReceiverTask.java	Thu Aug 30 14:40:32 2012 +0900
@@ -62,8 +62,8 @@
 	protected final DecodersContainer decoders;
 	protected FramebufferUpdateRequestMessage fullscreenFbUpdateIncrementalRequest;
 	protected final ProtocolContext context;
-	private PixelFormat pixelFormat;
-	private boolean needSendPixelFormat;
+	protected PixelFormat pixelFormat;
+	protected boolean needSendPixelFormat;
 	
 	public ReceiverTask(Reader reader,
             IRepaintController repaintController, ClipboardController clipboardController,
@@ -73,8 +73,8 @@
 		this.clipboardController = clipboardController;
 		this.context = context;
 		this.decoders = decoders;
-		//renderer = repaintController.createRenderer(reader, context.getFbWidth(), context.getFbHeight(),
-				//context.getPixelFormat());
+		renderer = repaintController.createRenderer(reader, context.getFbWidth(), context.getFbHeight(),
+				context.getPixelFormat());
 		fullscreenFbUpdateIncrementalRequest =
 				new FramebufferUpdateRequestMessage(0, 0, context.getFbWidth(), context.getFbHeight(), true);
 	}
@@ -222,9 +222,4 @@
 	public void stopTask() {
 		isRunning = false;
 	}
-
-	public void setRfb(MyRfbProtoProxy rfb) {
-		/*nop*/
-	}
-
 }
--- a/src/main/java/com/glavsoft/rfb/protocol/TreeTask.java	Wed Aug 29 23:35:54 2012 +0900
+++ b/src/main/java/com/glavsoft/rfb/protocol/TreeTask.java	Thu Aug 30 14:40:32 2012 +0900
@@ -6,41 +6,76 @@
 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 Reader reader;
 	private MyRfbProtoProxy rfb;
-	private ProtocolContext context;
 
 	public TreeTask(Reader reader, IRepaintController repaintController,
 			ClipboardController clipboardController,
-			DecodersContainer decoders, ProtocolContext context, boolean flag) {
+			DecodersContainer decoders, ProtocolContext context, MyRfbProtoProxy _rfb) {
 		super(reader, repaintController, clipboardController, decoders,
 				context, true);
-		this.context = context;
-		this.reader = reader;
+		rfb = _rfb;
 	}
 
 	@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);
-			int zrleLength = getZrleLength(rect);
-			reader.reset();
-			rfb.readSendData(zrleLength, reader);
-			boolean fullUpdateNeeded = false;
-			int w = context.getFbWidth();
-			int h = context.getFbHeight();
-			rfb.writeFramebufferUpdateRequest(0, 0, w, h, !fullUpdateNeeded);
-			// rfb.checkDelayData();
+
+			Decoder decoder = decoders.getDecoderByType(rect.getEncodingType());
+			logger.finest(rect.toString() + (0 == numberOfRectangles ? "\n---" : ""));
+			if (decoder != null) {
+				/*
+				decoder.decode(reader, renderer, rect);
+				repaintController.repaintBitmap(rect);
+				 */
+				int zrleLength = getZrleLength(rect);
+				reader.reset();
+				rfb.readSendData(zrleLength, reader);
+
+			} else if (rect.getEncodingType() == EncodingType.RICH_CURSOR) {
+				RichCursorDecoder.getInstance().decode(reader, renderer, rect);
+				repaintController.repaintCursor();
+			} else if (rect.getEncodingType() == EncodingType.CURSOR_POS) {
+				renderer.decodeCursorPosition(rect);
+				repaintController.repaintCursor();
+			} else if (rect.getEncodingType() == EncodingType.DESKTOP_SIZE) {
+				fullscreenFbUpdateIncrementalRequest =
+					new FramebufferUpdateRequestMessage(0, 0, rect.width, rect.height, true);
+				synchronized (renderer) {
+					renderer = repaintController.createRenderer(reader, rect.width, rect.height,
+							context.getPixelFormat());
+				}
+				context.sendMessage(new FramebufferUpdateRequestMessage(0, 0, rect.width, rect.height, false));
+//				repaintController.repaintCursor();
+			} 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);
+			}
 		}
 	}
 
@@ -56,8 +91,4 @@
 		return zrleLength + 20;
 	}
 
-	@Override
-	public void setRfb(MyRfbProtoProxy _rfb) {
-		rfb = _rfb;
-	}
 }
--- a/src/main/java/jp/ac/u_ryukyu/treevnc/server/MyRfbProtoProxy.java	Wed Aug 29 23:35:54 2012 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/treevnc/server/MyRfbProtoProxy.java	Thu Aug 30 14:40:32 2012 +0900
@@ -80,7 +80,7 @@
 	}
 
 	public void setStream(Writer _writer) {
-		os = _writer;
+//		os = _writer;
 	}
 
 	void initServSock(int port) throws IOException {
@@ -773,7 +773,7 @@
 		b[8] = (byte) ((h >> 8) & 0xff);
 		b[9] = (byte) (h & 0xff);
 
-		os.write(b);
+//		os.write(b);
 	}
 
     public void setProtocolContext(Protocol workingProtocol) {
--- a/src/main/java/jp/ac/u_ryukyu/treevnc/server/VncProxyService.java	Wed Aug 29 23:35:54 2012 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/treevnc/server/VncProxyService.java	Thu Aug 30 14:40:32 2012 +0900
@@ -145,13 +145,12 @@
 				settings.addListener(clipboardController);
 				
 				surface = new Surface(workingProtocol, this, uiSettings.getScaleFactor()); // this method
-				/*
 				settings.addListener(this);
 				uiSettings.addListener(surface);
 				containerFrame = createContainer();
 				connectionManager.setContainerFrame(containerFrame);
 				updateFrameTitle();
-				*/
+
 				
 				workingProtocol.startNormalHandling(this, surface, clipboardController,rfb);
 				// rfb.setInitData(workingProtocol.getInitData()); too early