Code re-organization to make it easier implement backward seeking.


git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@2515 3789f03b-4d11-0410-bbf8-ca57d06f2519
diff --git a/java/src/com/tightvnc/rfbplayer/RfbPlayer.java b/java/src/com/tightvnc/rfbplayer/RfbPlayer.java
index a47220a..4a60016 100644
--- a/java/src/com/tightvnc/rfbplayer/RfbPlayer.java
+++ b/java/src/com/tightvnc/rfbplayer/RfbPlayer.java
@@ -49,8 +49,6 @@
   RfbProto rfb;
   Thread rfbThread;
 
-  FbsInputStream fbsStream;
-
   Frame vncFrame;
   Container vncContainer;
   ScrollPane desktopScrollPane;
@@ -121,8 +119,7 @@
 
     try {
       URL url = new URL(sessionURL);
-      fbsStream = new FbsInputStream(url.openStream());
-      rfb = new RfbProto(fbsStream);
+      rfb = new RfbProto(url);
 
       vc = new VncCanvas(this);
       gbc.weightx = 1.0;
@@ -161,14 +158,12 @@
       while (true) {
 	try {
 	  setPaused(true);
-	  fbsStream.setTimeOffset(initialTimeOffset);
-	  fbsStream.setSpeed(playbackSpeed);
+	  rfb.fbs.setTimeOffset(initialTimeOffset);
+	  rfb.fbs.setSpeed(playbackSpeed);
 	  vc.processNormalProtocol();
 	} catch (EOFException e) {
 	  initialTimeOffset = 0;
-	  fbsStream.close();
-	  fbsStream = new FbsInputStream(url.openStream());
-	  rfb.newInputStream(fbsStream);
+	  rfb.newSession(url);
 	}
       }
 
@@ -184,12 +179,10 @@
   public void setPaused(boolean paused) {
     if (showControls)
       buttonPanel.setPaused(paused);
-    if (fbsStream != null) {
-      if (paused) {
-	fbsStream.pausePlayback();
-      } else {
-	fbsStream.resumePlayback();
-      }
+    if (paused) {
+      rfb.fbs.pausePlayback();
+    } else {
+      rfb.fbs.resumePlayback();
     }
   }
 
@@ -199,17 +192,17 @@
 
   public void setSpeed(double speed) {
     playbackSpeed = speed;
-    fbsStream.setSpeed(speed);
+    rfb.fbs.setSpeed(speed);
   }
 
   public void setPos(int pos) {
-    fbsStream.setTimeOffset(pos * 1000);
+    rfb.fbs.setTimeOffset(pos * 1000);
   }
 
 
   public void updatePos() {
     if (showControls)
-      buttonPanel.setPos((int)(fbsStream.getTimeOffset() / 1000));
+      buttonPanel.setPos((int)(rfb.fbs.getTimeOffset() / 1000));
   }
 
   //
diff --git a/java/src/com/tightvnc/rfbplayer/RfbProto.java b/java/src/com/tightvnc/rfbplayer/RfbProto.java
index 4cada13..2faf66c 100644
--- a/java/src/com/tightvnc/rfbplayer/RfbProto.java
+++ b/java/src/com/tightvnc/rfbplayer/RfbProto.java
@@ -27,7 +27,7 @@
 import java.io.*;
 import java.awt.*;
 import java.awt.event.*;
-import java.net.Socket;
+import java.net.*;
 
 class RfbProto {
 
@@ -73,6 +73,7 @@
 
   final static int TightMinToCompress   = 12;
 
+  FbsInputStream fbs;
   DataInputStream is;
 
 
@@ -80,12 +81,16 @@
   // Constructor.
   //
 
-  RfbProto(InputStream is) throws Exception {
-    newInputStream(is);
+  RfbProto(URL url) throws Exception {
+    fbs = null;
+    newSession(url);
   }
 
-  public void newInputStream(InputStream is) throws Exception {
-    this.is = new DataInputStream(is);
+  public void newSession(URL url) throws Exception {
+    if (fbs != null)
+      fbs.close();
+    fbs = new FbsInputStream(url.openStream());
+    is = new DataInputStream(fbs);
 
     readVersionMsg();
     if (readAuthScheme() != NoAuth) {
diff --git a/java/src/com/tightvnc/rfbplayer/VncCanvas.java b/java/src/com/tightvnc/rfbplayer/VncCanvas.java
index 6332532..b87763e 100644
--- a/java/src/com/tightvnc/rfbplayer/VncCanvas.java
+++ b/java/src/com/tightvnc/rfbplayer/VncCanvas.java
@@ -815,7 +815,7 @@
   //
 
   void scheduleRepaint(int x, int y, int w, int h) {
-    if (player.fbsStream.isSeeking()) {
+    if (rfb.fbs.isSeeking()) {
       // Do nothing, and remember we are seeking.
       seekMode = true;
     } else {