]> source.dussan.org Git - tigervnc.git/commitdiff
Added imageDataStartTime variable which used for setting time pos.
authorgeorge82 <george82@3789f03b-4d11-0410-bbf8-ca57d06f2519>
Mon, 21 Feb 2005 17:02:34 +0000 (17:02 +0000)
committergeorge82 <george82@3789f03b-4d11-0410-bbf8-ca57d06f2519>
Mon, 21 Feb 2005 17:02:34 +0000 (17:02 +0000)
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

rfbplayer/rfbplayer.cxx
rfbplayer/rfbplayer.h

index 72614f176979aacb459e285da0e19b3bd40aee2a..fac91815a4ec66044846bc15d05dc0f5ed62d12e 100644 (file)
@@ -226,7 +226,7 @@ RfbPlayer::RfbPlayer(char *_fileName, int _depth = DEPTH_AUTO,
   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 @@ void RfbPlayer::processMsg() {
     // 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::processMsg() {
 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 @@ double RfbPlayer::getSpeed() {
 }
 
 void RfbPlayer::setPos(long pos) {
-  is->setTimeOffset(max(pos, 0));
+  is->setTimeOffset(max(pos, imageDataStartTime));
 }
 
 long RfbPlayer::getSeekOffset() {
index e148f1462306077f9bb1ccbbb1049b26fee7a089..dea26ec3aa1ffb85a77f30d7b9771a5fe599bc62 100644 (file)
@@ -172,6 +172,7 @@ class RfbPlayer : public RfbProto {
     bool autoplay;
     int colourDepth;
     double playbackSpeed;
+    long imageDataStartTime;
     long initTime;
     bool acceptBell;
     long sessionTimeMs;