Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(426)

Unified Diff: content/browser/android/content_view_core_impl.cc

Issue 16863005: cc: Add BeginFrameArgs (Closed) Base URL: http://git.chromium.org/chromium/src.git@nofrc12
Patch Set: Created 7 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/browser/android/content_view_core_impl.cc
diff --git a/content/browser/android/content_view_core_impl.cc b/content/browser/android/content_view_core_impl.cc
index 846fa91fa4f556f337001426f127655ccbcfd78d..d01ddde919a407aa5e03d4a69ccfae527221b972 100644
--- a/content/browser/android/content_view_core_impl.cc
+++ b/content/browser/android/content_view_core_impl.cc
@@ -14,6 +14,7 @@
#include "base/strings/utf_string_conversions.h"
#include "base/values.h"
#include "cc/layers/layer.h"
+#include "cc/output/begin_frame_args.h"
#include "content/browser/android/interstitial_page_delegate_android.h"
#include "content/browser/android/load_url_params.h"
#include "content/browser/android/media_player_manager_impl.h"
@@ -77,6 +78,10 @@ namespace content {
namespace {
+const unsigned int kDefaultVSyncIntervalMicros = 16666u;
+// TODO(brianderson): Use adaptive draw-time estimation.
+const float kDefaultBrowserCompositeVSyncFraction = 1.0f / 3;
+
const void* kContentViewUserDataKey = &kContentViewUserDataKey;
int GetRenderProcessIdFromRenderViewHost(RenderViewHost* host) {
@@ -158,6 +163,10 @@ ContentViewCoreImpl::ContentViewCoreImpl(JNIEnv* env, jobject obj,
web_contents_(static_cast<WebContentsImpl*>(web_contents)),
root_layer_(cc::Layer::Create()),
tab_crashed_(false),
+ vsync_interval_(base::TimeDelta::FromMicroseconds(
+ kDefaultVSyncIntervalMicros)),
+ expected_browser_composite_time_(base::TimeDelta::FromMicroseconds(
+ kDefaultVSyncIntervalMicros * kDefaultBrowserCompositeVSyncFraction)),
view_android_(view_android),
window_android_(window_android) {
CHECK(web_contents) <<
@@ -701,7 +710,7 @@ void ContentViewCoreImpl::LoadUrl(
tab_crashed_ = false;
}
-void ContentViewCoreImpl::SetVSyncNotificationEnabled(bool enabled) {
+void ContentViewCoreImpl::SetNeedsBeginFrame(bool enabled) {
JNIEnv* env = AttachCurrentThread();
ScopedJavaLocalRef<jobject> obj = java_ref_.get(env);
if (obj.is_null())
@@ -1223,6 +1232,11 @@ void ContentViewCoreImpl::UpdateVSyncParameters(JNIEnv* env, jobject /* obj */,
host->UpdateVSyncParameters(
base::TimeTicks::FromInternalValue(timebase_micros),
base::TimeDelta::FromMicroseconds(interval_micros));
+
no sievers 2013/06/13 01:17:47 Is this function still getting called with begin f
Sami 2013/06/13 10:01:07 Yes, we call when attaching the view for the first
brianderson 2013/06/14 20:12:02 It is also called now when we did not draw after a
+ vsync_interval_ =
+ base::TimeDelta::FromMicroseconds(interval_micros);
+ expected_browser_composite_time_ =
+ vsync_interval_ * kDefaultBrowserCompositeVSyncFraction;
}
void ContentViewCoreImpl::OnVSync(JNIEnv* env, jobject /* obj */,
@@ -1231,8 +1245,14 @@ void ContentViewCoreImpl::OnVSync(JNIEnv* env, jobject /* obj */,
if (!view)
return;
+ base::TimeTicks frame_time =
+ base::TimeTicks::FromInternalValue(frame_time_micros);
+ base::TimeTicks display_time = frame_time + vsync_interval_;
+ base::TimeTicks deadline = display_time - expected_browser_composite_time_;
+
view->SendBeginFrame(
- base::TimeTicks::FromInternalValue(frame_time_micros));
+ cc::BeginFrameArgs::CreateBeginFrame(
+ frame_time, deadline, vsync_interval_));
}
jboolean ContentViewCoreImpl::OnAnimate(JNIEnv* env, jobject /* obj */,

Powered by Google App Engine
This is Rietveld 408576698