[Development] Using index-driven positioning when seeking forward over more than 10 seconds.
git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@2621 3789f03b-4d11-0410-bbf8-ca57d06f2519
diff --git a/java/src/com/tightvnc/rfbplayer/FbsInputStream.java b/java/src/com/tightvnc/rfbplayer/FbsInputStream.java
index db02a1d..2077bc5 100644
--- a/java/src/com/tightvnc/rfbplayer/FbsInputStream.java
+++ b/java/src/com/tightvnc/rfbplayer/FbsInputStream.java
@@ -33,7 +33,7 @@
protected long startTime;
protected long timeOffset;
protected long seekOffset;
- protected boolean seekBackwards;
+ protected boolean farSeeking;
protected boolean paused;
protected boolean isQuitting = false;
protected double playbackSpeed;
@@ -101,7 +101,7 @@
startTime = System.currentTimeMillis() - timeOffset;
this.timeOffset = timeOffset;
seekOffset = -1;
- seekBackwards = false;
+ farSeeking = false;
paused = false;
playbackSpeed = 1.0;
@@ -147,7 +147,7 @@
startTime = -1;
timeOffset = 0;
seekOffset = -1;
- seekBackwards = false;
+ farSeeking = false;
paused = false;
playbackSpeed = 1.0;
@@ -169,8 +169,9 @@
public synchronized void setTimeOffset(long pos) {
seekOffset = (long)(pos / playbackSpeed);
- if (seekOffset < timeOffset) {
- seekBackwards = true;
+ long minJumpForwardOffset = timeOffset + (long)(10000 / playbackSpeed);
+ if (seekOffset < timeOffset || seekOffset > minJumpForwardOffset) {
+ farSeeking = true;
}
notify();
}
@@ -216,9 +217,9 @@
// Methods for internal use.
//
private synchronized boolean fillBuffer() throws IOException {
- // The reading thread should be interrupted on backward seeking.
- if (seekBackwards)
- throw new EOFException("[REWIND]");
+ // The reading thread should be interrupted on far seeking.
+ if (farSeeking)
+ throw new EOFException("[JUMP]");
// Just wait unless we are performing playback OR seeking.
waitWhilePaused();