]> source.dussan.org Git - tigervnc.git/commitdiff
Improved RfbPlayer::setSpeed(). It updates controls which
authorgeorge82 <george82@3789f03b-4d11-0410-bbf8-ca57d06f2519>
Sun, 20 Feb 2005 08:01:01 +0000 (08:01 +0000)
committergeorge82 <george82@3789f03b-4d11-0410-bbf8-ca57d06f2519>
Sun, 20 Feb 2005 08:01:01 +0000 (08:01 +0000)
used for speed managing.

git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@200 3789f03b-4d11-0410-bbf8-ca57d06f2519

rfbplayer/rfbplayer.cxx

index 1220f6be55abd8fe7b2dbf50f912244bf91e1674..6a2ce63c951b1e4d60a5541fe0125382a9dfc132 100644 (file)
@@ -360,15 +360,10 @@ RfbPlayer::processMainMessage(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
         double speed = strtod(speedStr, &stopStr);
         if (speed > 0) {
           speed = min(MAX_SPEED, speed);
-          // Update speedUpDown position
-          SendMessage(speedUpDown, UDM_SETPOS, 
-            0, MAKELONG((short)(speed / 0.5), 0));
         } else {
           speed = getSpeed();
         }
         setSpeed(speed);
-        sprintf(speedStr, "%.2f", speed);
-        SetWindowText(speedEdit, speedStr);
       }
       break;
     case ID_EXIT:
@@ -458,10 +453,10 @@ RfbPlayer::processMainMessage(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
           }
           speed = max(upDown->iPos + upDown->iDelta, HIWORD(speedRange)) * 0.5;
         }
-        _gcvt(speed, 5, speedStr);
         sprintf(speedStr, "%.2f", speed);
         SetWindowText(speedEdit, speedStr);
-        setSpeed(speed);
+        is->setSpeed(speed);
+        playbackSpeed = speed;
         return lResult;
       }
     }
@@ -793,7 +788,7 @@ void RfbPlayer::rewind() {
   blankBuffer();
   newSession(fileName);
   skipHandshaking();
-  setSpeed(playbackSpeed);
+  is->setSpeed(playbackSpeed);
   if (paused) is->pausePlayback();
   else is->resumePlayback();
 }
@@ -1041,9 +1036,17 @@ void RfbPlayer::stopPlayback() {
 }
 
 void RfbPlayer::setSpeed(double speed) {
-  serverInitTime = serverInitTime * getSpeed() / speed;
-  is->setSpeed(speed);
-  playbackSpeed = speed;
+  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, 
+      0, MAKELONG((short)(newSpeed / 0.5), 0));
+    sprintf(speedStr, "%.2f", newSpeed);
+    SetWindowText(speedEdit, speedStr);
+  }
 }
 
 double RfbPlayer::getSpeed() {