changeset 78:5970410efee7

modify VncProxyService. EncodingRAW -> EncodingZlib
author e085711
date Fri, 29 Jul 2011 19:17:31 +0900
parents fe5925bb9a7e
children 712a047908df 762d2b7f1db2
files src/myVncProxy/MyRfbProto.java src/myVncProxy/ProxyVncCanvas.java src/myVncProxy/RfbProto.java src/myVncProxy/VncProxyService.java
diffstat 4 files changed, 34 insertions(+), 27 deletions(-) [+]
line wrap: on
line diff
--- a/src/myVncProxy/MyRfbProto.java	Thu Jul 28 18:03:26 2011 +0900
+++ b/src/myVncProxy/MyRfbProto.java	Fri Jul 29 19:17:31 2011 +0900
@@ -141,30 +141,22 @@
 		cliListTmp.add(sock);
 	}
 
-	void mark(int len) throws IOException {
-		is.mark(len);
-	}
-
-	void reset() throws IOException {
-		is.reset();
-	}
-
 	boolean markSupported() {
 		return is.markSupported();
 	}
 
 	void readServerInit() throws IOException {
 
-		mark(255);
+		is.mark(255);
 		skipBytes(20);
 		int nlen = readU32();
 		int blen = 20 + 4 + nlen;
 		initData = new byte[blen];
-		reset();
+		is.reset();
 
-		mark(blen);
+		is.mark(blen);
 		readFully(initData);
-		reset();
+		is.reset();
 
 		framebufferWidth = readU16();
 		framebufferHeight = readU16();
@@ -302,7 +294,7 @@
 	}
 
 	void bufResetSend(int size) throws IOException {
-		reset();
+		is.reset();
 		int len = size;
 		if (available() < size)
 			len = available();
@@ -313,7 +305,7 @@
 
 	
 	void regiFramebufferUpdate() throws IOException {
-		mark(20);
+		is.mark(20);
 		messageType = readU8();
 		skipBytes(1);
 		rectangles = readU16();
@@ -322,9 +314,10 @@
 		rectW = readU16();
 		rectH = readU16();
 		encoding = readU32();
+		System.out.println("encoding = "+encoding);
 		if (encoding == 16)
 			zLen = readU32();
-		reset();
+		is.reset();
 /*
 		int dataLen;
 		switch (encoding) {
@@ -360,11 +353,11 @@
 		switch (encoding) {
 		case RfbProto.EncodingRaw:
 			dataLen = rectW * rectH * 4 + 16;
-			mark(dataLen);
+			is.mark(dataLen);
 			break;
 		case RfbProto.EncodingCopyRect:
 			dataLen = 16 + 4;
-			mark(dataLen);
+			is.mark(dataLen);
 			break;
 		case RfbProto.EncodingRRE:
 		case RfbProto.EncodingCoRRE:
@@ -373,11 +366,19 @@
 		case RfbProto.EncodingTight:
 		case RfbProto.EncodingZRLE:
 			dataLen = zLen + 20;
-			mark(dataLen);
+			is.mark(dataLen);
+			break;
+		case RfbProto.EncodingXCursor:
+		case RfbProto.EncodingRichCursor:
+			int pixArray = rectW * rectH * 4;
+			int u8Array = (int)Math.floor((rectW + 7)/8) * rectH; 
+			dataLen = pixArray + u8Array;
+			printFramebufferUpdate();
+			is.mark(dataLen);
 			break;
 		default:
 			dataLen = 1000000;
-			mark(dataLen);
+			is.mark(dataLen);
 		}
 		return dataLen;
 	}
@@ -386,7 +387,7 @@
 		byte buffer[] = new byte[dataLen];
 		readFully(buffer);
 		multicastqueue.put(buffer);
-		reset();
+		is.reset();
 
 /*
 		for (Socket cli : cliList) {
@@ -469,6 +470,8 @@
 		System.out.println("messageType=" + messageType);
 		System.out.println("rectangles=" + rectangles);
 		System.out.println("encoding=" + encoding);
+		System.out.println("rectX = "+rectX+": rectY = "+rectY);
+		System.out.println("rectW = "+rectW+": rectH = "+rectH);
 		switch (encoding) {
 		case RfbProto.EncodingRaw:
 			System.out.println("rectW * rectH * 4 + 16 =" + rectW * rectH * 4
--- a/src/myVncProxy/ProxyVncCanvas.java	Thu Jul 28 18:03:26 2011 +0900
+++ b/src/myVncProxy/ProxyVncCanvas.java	Fri Jul 29 19:17:31 2011 +0900
@@ -362,15 +362,15 @@
 		
 		long count = 0;
 		while (true) {
-//			System.out.println("\ncount=" + count);
-
+			System.out.println("\ncount=" + count);
+			
 			count++;
 			
 			/**
 			 *  read Data from parents and send Data to Client.
 			 */
-			rfb.sendDataToClient();		
-
+			rfb.sendDataToClient();
+			
 			int bufSize = (int)rfb.getNumBytesRead();
 			
 			// Read message type from the server. 
--- a/src/myVncProxy/RfbProto.java	Thu Jul 28 18:03:26 2011 +0900
+++ b/src/myVncProxy/RfbProto.java	Fri Jul 29 19:17:31 2011 +0900
@@ -474,6 +474,7 @@
 				"Tight encoding");
 
 		// Supported pseudo-encoding types
+
 		encodingCaps.add(EncodingCompressLevel0, TightVncVendor,
 				SigEncodingCompressLevel0, "Compression level");
 		encodingCaps.add(EncodingQualityLevel0, TightVncVendor,
@@ -488,6 +489,7 @@
 				"LastRect protocol extension");
 		encodingCaps.add(EncodingNewFBSize, TightVncVendor,
 				SigEncodingNewFBSize, "Framebuffer size change");
+
 	}
 
 	//
--- a/src/myVncProxy/VncProxyService.java	Thu Jul 28 18:03:26 2011 +0900
+++ b/src/myVncProxy/VncProxyService.java	Fri Jul 29 19:17:31 2011 +0900
@@ -353,11 +353,11 @@
 		int[] encodings = new int[20];
 		int nEncodings = 0;
 
+/*		
 		encodings[nEncodings++] = preferredEncoding;
 		if (options.useCopyRect) {
 			encodings[nEncodings++] = RfbProto.EncodingCopyRect;
 		}
-
 		if (preferredEncoding != RfbProto.EncodingTight) {
 			encodings[nEncodings++] = RfbProto.EncodingTight;
 		}
@@ -367,9 +367,11 @@
 		if (preferredEncoding != RfbProto.EncodingHextile) {
 			encodings[nEncodings++] = RfbProto.EncodingHextile;
 		}
+*/
 		if (preferredEncoding != RfbProto.EncodingZlib) {
 			encodings[nEncodings++] = RfbProto.EncodingZlib;
 		}
+/*
 		if (preferredEncoding != RfbProto.EncodingCoRRE) {
 			encodings[nEncodings++] = RfbProto.EncodingCoRRE;
 		}
@@ -385,14 +387,14 @@
 			encodings[nEncodings++] = RfbProto.EncodingQualityLevel0
 					+ options.jpegQuality;
 		}
-
 		if (options.requestCursorUpdates) {
 			encodings[nEncodings++] = RfbProto.EncodingXCursor;
 			encodings[nEncodings++] = RfbProto.EncodingRichCursor;
 			if (!options.ignoreCursorUpdates)
 				encodings[nEncodings++] = RfbProto.EncodingPointerPos;
 		}
-
+ */
+		
 		encodings[nEncodings++] = RfbProto.EncodingLastRect;
 		encodings[nEncodings++] = RfbProto.EncodingNewFBSize;