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

Side by Side Diff: content/browser/android/content_view_render_view.cc

Issue 239963002: Android: Move scheduling logic to CompositorImpl (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 6 years, 7 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/browser/android/content_view_render_view.h" 5 #include "content/browser/android/content_view_render_view.h"
6 6
7 #include "base/android/jni_android.h" 7 #include "base/android/jni_android.h"
8 #include "base/android/jni_string.h" 8 #include "base/android/jni_string.h"
9 #include "base/android/scoped_java_ref.h" 9 #include "base/android/scoped_java_ref.h"
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
46 } // anonymous namespace 46 } // anonymous namespace
47 47
48 // static 48 // static
49 bool ContentViewRenderView::RegisterContentViewRenderView(JNIEnv* env) { 49 bool ContentViewRenderView::RegisterContentViewRenderView(JNIEnv* env) {
50 return RegisterNativesImpl(env); 50 return RegisterNativesImpl(env);
51 } 51 }
52 52
53 ContentViewRenderView::ContentViewRenderView(JNIEnv* env, 53 ContentViewRenderView::ContentViewRenderView(JNIEnv* env,
54 jobject obj, 54 jobject obj,
55 gfx::NativeWindow root_window) 55 gfx::NativeWindow root_window)
56 : buffers_swapped_during_composite_(false), 56 : layer_tree_build_helper_(new LayerTreeBuildHelperImpl()),
57 layer_tree_build_helper_(new LayerTreeBuildHelperImpl()),
58 root_window_(root_window), 57 root_window_(root_window),
59 current_surface_format_(0) { 58 current_surface_format_(0) {
60 java_obj_.Reset(env, obj); 59 java_obj_.Reset(env, obj);
61 } 60 }
62 61
63 ContentViewRenderView::~ContentViewRenderView() { 62 ContentViewRenderView::~ContentViewRenderView() {
64 } 63 }
65 64
66 void ContentViewRenderView::SetLayerTreeBuildHelper(JNIEnv* env, 65 void ContentViewRenderView::SetLayerTreeBuildHelper(JNIEnv* env,
67 jobject obj, 66 jobject obj,
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
111 110
112 void ContentViewRenderView::SurfaceChanged(JNIEnv* env, jobject obj, 111 void ContentViewRenderView::SurfaceChanged(JNIEnv* env, jobject obj,
113 jint format, jint width, jint height, jobject surface) { 112 jint format, jint width, jint height, jobject surface) {
114 if (current_surface_format_ != format) { 113 if (current_surface_format_ != format) {
115 current_surface_format_ = format; 114 current_surface_format_ = format;
116 compositor_->SetSurface(surface); 115 compositor_->SetSurface(surface);
117 } 116 }
118 compositor_->SetWindowBounds(gfx::Size(width, height)); 117 compositor_->SetWindowBounds(gfx::Size(width, height));
119 } 118 }
120 119
121 jboolean ContentViewRenderView::Composite(JNIEnv* env, jobject obj) {
122 if (!compositor_)
123 return false;
124
125 buffers_swapped_during_composite_ = false;
126 compositor_->Composite();
127 return buffers_swapped_during_composite_;
128 }
129
130 jboolean ContentViewRenderView::CompositeToBitmap(JNIEnv* env, jobject obj, 120 jboolean ContentViewRenderView::CompositeToBitmap(JNIEnv* env, jobject obj,
131 jobject java_bitmap) { 121 jobject java_bitmap) {
132 gfx::JavaBitmap bitmap(java_bitmap); 122 gfx::JavaBitmap bitmap(java_bitmap);
133 if (!compositor_ || bitmap.format() != ANDROID_BITMAP_FORMAT_RGBA_8888) 123 if (!compositor_ || bitmap.format() != ANDROID_BITMAP_FORMAT_RGBA_8888)
134 return false; 124 return false;
135 return compositor_->CompositeAndReadback(bitmap.pixels(), 125 return compositor_->CompositeAndReadback(bitmap.pixels(),
136 gfx::Rect(bitmap.size())); 126 gfx::Rect(bitmap.size()));
137 } 127 }
138 128
139 void ContentViewRenderView::SetOverlayVideoMode( 129 void ContentViewRenderView::SetOverlayVideoMode(
140 JNIEnv* env, jobject obj, bool enabled) { 130 JNIEnv* env, jobject obj, bool enabled) {
141 compositor_->SetHasTransparentBackground(enabled); 131 compositor_->SetHasTransparentBackground(enabled);
142 Java_ContentViewRenderView_requestRender(env, obj);
143 } 132 }
144 133
145 void ContentViewRenderView::ScheduleComposite() { 134 void ContentViewRenderView::Layout() {
146 JNIEnv* env = base::android::AttachCurrentThread(); 135 JNIEnv* env = base::android::AttachCurrentThread();
147 Java_ContentViewRenderView_requestRender(env, java_obj_.obj()); 136 Java_ContentViewRenderView_onCompositorLayout(env, java_obj_.obj());
148 } 137 }
149 138
150 void ContentViewRenderView::OnSwapBuffersPosted() { 139 void ContentViewRenderView::OnSwapBuffersCompleted(int pending_swap_buffers) {
151 buffers_swapped_during_composite_ = true;
152 }
153
154 void ContentViewRenderView::OnSwapBuffersCompleted() {
155 JNIEnv* env = base::android::AttachCurrentThread(); 140 JNIEnv* env = base::android::AttachCurrentThread();
156 Java_ContentViewRenderView_onSwapBuffersCompleted(env, java_obj_.obj()); 141 Java_ContentViewRenderView_onSwapBuffersCompleted(env, java_obj_.obj());
157 } 142 }
158 143
159 void ContentViewRenderView::InitCompositor() { 144 void ContentViewRenderView::InitCompositor() {
160 if (!compositor_) 145 if (!compositor_)
161 compositor_.reset(Compositor::Create(this, root_window_)); 146 compositor_.reset(Compositor::Create(this, root_window_));
162 } 147 }
163 } // namespace content 148 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/android/content_view_render_view.h ('k') | content/browser/renderer_host/compositor_impl_android.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698