Index: ui/surface/accelerated_surface_win.cc |
diff --git a/ui/surface/accelerated_surface_win.cc b/ui/surface/accelerated_surface_win.cc |
index da77ac502f42fc2ca34eff16c073d8cd750e12de..748b2e71d36f3ff03b0802e18112e33e6bd25c8d 100644 |
--- a/ui/surface/accelerated_surface_win.cc |
+++ b/ui/surface/accelerated_surface_win.cc |
@@ -4,6 +4,7 @@ |
#include "ui/surface/accelerated_surface_win.h" |
+#include <dwmapi.h> |
#include <windows.h> |
#include <algorithm> |
@@ -833,6 +834,24 @@ void AcceleratedPresenter::DoReleaseSurface() { |
source_texture_.Release(); |
} |
+void AcceleratedPresenter::GetPresentationStats(base::TimeTicks *timebase, |
+ uint32 *interval_numerator, |
+ uint32 *interval_denominator) { |
+ lock_.AssertAcquired(); |
+ |
+ DWM_TIMING_INFO timingInfo; |
apatrick_chromium
2012/07/30 19:43:31
timing_info
|
+ timingInfo.cbSize = sizeof(timingInfo); |
+ HRESULT gctiResult = DwmGetCompositionTimingInfo(window_, &timingInfo); |
apatrick_chromium
2012/07/30 19:43:31
I'd just call this result. otherwise gcti_result.
brianderson
2012/07/30 20:16:39
Artifact of previous code that had multiple result
|
+ if (gctiResult != S_OK) |
+ return; |
+ |
+ *timebase = base::TimeTicks::FromQPCValue( |
+ static_cast<LONGLONG>(timingInfo.qpcVBlank)); |
+ // Swap the numerator/denominator to convert frequency to period. |
+ *interval_numerator = timingInfo.rateRefresh.uiDenominator; |
+ *interval_denominator = timingInfo.rateRefresh.uiNumerator; |
+} |
+ |
AcceleratedSurface::AcceleratedSurface(gfx::NativeWindow window) |
: presenter_(g_accelerated_presenter_map.Pointer()->CreatePresenter( |
window)) { |