summaryrefslogtreecommitdiffstats
path: root/java/src
diff options
context:
space:
mode:
Diffstat (limited to 'java/src')
-rw-r--r--java/src/com/tightvnc/rfbplayer/FbsInputStream.java17
-rw-r--r--java/src/com/tightvnc/rfbplayer/RfbPlayer.java5
2 files changed, 12 insertions, 10 deletions
diff --git a/java/src/com/tightvnc/rfbplayer/FbsInputStream.java b/java/src/com/tightvnc/rfbplayer/FbsInputStream.java
index db02a1dd..2077bc5a 100644
--- a/java/src/com/tightvnc/rfbplayer/FbsInputStream.java
+++ b/java/src/com/tightvnc/rfbplayer/FbsInputStream.java
@@ -33,7 +33,7 @@ class FbsInputStream extends InputStream {
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 @@ class FbsInputStream extends InputStream {
startTime = System.currentTimeMillis() - timeOffset;
this.timeOffset = timeOffset;
seekOffset = -1;
- seekBackwards = false;
+ farSeeking = false;
paused = false;
playbackSpeed = 1.0;
@@ -147,7 +147,7 @@ class FbsInputStream extends InputStream {
startTime = -1;
timeOffset = 0;
seekOffset = -1;
- seekBackwards = false;
+ farSeeking = false;
paused = false;
playbackSpeed = 1.0;
@@ -169,8 +169,9 @@ class FbsInputStream extends InputStream {
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 @@ class FbsInputStream extends InputStream {
// 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();
diff --git a/java/src/com/tightvnc/rfbplayer/RfbPlayer.java b/java/src/com/tightvnc/rfbplayer/RfbPlayer.java
index 85d067d1..6cdd386f 100644
--- a/java/src/com/tightvnc/rfbplayer/RfbPlayer.java
+++ b/java/src/com/tightvnc/rfbplayer/RfbPlayer.java
@@ -180,8 +180,9 @@ public class RfbPlayer extends java.applet.Applet
vc.processNormalProtocol();
} catch (EOFException e) {
long newTimeOffset;
- if (e.getMessage() != null && e.getMessage().equals("[REWIND]")) {
- // A special type of EOFException allowing us to seek backwards.
+ if (e.getMessage() != null && e.getMessage().equals("[JUMP]")) {
+ // A special type of EOFException allowing us to close FBS stream
+ // and then re-open it for jumping to a different time offset.
newTimeOffset = fbs.getSeekOffset();
autoPlay = !fbs.isPaused();
} else {