diff src/main/java/com/glavsoft/rfb/protocol/ReceiverTask.java @ 423:ffe01c959cdd

Fix LostChild for root node
author Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
date Fri, 22 Jan 2016 07:51:57 +0900
parents 752788fdae03
children 15836504f1a2
line wrap: on
line diff
--- a/src/main/java/com/glavsoft/rfb/protocol/ReceiverTask.java	Wed Jan 20 17:20:58 2016 +0900
+++ b/src/main/java/com/glavsoft/rfb/protocol/ReceiverTask.java	Fri Jan 22 07:51:57 2016 +0900
@@ -159,7 +159,7 @@
             } catch (TransportException e) {
                 if (e.getCause().getClass().getSimpleName().equals("SocketTimeoutException")) {
                     if (rfb.isTreeManager()) {
-                        context.sendMessage(new FramebufferUpdateRequestMessage(rfb.getX(), rfb.getY(), rfb.frameSizeWidth * rfb.getRetinaScale(), rfb.frameSizeHeight * rfb.getRetinaScale(), false));
+                        sendFrameBufferUpdateRequest();
                     }
                     continue;
                 }
@@ -356,21 +356,24 @@
         }
 
         if (rfb.isTreeManager()) {
-            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(new FramebufferUpdateRequestMessage(rfb.getX(), rfb.getY(), rfb.frameSizeWidth * rfb.getRetinaScale(), rfb.frameSizeHeight * rfb.getRetinaScale(), false));
-                }
-            }
+            sendFrameBufferUpdateRequest();
         }
     }
 
+    synchronized private void sendFrameBufferUpdateRequest() {
+        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(new FramebufferUpdateRequestMessage(rfb.getX(), rfb.getY(), rfb.frameSizeWidth * rfb.getRetinaScale(), rfb.frameSizeHeight * rfb.getRetinaScale(), false));
+        }
+    }
+
+
     private void sendCheckDelayReply(long time, int port, String address, int dataLen) throws UnsupportedEncodingException {
         context.sendMessage(new CheckDelayReply(time, port, address, dataLen));
     }