diff options
author | sievers@chromium.org <sievers@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-05-13 22:40:59 +0000 |
---|---|---|
committer | sievers@chromium.org <sievers@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-05-13 22:40:59 +0000 |
commit | 5aba5bc9fe839dce4e580e042cd6f53cdc963deb (patch) | |
tree | 8ff503fa2034e64ab18b9833c4cea568ec168bb5 /content/browser/android | |
parent | d1e0c221a522f1e9a4691faf4bee7fb6a3de99de (diff) | |
download | chromium_src-5aba5bc9fe839dce4e580e042cd6f53cdc963deb.zip chromium_src-5aba5bc9fe839dce4e580e042cd6f53cdc963deb.tar.gz chromium_src-5aba5bc9fe839dce4e580e042cd6f53cdc963deb.tar.bz2 |
Android: Move scheduling logic to CompositorImpl
This adds two ways of scheduling:
- implicitly from LTHClient::ScheduleComposite():
This will post a task to composite immediately.
- explicitly (for Chrome) through SetNeedsComposite() where
there are no layer tree changes, but instead a Composite()
will be scheduled for vsync with the Layout() callback giving
the app a chance to update the tree.
TBR=skyostil@chromium.org
NOTRY=True
BUG=234173
Review URL: https://codereview.chromium.org/239963002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@270231 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/browser/android')
-rw-r--r-- | content/browser/android/content_view_render_view.cc | 23 | ||||
-rw-r--r-- | content/browser/android/content_view_render_view.h | 9 |
2 files changed, 7 insertions, 25 deletions
diff --git a/content/browser/android/content_view_render_view.cc b/content/browser/android/content_view_render_view.cc index 9f5ed31..4a39885 100644 --- a/content/browser/android/content_view_render_view.cc +++ b/content/browser/android/content_view_render_view.cc @@ -53,8 +53,7 @@ bool ContentViewRenderView::RegisterContentViewRenderView(JNIEnv* env) { ContentViewRenderView::ContentViewRenderView(JNIEnv* env, jobject obj, gfx::NativeWindow root_window) - : buffers_swapped_during_composite_(false), - layer_tree_build_helper_(new LayerTreeBuildHelperImpl()), + : layer_tree_build_helper_(new LayerTreeBuildHelperImpl()), root_window_(root_window), current_surface_format_(0) { java_obj_.Reset(env, obj); @@ -118,15 +117,6 @@ void ContentViewRenderView::SurfaceChanged(JNIEnv* env, jobject obj, compositor_->SetWindowBounds(gfx::Size(width, height)); } -jboolean ContentViewRenderView::Composite(JNIEnv* env, jobject obj) { - if (!compositor_) - return false; - - buffers_swapped_during_composite_ = false; - compositor_->Composite(); - return buffers_swapped_during_composite_; -} - jboolean ContentViewRenderView::CompositeToBitmap(JNIEnv* env, jobject obj, jobject java_bitmap) { gfx::JavaBitmap bitmap(java_bitmap); @@ -139,19 +129,14 @@ jboolean ContentViewRenderView::CompositeToBitmap(JNIEnv* env, jobject obj, void ContentViewRenderView::SetOverlayVideoMode( JNIEnv* env, jobject obj, bool enabled) { compositor_->SetHasTransparentBackground(enabled); - Java_ContentViewRenderView_requestRender(env, obj); } -void ContentViewRenderView::ScheduleComposite() { +void ContentViewRenderView::Layout() { JNIEnv* env = base::android::AttachCurrentThread(); - Java_ContentViewRenderView_requestRender(env, java_obj_.obj()); -} - -void ContentViewRenderView::OnSwapBuffersPosted() { - buffers_swapped_during_composite_ = true; + Java_ContentViewRenderView_onCompositorLayout(env, java_obj_.obj()); } -void ContentViewRenderView::OnSwapBuffersCompleted() { +void ContentViewRenderView::OnSwapBuffersCompleted(int pending_swap_buffers) { JNIEnv* env = base::android::AttachCurrentThread(); Java_ContentViewRenderView_onSwapBuffersCompleted(env, java_obj_.obj()); } diff --git a/content/browser/android/content_view_render_view.h b/content/browser/android/content_view_render_view.h index 8f14456..cbdb1f1 100644 --- a/content/browser/android/content_view_render_view.h +++ b/content/browser/android/content_view_render_view.h @@ -43,18 +43,15 @@ class ContentViewRenderView : public CompositorClient { jboolean CompositeToBitmap(JNIEnv* env, jobject obj, jobject java_bitmap); void SetOverlayVideoMode(JNIEnv* env, jobject obj, bool enabled); - // CompositorClient --------------------------------------------------------- - virtual void ScheduleComposite() OVERRIDE; - virtual void OnSwapBuffersPosted() OVERRIDE; - virtual void OnSwapBuffersCompleted() OVERRIDE; + // CompositorClient implementation + virtual void Layout() OVERRIDE; + virtual void OnSwapBuffersCompleted(int pending_swap_buffers) OVERRIDE; private: virtual ~ContentViewRenderView(); void InitCompositor(); - bool buffers_swapped_during_composite_; - base::android::ScopedJavaGlobalRef<jobject> java_obj_; scoped_ptr<LayerTreeBuildHelper> layer_tree_build_helper_; |