Index: /trunk/src/VBox/Main/ProgressImpl.cpp
===================================================================
--- /trunk/src/VBox/Main/ProgressImpl.cpp	(revision 29913)
+++ /trunk/src/VBox/Main/ProgressImpl.cpp	(revision 29914)
@@ -835,11 +835,8 @@
     if (!mCompleted)
     {
-        RTTIMESPEC time;
-        RTTimeNow(&time); /** @todo r=bird: Use monotonic time (RTTimeMilliTS()) here because of daylight saving and things like that. */
-
         int vrc = VINF_SUCCESS;
         bool fForever = aTimeout < 0;
         int64_t timeLeft = aTimeout;
-        int64_t lastTime = RTTimeSpecGetMilli(&time);
+        int64_t lastTime = RTTimeMilliTS();
 
         while (!mCompleted && (fForever || timeLeft > 0))
@@ -848,5 +845,5 @@
             alock.leave();
             vrc = RTSemEventMultiWait(mCompletedSem,
-                                      fForever ? RT_INDEFINITE_WAIT : (unsigned)timeLeft);
+                                      fForever ? RT_INDEFINITE_WAIT : (RTMSINTERVAL)timeLeft);
             alock.enter();
             mWaitersCount--;
@@ -861,7 +858,7 @@
             if (!fForever)
             {
-                RTTimeNow (&time);
-                timeLeft -= RTTimeSpecGetMilli(&time) - lastTime;
-                lastTime = RTTimeSpecGetMilli(&time);
+                int64_t now = RTTimeMilliTS();
+                timeLeft -= now - lastTime;
+                lastTime = now;
             }
         }
@@ -901,11 +898,8 @@
          && aOperation >= m_ulCurrentOperation)
     {
-        RTTIMESPEC time;
-        RTTimeNow (&time);
-
         int vrc = VINF_SUCCESS;
         bool fForever = aTimeout < 0;
         int64_t timeLeft = aTimeout;
-        int64_t lastTime = RTTimeSpecGetMilli (&time);
+        int64_t lastTime = RTTimeMilliTS();
 
         while (    !mCompleted && aOperation >= m_ulCurrentOperation
@@ -928,7 +922,7 @@
             if (!fForever)
             {
-                RTTimeNow(&time);
-                timeLeft -= RTTimeSpecGetMilli(&time) - lastTime;
-                lastTime = RTTimeSpecGetMilli(&time);
+                int64_t now = RTTimeMilliTS();
+                timeLeft -= now - lastTime;
+                lastTime = now;
             }
         }
@@ -1592,11 +1586,8 @@
     if (!mCompleted)
     {
-        RTTIMESPEC time;
-        RTTimeNow(&time);
-
         HRESULT rc = S_OK;
         bool forever = aTimeout < 0;
         int64_t timeLeft = aTimeout;
-        int64_t lastTime = RTTimeSpecGetMilli(&time);
+        int64_t lastTime = RTTimeMilliTS();
 
         while (!mCompleted && (forever || timeLeft > 0))
@@ -1613,7 +1604,7 @@
             if (!forever)
             {
-                RTTimeNow(&time);
-                timeLeft -= RTTimeSpecGetMilli(&time) - lastTime;
-                lastTime = RTTimeSpecGetMilli(&time);
+                int64_t now = RTTimeMilliTS();
+                timeLeft -= now - lastTime;
+                lastTime = now;
             }
         }
@@ -1679,10 +1670,7 @@
                           progress, operation));
 
-        RTTIMESPEC time;
-        RTTimeNow (&time);
-
         bool forever = aTimeout < 0;
         int64_t timeLeft = aTimeout;
-        int64_t lastTime = RTTimeSpecGetMilli (&time);
+        int64_t lastTime = RTTimeMilliTS();
 
         while (!mCompleted && aOperation >= m_ulCurrentOperation &&
@@ -1702,7 +1690,7 @@
             if (!forever)
             {
-                RTTimeNow(&time);
-                timeLeft -= RTTimeSpecGetMilli(&time) - lastTime;
-                lastTime = RTTimeSpecGetMilli(&time);
+                int64_t now = RTTimeMilliTS();
+                timeLeft -= now - lastTime;
+                lastTime = now;
             }
         }
