I missed that part of the discussion on the tracker. What is the purpose of 
having this in the viewer?

On Feb 16, 2012, at 6:44 AM, bph...@users.sourceforge.net wrote:

> Revision: 4857
>          http://tigervnc.svn.sourceforge.net/tigervnc/?rev=4857&view=rev
> Author:   bphinz
> Date:     2012-02-16 12:44:51 +0000 (Thu, 16 Feb 2012)
> Log Message:
> -----------
> adds keepAlive feature requested in #3482254 to java viewer
> 
> Modified Paths:
> --------------
>    trunk/java/com/tigervnc/vncviewer/CConn.java
>    trunk/java/com/tigervnc/vncviewer/VncViewer.java
> 
> Modified: trunk/java/com/tigervnc/vncviewer/CConn.java
> ===================================================================
> --- trunk/java/com/tigervnc/vncviewer/CConn.java    2012-02-16 12:31:38 UTC 
> (rev 4856)
> +++ trunk/java/com/tigervnc/vncviewer/CConn.java    2012-02-16 12:44:51 UTC 
> (rev 4857)
> @@ -49,7 +49,8 @@
> import java.net.InetSocketAddress;
> import java.net.URL;
> import java.net.SocketException;
> -import java.util.*;
> +import java.util.ArrayList;
> +import java.util.Iterator;
> 
> import com.tigervnc.rdr.*;
> import com.tigervnc.rfb.*;
> @@ -227,6 +228,18 @@
>     setServerName(serverHost);
>     setStreams(sock.inStream(), sock.outStream());
>     initialiseProtocol();
> +    int delay = viewer.keepAliveTimeout.getValue();
> +    if (delay > 0) {
> +      ActionListener keepAliveListener = new ActionListener() {
> +        public void actionPerformed(ActionEvent evt) {
> +          synchronized (writer()) {
> +            writer().writeFramebufferUpdateRequest(new Rect(0,0,0,0), true);
> +          }
> +        }
> +      };
> +      keepAliveTimer = new Timer(1000*delay, keepAliveListener);
> +      keepAliveTimer.start();
> +    }
>   }
> 
>   public void refreshFramebuffer()
> @@ -249,6 +262,8 @@
>   // deleteWindow() is called when the user closes the desktop or menu 
> windows.
> 
>   void deleteWindow() {
> +    if (keepAliveTimer != null)
> +      keepAliveTimer.stop();
>     if (viewport != null)
>       viewport.dispose();
>     viewport = null;
> @@ -465,6 +480,8 @@
>       }
> 
>       firstUpdate = false;
> +      if (keepAliveTimer != null)
> +        keepAliveTimer.restart();
>     }
> 
>     // A format change has been scheduled and we are now past the update
> @@ -779,6 +796,8 @@
>     }
> 
>     forceNonincremental = false;
> +    if (keepAliveTimer != null)
> +      keepAliveTimer.restart();
>   }
> 
> 
> @@ -1217,6 +1236,8 @@
>   synchronized public void writeClientCutText(String str, int len) {
>     if (state() != RFBSTATE_NORMAL) return;
>     writer().writeClientCutText(str,len);
> +    if (keepAliveTimer != null)
> +      keepAliveTimer.restart();
>   }
> 
>   synchronized public void writeKeyEvent(int keysym, boolean down) {
> @@ -1388,6 +1409,8 @@
>     if ((m & Event.META_MASK) != (pressedModifiers & Event.META_MASK))
>       writeKeyEvent(Keysyms.Meta_L, (m & Event.META_MASK) != 0);
>     pressedModifiers = m;
> +    if (keepAliveTimer != null)
> +      keepAliveTimer.restart();
>   }
> 
> 
> @@ -1421,6 +1444,7 @@
>   ImageIcon logo = new 
> ImageIcon(cl.getResource("com/tigervnc/vncviewer/tigervnc.png"));
>   public static UserPasswdGetter upg;
>   public UserMsgBox msg;
> +  Timer keepAliveTimer;
> 
>   // shuttingDown is set by the GUI thread and only ever tested by the RFB
>   // thread after the window has been destroyed.
> 
> Modified: trunk/java/com/tigervnc/vncviewer/VncViewer.java
> ===================================================================
> --- trunk/java/com/tigervnc/vncviewer/VncViewer.java    2012-02-16 12:31:38 
> UTC (rev 4856)
> +++ trunk/java/com/tigervnc/vncviewer/VncViewer.java    2012-02-16 12:44:51 
> UTC (rev 4857)
> @@ -331,6 +331,14 @@
>                                "Use specified compression level "+
>                                "0 = Low, 6 = High",
>                                1);
> +  IntParameter keepAliveTimeout
> +  = new IntParameter("KeepAliveTimeout",
> +                           "Send dummy framebuffer update requests if no "+
> +                     "network activity has occurred for more than "+
> +                     "the specified number of seconds. This is to "+
> +                     "prevent VPNs or other applications from "+
> +                     "disconnecting due to inactivity. A value of "+
> +                     "0 disables this feature.", 0);
>   BoolParameter noJpeg
>   = new BoolParameter("NoJPEG",
>                           "Disable lossy JPEG compression in Tight 
> encoding.", false);
> 
> This was sent by the SourceForge.net collaborative development platform, the 
> world's largest Open Source development site.
> 
> 
> ------------------------------------------------------------------------------
> Virtualization & Cloud Management Using Capacity Planning
> Cloud computing makes use of virtualization - but cloud computing 
> also focuses on allowing computing to be delivered as a service.
> http://www.accelacomm.com/jaw/sfnl/114/51521223/
> _______________________________________________
> Tigervnc-commits mailing list
> tigervnc-comm...@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/tigervnc-commits

------------------------------------------------------------------------------
Virtualization & Cloud Management Using Capacity Planning
Cloud computing makes use of virtualization - but cloud computing 
also focuses on allowing computing to be delivered as a service.
http://www.accelacomm.com/jaw/sfnl/114/51521223/
_______________________________________________
Tigervnc-devel mailing list
Tigervnc-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/tigervnc-devel

Reply via email to