Title: [118205] trunk/Source/WebCore
Revision
118205
Author
jer.no...@apple.com
Date
2012-05-23 11:11:55 -0700 (Wed, 23 May 2012)

Log Message

GenericClock loses precision due to float->double conversion.
https://bugs.webkit.org/show_bug.cgi?id=87227

Reviewed by Darin Adler.

No new tests; fixes media/media-controller-time.html on Chromium.

Only narrow to float after the entire calculation is complete. This requires now() and m_offset
to be double-precision.

* platform/ClockGeneric.cpp:
(ClockGeneric::currentTime):
(ClockGeneric::now): Make double-precision.
* platform/ClockGeneric.h:
(ClockGeneric): Make m_offset double-precision.

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (118204 => 118205)


--- trunk/Source/WebCore/ChangeLog	2012-05-23 18:11:48 UTC (rev 118204)
+++ trunk/Source/WebCore/ChangeLog	2012-05-23 18:11:55 UTC (rev 118205)
@@ -1,3 +1,21 @@
+2012-05-23  Jer Noble  <jer.no...@apple.com>
+
+        GenericClock loses precision due to float->double conversion.
+        https://bugs.webkit.org/show_bug.cgi?id=87227
+
+        Reviewed by Darin Adler.
+
+        No new tests; fixes media/media-controller-time.html on Chromium.
+
+        Only narrow to float after the entire calculation is complete. This requires now() and m_offset
+        to be double-precision.
+
+        * platform/ClockGeneric.cpp:
+        (ClockGeneric::currentTime): 
+        (ClockGeneric::now): Make double-precision.
+        * platform/ClockGeneric.h:
+        (ClockGeneric): Make m_offset double-precision.
+
 2012-05-22  Jer Noble  <jer.no...@apple.com>
 
         PlatformClockCM has uninitialized m_rate member.

Modified: trunk/Source/WebCore/platform/ClockGeneric.cpp (118204 => 118205)


--- trunk/Source/WebCore/platform/ClockGeneric.cpp	2012-05-23 18:11:48 UTC (rev 118204)
+++ trunk/Source/WebCore/platform/ClockGeneric.cpp	2012-05-23 18:11:55 UTC (rev 118205)
@@ -49,7 +49,7 @@
 {
     if (m_running)
         m_lastTime = now();
-    float time = (narrowPrecisionToFloat(m_lastTime - m_startTime) * m_rate) + m_offset;
+    float time = narrowPrecisionToFloat(((m_lastTime - m_startTime) * m_rate) + m_offset);
     return time;
 }
 
@@ -79,8 +79,8 @@
     m_running = false;
 }
 
-float ClockGeneric::now() const
+double ClockGeneric::now() const
 {
-    return narrowPrecisionToFloat(WTF::currentTime());
+    return WTF::currentTime();
 }
 

Modified: trunk/Source/WebCore/platform/ClockGeneric.h (118204 => 118205)


--- trunk/Source/WebCore/platform/ClockGeneric.h	2012-05-23 18:11:48 UTC (rev 118204)
+++ trunk/Source/WebCore/platform/ClockGeneric.h	2012-05-23 18:11:55 UTC (rev 118205)
@@ -45,11 +45,11 @@
     virtual void stop();
     virtual bool isRunning() const { return m_running; }
 
-    float now() const;
+    double now() const;
 
     bool m_running;
     float m_rate;
-    float m_offset;
+    double m_offset;
     double m_startTime;
     mutable double m_lastTime;
 };
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to