Seeking backwards has been implemented.


git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@2522 3789f03b-4d11-0410-bbf8-ca57d06f2519
diff --git a/java/src/com/tightvnc/rfbplayer/RfbPlayer.java b/java/src/com/tightvnc/rfbplayer/RfbPlayer.java
index c2fa6f6..3256804 100644
--- a/java/src/com/tightvnc/rfbplayer/RfbPlayer.java
+++ b/java/src/com/tightvnc/rfbplayer/RfbPlayer.java
@@ -161,12 +161,21 @@
 	try {
 	  setPaused(!autoPlay);
 	  rfb.fbs.setSpeed(playbackSpeed);
-          setPos(initialTimeOffset);
+	  if (initialTimeOffset > rfb.fbs.getTimeOffset())
+	    setPos(initialTimeOffset); // don't seek backwards here
 	  vc.processNormalProtocol();
 	} catch (EOFException e) {
-	  initialTimeOffset = 0;
-	  autoPlay = false;
-	  rfb.newSession(url);
+	  if (e.getMessage() != null && e.getMessage().equals("[REWIND]")) {
+	    // A special type of EOFException allowing us to seek backwards.
+	    initialTimeOffset = rfb.fbs.getSeekOffset();
+	    autoPlay = !rfb.fbs.isPaused();
+	    rfb.newSession(url);
+	  } else {
+	    // Return to the beginning after the playback is finished.
+	    initialTimeOffset = 0;
+	    autoPlay = false;
+	    rfb.newSession(url);
+	  }
 	}
       }