# HG changeset patch # User k.fukuda # Date 1551607002 -32400 # Node ID ef2f70aee45a6a381159c9c4623b8721de0efe78 # Parent dca83cc39438acf11a3fdf362bcc9e3b354ddc50 separate Reader in FrameBufferUpdateRectangle diff -r dca83cc39438 -r ef2f70aee45a src/main/java/com/glavsoft/rfb/protocol/ReceiverTask.java --- a/src/main/java/com/glavsoft/rfb/protocol/ReceiverTask.java Sun Feb 24 16:47:30 2019 +0900 +++ b/src/main/java/com/glavsoft/rfb/protocol/ReceiverTask.java Sun Mar 03 18:56:42 2019 +0900 @@ -125,7 +125,7 @@ switch (messageId) { case FRAMEBUFFER_UPDATE: // logger.fine("Server message: FramebufferUpdate (0)"); - framebufferUpdateMessage(); + framebufferUpdateMessage(reader); break; case SET_COLOR_MAP_ENTRIES: logger.severe("Server message SetColorMapEntries is not implemented. Skip."); @@ -239,15 +239,15 @@ clipboardController.updateSystemClipboard(reader.readBytes(length)); } - public void framebufferUpdateMessage() throws Exception { + public void framebufferUpdateMessage(Reader reader) throws Exception { + int numberOfRectangles; try { reader.readByte(); // padding - this.numberOfRectangles = reader.readUInt16(); - if(numberOfRectangles > 2) { + numberOfRectangles = this.reader.readUInt16(); + if(numberOfRectangles > 3) { System.out.println("numberofrectangle : " + numberOfRectangles); if (rfb.getViewer().getUseMulticast()){ - return; // Discard invalid packet } } @@ -314,6 +314,7 @@ context.setFbHeight(rect.height); repaintController.updateRemoteDesktopName(context); reader.reset(); + System.out.println("INIT_DATA: "+rect); // request one screen fullscreenFbUpdateIncrementalRequest = new FramebufferUpdateRequestMessage(rect.x, rect.y, singleWidth, singleHeight, false); // All children multicastqueue should be discarded here. @@ -361,6 +362,8 @@ e.getMessage(); e.printStackTrace(); reader.close(); + } catch (Exception e) { + System.out.println("FrameBufferUpdate: "+e); } sendFrameBufferUpdateRequest(); diff -r dca83cc39438 -r ef2f70aee45a src/main/java/jp/ac/u_ryukyu/treevnc/BroadcastRFBListener.java --- a/src/main/java/jp/ac/u_ryukyu/treevnc/BroadcastRFBListener.java Sun Feb 24 16:47:30 2019 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/treevnc/BroadcastRFBListener.java Sun Mar 03 18:56:42 2019 +0900 @@ -1,9 +1,7 @@ package jp.ac.u_ryukyu.treevnc; -import com.glavsoft.rfb.protocol.ProtocolContext.TreeCommand; import com.glavsoft.rfb.protocol.ReceiverTask; import com.glavsoft.transport.Reader; -import com.glavsoft.viewer.ViewerInterface; import com.glavsoft.viewer.swing.ConnectionParams; import java.io.ByteArrayInputStream; @@ -66,13 +64,13 @@ int len = recvPacket.getLength(); boolean isTreeRoot = rfb.isTreeManager(); if (receiverTask != null) { - receiverTask.setReader(new Reader(new ByteArrayInputStream(reply))); + Reader reader = new Reader(new ByteArrayInputStream(reply)); if (receiverTask.getMessageId() == FRAMEBUFFER_UPDATE) { - receiverTask.framebufferUpdateMessage(); + receiverTask.framebufferUpdateMessage(reader); } } } catch (Exception e) { - System.out.println("broadcast-rfb-listener :" + e.getMessage()); + System.out.println("broadcast-rfb-listener : " + e.getMessage()); } } }