summaryrefslogtreecommitdiffstats
path: root/ui/surface/accelerated_surface_win.cc
diff options
context:
space:
mode:
authorjbauman@chromium.org <jbauman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-06-01 01:14:08 +0000
committerjbauman@chromium.org <jbauman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-06-01 01:14:08 +0000
commit0f1936526963cb9115984652705a8b43d4864248 (patch)
tree80f448510cc6f90107a2da3486844f624f37f674 /ui/surface/accelerated_surface_win.cc
parent9d132dc70c5d478dd6399a2c1c8dde84639d22db (diff)
downloadchromium_src-0f1936526963cb9115984652705a8b43d4864248.zip
chromium_src-0f1936526963cb9115984652705a8b43d4864248.tar.gz
chromium_src-0f1936526963cb9115984652705a8b43d4864248.tar.bz2
Pass LatencyInfo struct through win AcceleratedSurface.
BUG=155367 Review URL: https://chromiumcodereview.appspot.com/16077007 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@203546 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ui/surface/accelerated_surface_win.cc')
-rw-r--r--ui/surface/accelerated_surface_win.cc23
1 files changed, 19 insertions, 4 deletions
diff --git a/ui/surface/accelerated_surface_win.cc b/ui/surface/accelerated_surface_win.cc
index 298f125..41983c5 100644
--- a/ui/surface/accelerated_surface_win.cc
+++ b/ui/surface/accelerated_surface_win.cc
@@ -25,6 +25,7 @@
#include "media/base/video_frame.h"
#include "media/base/video_util.h"
#include "third_party/skia/include/core/SkBitmap.h"
+#include "ui/base/latency_info.h"
#include "ui/base/win/dpi.h"
#include "ui/base/win/hwnd_util.h"
#include "ui/base/win/shell.h"
@@ -380,11 +381,13 @@ scoped_refptr<AcceleratedPresenter> AcceleratedPresenter::GetForWindow(
void AcceleratedPresenter::AsyncPresentAndAcknowledge(
const gfx::Size& size,
int64 surface_handle,
+ const ui::LatencyInfo& latency_info,
const CompletionTask& completion_task) {
if (!surface_handle) {
TRACE_EVENT1("gpu", "EarlyOut_ZeroSurfaceHandle",
"surface_handle", surface_handle);
- completion_task.Run(true, base::TimeTicks(), base::TimeDelta());
+ completion_task.Run(
+ true, base::TimeTicks(), base::TimeDelta(), ui::LatencyInfo());
return;
}
@@ -394,6 +397,7 @@ void AcceleratedPresenter::AsyncPresentAndAcknowledge(
this,
size,
surface_handle,
+ latency_info,
completion_task));
}
@@ -679,6 +683,7 @@ AcceleratedPresenter::~AcceleratedPresenter() {
void AcceleratedPresenter::DoPresentAndAcknowledge(
const gfx::Size& size,
int64 surface_handle,
+ const ui::LatencyInfo& latency_info,
const CompletionTask& completion_task) {
TRACE_EVENT2(
"gpu", "DoPresentAndAcknowledge",
@@ -689,18 +694,25 @@ void AcceleratedPresenter::DoPresentAndAcknowledge(
base::AutoLock locked(*present_thread_->lock());
+ latency_info_.MergeWith(latency_info);
+
// Initialize the device lazily since calling Direct3D can crash bots.
present_thread_->InitDevice();
if (!present_thread_->device()) {
- completion_task.Run(false, base::TimeTicks(), base::TimeDelta());
+ completion_task.Run(
+ false, base::TimeTicks(), base::TimeDelta(), ui::LatencyInfo());
TRACE_EVENT0("gpu", "EarlyOut_NoDevice");
return;
}
// Ensure the task is acknowledged on early out after this point.
base::ScopedClosureRunner scoped_completion_runner(
- base::Bind(completion_task, true, base::TimeTicks(), base::TimeDelta()));
+ base::Bind(completion_task,
+ true,
+ base::TimeTicks(),
+ base::TimeDelta(),
+ ui::LatencyInfo()));
// If invalidated, do nothing, the window is gone.
if (!window_) {
@@ -845,6 +857,8 @@ void AcceleratedPresenter::DoPresentAndAcknowledge(
ReleaseDC(window_, dc);
}
+ latency_info_.swap_timestamp = base::TimeTicks::HighResNow();
+
hidden_ = false;
D3DDISPLAYMODE display_mode;
@@ -903,7 +917,8 @@ void AcceleratedPresenter::DoPresentAndAcknowledge(
}
scoped_completion_runner.Release();
- completion_task.Run(true, last_vsync_time, refresh_period);
+ completion_task.Run(true, last_vsync_time, refresh_period, latency_info_);
+ latency_info_.Clear();
}
void AcceleratedPresenter::DoSuspend() {