# HG changeset patch # User e165729 # Date 1576478996 -32400 # Node ID 6b6e022e48d4e87a883fd445f54cd173d8b49865 # Parent 54dacb011114631faba1fd0e57448f3075bdc2e4# Parent 1ba61b57be39dfd023e3ac4bbfe45dad789d5c36 merge diff -r 54dacb011114 -r 6b6e022e48d4 .idea/libraries/Gradle__com_jcraft_jsch_0_1_50.xml --- a/.idea/libraries/Gradle__com_jcraft_jsch_0_1_50.xml Mon Dec 16 15:48:40 2019 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,9 +0,0 @@ - - - - - - - - - \ No newline at end of file diff -r 54dacb011114 -r 6b6e022e48d4 src/main/java/com/glavsoft/rfb/encoding/decoder/ZRLEDecoder.java --- a/src/main/java/com/glavsoft/rfb/encoding/decoder/ZRLEDecoder.java Mon Dec 16 15:48:40 2019 +0900 +++ b/src/main/java/com/glavsoft/rfb/encoding/decoder/ZRLEDecoder.java Mon Dec 16 15:49:56 2019 +0900 @@ -27,6 +27,7 @@ import com.glavsoft.drawing.Renderer; import com.glavsoft.exceptions.TransportException; import com.glavsoft.rfb.encoding.EncodingType; +import com.glavsoft.rfb.protocol.ReceiverTask; import com.glavsoft.transport.Reader; import jp.ac.u_ryukyu.treevnc.CheckDelay; import jp.ac.u_ryukyu.treevnc.TreeRFBProto; @@ -122,13 +123,13 @@ * Series of tiles compose at most three rectangles. SYNC_FLUSH is necessary on * rectangle boundaries. *

- * +----+ - * | | | phase 0 - * +---------------+ - * | | | phase 1 - * +----+----------+ - * | | | phase 2 - * +----+ + * +----+ + * | | phase 0 + * +---------------+ + * | | phase 1 + * +----+----------+ + * | | phase 2 + * +----+ *

* Broadcast packet have to less than 64kbytes * A tile 64x64x3 11288byte, a packet can contain 5 raw tiles, when these are @@ -261,6 +262,7 @@ LinkedList bufs = new LinkedList(); bufs.add(c1); + ReceiverTask.checkFrameBufferRectanble(c1); if (rfb.isTreeManager() && rfb.connectionPresenter.isUseMulticast()) { for (ByteBuffer buf : bufs) rfb.getViewer().getRfbBroadcastListener().multicastUpdateRectangle(buf); diff -r 54dacb011114 -r 6b6e022e48d4 src/main/java/com/glavsoft/rfb/protocol/ReceiverTask.java --- a/src/main/java/com/glavsoft/rfb/protocol/ReceiverTask.java Mon Dec 16 15:48:40 2019 +0900 +++ b/src/main/java/com/glavsoft/rfb/protocol/ReceiverTask.java Mon Dec 16 15:49:56 2019 +0900 @@ -41,9 +41,8 @@ import jp.ac.u_ryukyu.treevnc.CheckDelayReply; import jp.ac.u_ryukyu.treevnc.TreeRFBProto; -import java.io.PrintWriter; -import java.io.StringWriter; -import java.io.UnsupportedEncodingException; +import java.io.*; +import java.nio.ByteBuffer; import java.util.LinkedList; import java.util.Timer; import java.util.logging.Logger; @@ -106,6 +105,8 @@ } } + + @Override public void run() { isRunning = true; @@ -372,6 +373,19 @@ sendFrameBufferUpdateRequest(); } + public static void checkFrameBufferRectanble(ByteBuffer c1) { + FramebufferUpdateRectangle rect = new FramebufferUpdateRectangle(); + Reader in = new Reader(new ByteArrayInputStream(c1.array())); + try { + if (in.readByte() != FRAMEBUFFER_UPDATE) { + ; + } + rect.fill(in); + } catch (Exception e) { + ; + } + } + private void setScreenParameter(FramebufferUpdateRectangle rect,int singleWidth ,int singleHeight) { ViewerInterface v = rfb.getViewer(); ConnectionPresenter cp = v.getConnectionPresenter(); diff -r 54dacb011114 -r 6b6e022e48d4 src/viewer_swing/java/com/glavsoft/viewer/swing/SwingRfbConnectionWorker.java --- a/src/viewer_swing/java/com/glavsoft/viewer/swing/SwingRfbConnectionWorker.java Mon Dec 16 15:48:40 2019 +0900 +++ b/src/viewer_swing/java/com/glavsoft/viewer/swing/SwingRfbConnectionWorker.java Mon Dec 16 15:49:56 2019 +0900 @@ -26,7 +26,9 @@ import com.glavsoft.exceptions.*; import com.glavsoft.rfb.IPasswordRetriever; +import com.glavsoft.rfb.IRepaintController; import com.glavsoft.rfb.IRfbSessionListener; +import com.glavsoft.rfb.protocol.NullRepaintController; import com.glavsoft.rfb.protocol.Protocol; import com.glavsoft.rfb.protocol.ProtocolSettings; import com.glavsoft.transport.Reader; @@ -171,9 +173,14 @@ clipboardController = new ClipboardControllerImpl(workingProtocol, "cui"); clipboardController.setEnabled(rfbSettings.isAllowClipboardTransfer()); rfbSettings.addListener(clipboardController); - if(!myRfb.getCuiVersion()) + IRepaintController rc; + if(!myRfb.getCuiVersion()) { viewerWindow = viewerWindowFactory.createViewerWindow(workingProtocol, rfbSettings, uiSettings, connectionString, presenter); - workingProtocol.startNormalHandling(this,viewerWindow.getSurface(), clipboardController, myRfb); + rc = viewerWindow.getSurface(); + } else { + rc = new NullRepaintController(); + } + workingProtocol.startNormalHandling(this,rc, clipboardController, myRfb); // try { // workingSocket.setSoTimeout(1000); // } catch (SocketException e) {