diff src/main/java/com/glavsoft/rfb/protocol/ReceiverTask.java @ 255:a931be447973

add framebufferUpdateRecuest timer
author oc
date Tue, 18 Nov 2014 12:19:15 +0900
parents 5c73114b38b1
children dfec8bc1eb8e
line wrap: on
line diff
--- a/src/main/java/com/glavsoft/rfb/protocol/ReceiverTask.java	Mon Nov 17 05:12:17 2014 +0900
+++ b/src/main/java/com/glavsoft/rfb/protocol/ReceiverTask.java	Tue Nov 18 12:19:15 2014 +0900
@@ -44,6 +44,8 @@
 import java.io.PrintWriter;
 import java.io.StringWriter;
 import java.io.UnsupportedEncodingException;
+import java.util.Timer;
+import java.util.TimerTask;
 import java.util.logging.Logger;
 
 import jp.ac.u_ryukyu.treevnc.CheckDelayReply;
@@ -74,8 +76,9 @@
     private long checkCounter = 0;
     private boolean firstTime = true;
     public int numberOfRectangles = 0;
+    private Timer timer = null;
 
-    
+
     public ReceiverTask(Reader reader,
             IRepaintController repaintController, ClipboardController clipboardController,
             DecodersContainer decoders, ProtocolContext context,
@@ -94,7 +97,7 @@
 
         if(!rfb.getCuiVersion())
             renderer = repaintController.createRenderer(reader, context.getFbWidth(), context.getFbHeight(),context.getPixelFormat());
-        fullscreenFbUpdateIncrementalRequest = new FramebufferUpdateRequestMessage(0, 0, 1920, 1080, true);
+        fullscreenFbUpdateIncrementalRequest = new FramebufferUpdateRequestMessage(0, 0, context.getFbWidth(), context.getFbHeight(), true);
         if(rfb.isTreeManager()) {
             fullscreenFbUpdateIncrementalRequest.sendFullScreenRequest();
             connectionFinished();
@@ -215,11 +218,23 @@
         if(numberOfRectangles != 1)
             System.out.println("numberofrectangle : " + numberOfRectangles);
 
-        if(rfb.isTreeManager() && firstTime && rfb.checkDelay) {
-            SendCheckDelay sendCheckDelay = new SendCheckDelay(rfb);
-            Thread sendCheckDelayThread = new Thread(sendCheckDelay, "send-check-delay");
-            sendCheckDelayThread.start();
-            this.firstTime = false;
+        if(rfb.isTreeManager() && firstTime) {
+            if(rfb.checkDelay) {
+                SendCheckDelay sendCheckDelay = new SendCheckDelay(rfb);
+                Thread sendCheckDelayThread = new Thread(sendCheckDelay, "send-check-delay");
+                sendCheckDelayThread.start();
+                this.firstTime = false;
+            }
+
+            timer = new Timer(true);
+            timer.schedule(new TimerTask(){
+                @Override
+                public void run() {
+//                    context.setFbWidth(600);
+//                    context.setFbHeight(600);
+                    context.sendMessage(new FramebufferUpdateRequestMessage(0, 0, context.getFbWidth(), context.getFbHeight(), true));
+                }
+            },0,100);
         }
 
         while (numberOfRectangles-- > 0) {
@@ -244,8 +259,7 @@
                 renderer.decodeCursorPosition(rect);
                 repaintController.repaintCursor();
             } else if (rect.getEncodingType() == EncodingType.DESKTOP_SIZE || rect.getEncodingType() == EncodingType.INIT_DATA ) {
-                fullscreenFbUpdateIncrementalRequest =
-                        new FramebufferUpdateRequestMessage(0, 0, 1920, 1080, true);
+                fullscreenFbUpdateIncrementalRequest = new FramebufferUpdateRequestMessage(0, 0, rect.width, rect.height, false);
                 rfb.setCuiVersion(false);
                 boolean visible = true;
                 if (rect.getEncodingType() == EncodingType.INIT_DATA) {
@@ -263,12 +277,12 @@
                 }
                 synchronized (renderer.getLock()) {
                     if(!(rfb.getCuiVersion()))
-                        renderer = repaintController.createRenderer(reader, rect.width, rect.height,context.getPixelFormat());
+                        renderer = repaintController.createRenderer(reader, rect.width, rect.height, context.getPixelFormat());
                 }
                 if (rect.getEncodingType() == EncodingType.INIT_DATA) {
                     repaintController.setVisible(visible);
                 }
-                context.sendMessage(new FramebufferUpdateRequestMessage(0, 0, 1920, 1080, false));
+                context.sendMessage(new FramebufferUpdateRequestMessage(0, 0,  rect.width, rect.height, false));
                 //				repaintController.repaintCursor();
             } else if (rect.getEncodingType() == EncodingType.CHECK_DELAY) {
                 int checkDelaySize = 24;
@@ -293,14 +307,13 @@
                 context.sendRefreshMessage();
                 logger.fine("sent: nonincremental fb update");
             } else {
-                context.sendMessage(fullscreenFbUpdateIncrementalRequest);
+                context.sendMessage(new FramebufferUpdateRequestMessage(0, 0, context.getFbWidth(), context.getFbHeight(), false));
             }
         }
     }
 
     private void sendCheckDelayReply(long time, int port, String address) throws UnsupportedEncodingException {
         context.sendMessage(new CheckDelayReply(time, port, address));
-
     }
 
     public synchronized void queueUpdatePixelFormat(PixelFormat pf) {