Added imageDataStartTime variable which used for setting time pos.
Time pos can't be less than imageDataStartTime.
git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@210 3789f03b-4d11-0410-bbf8-ca57d06f2519
diff --git a/rfbplayer/rfbplayer.cxx b/rfbplayer/rfbplayer.cxx
index 72614f1..fac9181 100644
--- a/rfbplayer/rfbplayer.cxx
+++ b/rfbplayer/rfbplayer.cxx
@@ -226,7 +226,7 @@
seekMode(false), fileName(_fileName), lastPos(0), timeStatic(0),
speedEdit(0), posTrackBar(0), speedUpDown(0), acceptBell(_acceptBell),
rfbReader(0), sessionTimeMs(0), sliderDraging(false), sliderStepMs(0),
- loopPlayback(false) {
+ loopPlayback(false), imageDataStartTime(0) {
CTRL_BAR_HEIGHT = 28;
@@ -824,7 +824,7 @@
// It's a special exception to perform backward seeking.
// We only rewind the stream and seek the offset
if (strcmp(e.str(), "[REWIND]") == 0) {
- long seekOffset = getSeekOffset();
+ long seekOffset = max(getSeekOffset(), imageDataStartTime);
rewind();
setPos(seekOffset);
updatePos(seekOffset);
@@ -838,6 +838,9 @@
void RfbPlayer::serverInit() {
RfbProto::serverInit();
+ // Save the image data start time
+ imageDataStartTime = is->getTimeOffset();
+
// Resize the backing buffer
buffer->setSize(cp.width, cp.height);
@@ -1075,7 +1078,7 @@
}
void RfbPlayer::setPos(long pos) {
- is->setTimeOffset(max(pos, 0));
+ is->setTimeOffset(max(pos, imageDataStartTime));
}
long RfbPlayer::getSeekOffset() {
diff --git a/rfbplayer/rfbplayer.h b/rfbplayer/rfbplayer.h
index e148f14..dea26ec 100644
--- a/rfbplayer/rfbplayer.h
+++ b/rfbplayer/rfbplayer.h
@@ -172,6 +172,7 @@
bool autoplay;
int colourDepth;
double playbackSpeed;
+ long imageDataStartTime;
long initTime;
bool acceptBell;
long sessionTimeMs;