| Index: ui/surface/accelerated_surface_win.cc
|
| diff --git a/ui/surface/accelerated_surface_win.cc b/ui/surface/accelerated_surface_win.cc
|
| index be55b6fbd567139272c2d88208beeb3359710611..199d9b9ccc09ce3728d04bb77109e35783556d3d 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>
|
|
|
| @@ -861,6 +862,24 @@ void AcceleratedPresenter::DoReleaseSurface() {
|
| source_texture_.Release();
|
| }
|
|
|
| +void AcceleratedPresenter::GetPresentationStats(base::TimeTicks* timebase,
|
| + uint32* interval_numerator,
|
| + uint32* interval_denominator) {
|
| + lock_.AssertAcquired();
|
| +
|
| + DWM_TIMING_INFO timing_info;
|
| + timing_info.cbSize = sizeof(timing_info);
|
| + HRESULT result = DwmGetCompositionTimingInfo(window_, &timing_info);
|
| + if (result != S_OK)
|
| + return;
|
| +
|
| + *timebase = base::TimeTicks::FromQPCValue(
|
| + static_cast<LONGLONG>(timing_info.qpcVBlank));
|
| + // Swap the numerator/denominator to convert frequency to period.
|
| + *interval_numerator = timing_info.rateRefresh.uiDenominator;
|
| + *interval_denominator = timing_info.rateRefresh.uiNumerator;
|
| +}
|
| +
|
| AcceleratedSurface::AcceleratedSurface(gfx::NativeWindow window)
|
| : presenter_(g_accelerated_presenter_map.Pointer()->CreatePresenter(
|
| window)) {
|
|
|