Added support for new "Position" parameter.
Fixed a NullPointerException with "Show Controls"="no".
Documented all supported parameters.


git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@2512 3789f03b-4d11-0410-bbf8-ca57d06f2519
diff --git a/java/src/com/tightvnc/rfbplayer/RfbPlayer.java b/java/src/com/tightvnc/rfbplayer/RfbPlayer.java
index 099148b..0d87006 100644
--- a/java/src/com/tightvnc/rfbplayer/RfbPlayer.java
+++ b/java/src/com/tightvnc/rfbplayer/RfbPlayer.java
@@ -59,6 +59,7 @@
   VncCanvas vc;
 
   String sessionURL;
+  long initialTimeOffset;
   boolean showControls;
   int deferScreenUpdates;
 
@@ -158,9 +159,11 @@
 
       while (true) {
 	try {
-	  buttonPanel.setPaused(true);
+	  setPaused(true);
+	  fbsStream.setTimeOffset(initialTimeOffset);
 	  vc.processNormalProtocol();
 	} catch (EOFException e) {
+	  initialTimeOffset = 0;
 	  fbsStream.close();
 	  fbsStream = new FbsInputStream(url.openStream());
 	  rfb.newInputStream(fbsStream);
@@ -177,6 +180,8 @@
   }
 
   public void setPaused(boolean paused) {
+    if (showControls)
+      buttonPanel.setPaused(paused);
     if (fbsStream != null) {
       if (paused) {
 	fbsStream.pausePlayback();
@@ -191,7 +196,8 @@
   }
 
   public void updatePos() {
-    buttonPanel.setPos((int)(fbsStream.getTimeOffset() / 1000));
+    if (showControls)
+      buttonPanel.setPos((int)(fbsStream.getTimeOffset() / 1000));
   }
 
   //
@@ -204,6 +210,7 @@
   public void readParameters() {
 
     sessionURL = readParameter("URL", true);
+    initialTimeOffset = readLongParameter("Position", 0);
 
     showControls = true;
     String str = readParameter("Show Controls", false);
@@ -217,7 +224,9 @@
     }
 
     // Fine tuning options.
-    deferScreenUpdates = readIntParameter("Defer screen updates", 20);
+    deferScreenUpdates = (int)readLongParameter("Defer screen updates", 20);
+    if (deferScreenUpdates < 0)
+      deferScreenUpdates = 0;	// Just in case.
   }
 
   public String readParameter(String name, boolean required) {
@@ -247,12 +256,12 @@
     return null;
   }
 
-  int readIntParameter(String name, int defaultValue) {
+  long readLongParameter(String name, long defaultValue) {
     String str = readParameter(name, false);
-    int result = defaultValue;
+    long result = defaultValue;
     if (str != null) {
       try {
-	result = Integer.parseInt(str);
+	result = Long.parseLong(str);
       } catch (NumberFormatException e) { }
     }
     return result;