Fixed bug with jumping to the initTime position if -pos command-line
parameter was set.


git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@207 3789f03b-4d11-0410-bbf8-ca57d06f2519
diff --git a/rfbplayer/rfbplayer.cxx b/rfbplayer/rfbplayer.cxx
index 65c268e..3286ccc 100644
--- a/rfbplayer/rfbplayer.cxx
+++ b/rfbplayer/rfbplayer.cxx
@@ -223,10 +223,10 @@
 : RfbProto(_fileName), colourDepth(_depth), initTime(_initTime), 
   playbackSpeed(_playbackSpeed), autoplay(_autoplay), buffer(0), 
   client_size(0, 0, 32, 32), window_size(0, 0, 32, 32), cutText(0), 
-  seekMode(false), fileName(_fileName), serverInitTime(0), lastPos(0), 
-  timeStatic(0), speedEdit(0), posTrackBar(0), speedUpDown(0), 
-  acceptBell(_acceptBell), rfbReader(0), sessionTimeMs(0),
-  sliderDraging(false), sliderStepMs(0), loopPlayback(false) {
+  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) {
 
   CTRL_BAR_HEIGHT = 28;
 
@@ -822,10 +822,10 @@
     // 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 initTime = getSeekOffset();
+      long seekOffset = getSeekOffset();
       rewind();
-      setPos(initTime);
-      updatePos(getTimeOffset());
+      setPos(seekOffset);
+      updatePos(seekOffset);
     } else {
       MessageBox(getMainHandle(), e.str(), e.type(), MB_OK | MB_ICONERROR);
       return;
@@ -836,9 +836,6 @@
 void RfbPlayer::serverInit() {
   RfbProto::serverInit();
 
-  // Save the server init time for using in setPos()
-  serverInitTime = getTimeOffset() / getSpeed();
-  
   // Resize the backing buffer
   buffer->setSize(cp.width, cp.height);
 
@@ -1062,7 +1059,6 @@
   if (speed > 0) {
     char speedStr[20] = "\0";
     double newSpeed = min(speed, MAX_SPEED);
-    serverInitTime = serverInitTime * getSpeed() / newSpeed;
     is->setSpeed(newSpeed);
     playbackSpeed = newSpeed;
     SendMessage(speedUpDown, UDM_SETPOS, 
@@ -1077,7 +1073,7 @@
 }
 
 void RfbPlayer::setPos(long pos) {
-  is->setTimeOffset(max(pos, serverInitTime));
+  is->setTimeOffset(max(pos, 0));
 }
 
 long RfbPlayer::getSeekOffset() {
diff --git a/rfbplayer/rfbplayer.h b/rfbplayer/rfbplayer.h
index 070cd9d..e148f14 100644
--- a/rfbplayer/rfbplayer.h
+++ b/rfbplayer/rfbplayer.h
@@ -173,7 +173,6 @@
     int colourDepth;
     double playbackSpeed;
     long initTime;
-    long serverInitTime;
     bool acceptBell;
     long sessionTimeMs;
     bool loopPlayback;