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-commits@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/tigervnc-commits