diff src/main/java/com/glavsoft/rfb/protocol/ReceiverTask.java @ 441:cee43ceac9b3

send thatscreen position INIT_DATA
author one
date Thu, 16 Jun 2016 21:08:19 +0900
parents 3a97a014d7ee
children 614057b86122
line wrap: on
line diff
--- a/src/main/java/com/glavsoft/rfb/protocol/ReceiverTask.java	Thu Jun 16 20:35:44 2016 +0900
+++ b/src/main/java/com/glavsoft/rfb/protocol/ReceiverTask.java	Thu Jun 16 21:08:19 2016 +0900
@@ -294,19 +294,21 @@
                     if (rect.getEncodingType() == EncodingType.INIT_DATA) {
                         // VNCServer is changed, initiarize new screen.
                         int length = reader.readInt32();
-                        byte[] initData = new byte[length];
+                        short id = reader.readInt16();
+                        byte[] initData = new byte[length-2];
                         reader.read(initData);
                         String name = new String(initData, 24, length - 24, "UTF-8");
                         context.setRemoteDesktopName(name);
                         context.setInitData(initData);
                         context.setFbWidth(rect.width);
                         context.setFbHeight(rect.height);
+                        context.setX(rect.x);
+                        context.setY(rect.y);
                         repaintController.updateRemoteDesktopName(context);
                         reader.reset();
                         // All children multicastqueue should be discarded here.
 //                        rfb.clearChildrenTransmission();
                         rfb.readSendData(length + 20, reader, null, rect); // size of UpdateRectangleMessage with initData.
-                        short id = (short) rect.x;
                         visible = (id != rfb.getId());
                     }
                     synchronized (renderer.getLock()) {
@@ -321,7 +323,7 @@
                         rfb.getViewer().setFitScreen();
                     }
                     if (rfb.isTreeManager()) {
-                        context.sendMessage(new FramebufferUpdateRequestMessage(0, 0, rect.width, rect.height, false));
+                        context.sendMessage(new FramebufferUpdateRequestMessage(rect.x, rect.y, rect.width, rect.height, false));
                     }
 
                 } else if (rect.getEncodingType() == EncodingType.CHECK_DELAY) {