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

Unified Diff: blimp/client/app/android/blimp_view.cc

Issue 2266863003: blimp: Move BlimpCompositor to use delegated rendering. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: make gn happy Created 4 years, 4 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: blimp/client/app/android/blimp_view.cc
diff --git a/blimp/client/app/android/blimp_view.cc b/blimp/client/app/android/blimp_view.cc
index 27f20612ace74c8e5278ed1c8649f4f1fc8d5ec6..af1667ee6c017be318676adea473fd71afd1dd73 100644
--- a/blimp/client/app/android/blimp_view.cc
+++ b/blimp/client/app/android/blimp_view.cc
@@ -7,7 +7,7 @@
#include <android/native_window_jni.h>
#include "blimp/client/app/android/blimp_client_session_android.h"
-#include "blimp/net/blimp_stats.h"
+#include "blimp/client/app/compositor/browser_compositor.h"
#include "jni/BlimpView_jni.h"
#include "ui/events/android/motion_event_android.h"
#include "ui/gfx/geometry/size.h"
@@ -50,26 +50,37 @@ BlimpView::BlimpView(JNIEnv* env,
float dp_to_px,
RenderWidgetFeature* render_widget_feature)
: device_scale_factor_(dp_to_px),
- compositor_manager_(
- BlimpCompositorManagerAndroid::Create(real_size,
- size,
- render_widget_feature,
- this)),
+ compositor_(base::MakeUnique<BrowserCompositor>()),
current_surface_format_(0),
- window_(gfx::kNullAcceleratedWidget) {
+ window_(gfx::kNullAcceleratedWidget),
+ weak_ptr_factory_(this) {
+ compositor_manager_ = BlimpCompositorManagerAndroid::Create(
+ real_size, size, render_widget_feature,
+ BrowserCompositor::GetSurfaceManager(),
+ BrowserCompositor::GetGpuMemoryBufferManager(),
+ base::Bind(&BrowserCompositor::AllocateSurfaceClientId));
+ compositor_->set_did_complete_swap_buffers_callback(base::Bind(
+ &BlimpView::OnSwapBuffersCompleted, weak_ptr_factory_.GetWeakPtr()));
+ compositor_->SetContentLayer(compositor_manager_->layer());
java_obj_.Reset(env, jobj);
}
BlimpView::~BlimpView() {
- ReleaseAcceleratedWidget();
+ SetSurface(nullptr);
}
void BlimpView::Destroy(JNIEnv* env, const JavaParamRef<jobject>& jobj) {
delete this;
}
-void BlimpView::SetNeedsComposite(JNIEnv* env,
- const JavaParamRef<jobject>& jobj) {}
+void BlimpView::OnContentAreaSizeChanged(
+ JNIEnv* env,
+ const base::android::JavaParamRef<jobject>& jobj,
+ jint width,
+ jint height,
+ jfloat dpToPx) {
+ compositor_->SetSize(gfx::Size(width, height));
+}
void BlimpView::OnSurfaceChanged(JNIEnv* env,
const JavaParamRef<jobject>& jobj,
@@ -79,13 +90,10 @@ void BlimpView::OnSurfaceChanged(JNIEnv* env,
const JavaParamRef<jobject>& jsurface) {
if (current_surface_format_ != format) {
current_surface_format_ = format;
- ReleaseAcceleratedWidget();
+ SetSurface(nullptr);
if (jsurface) {
- base::android::ScopedJavaLocalFrame scoped_local_reference_frame(env);
- window_ = ANativeWindow_fromSurface(env, jsurface);
- compositor_manager_->SetAcceleratedWidget(window_);
- compositor_manager_->SetVisible(true);
+ SetSurface(jsurface);
}
}
}
@@ -98,22 +106,25 @@ void BlimpView::OnSurfaceCreated(JNIEnv* env,
void BlimpView::OnSurfaceDestroyed(JNIEnv* env,
const JavaParamRef<jobject>& jobj) {
current_surface_format_ = 0 /** PixelFormat.UNKNOWN */;
- ReleaseAcceleratedWidget();
-}
-
-void BlimpView::SetVisibility(JNIEnv* env,
- const JavaParamRef<jobject>& jobj,
- jboolean visible) {
- compositor_manager_->SetVisible(visible);
+ SetSurface(nullptr);
}
-void BlimpView::ReleaseAcceleratedWidget() {
- if (window_ == gfx::kNullAcceleratedWidget)
- return;
+void BlimpView::SetSurface(jobject surface) {
+ JNIEnv* env = base::android::AttachCurrentThread();
+ // Release all references to the old surface.
+ if (window_ != gfx::kNullAcceleratedWidget) {
+ compositor_->SetAcceleratedWidget(gfx::kNullAcceleratedWidget);
+ compositor_manager_->SetVisible(false);
+ ANativeWindow_release(window_);
+ window_ = gfx::kNullAcceleratedWidget;
+ }
- compositor_manager_->ReleaseAcceleratedWidget();
- ANativeWindow_release(window_);
- window_ = gfx::kNullAcceleratedWidget;
+ if (surface) {
+ base::android::ScopedJavaLocalFrame scoped_local_reference_frame(env);
+ window_ = ANativeWindow_fromSurface(env, surface);
+ compositor_->SetAcceleratedWidget(window_);
+ compositor_manager_->SetVisible(true);
+ }
}
jboolean BlimpView::OnTouchEvent(JNIEnv* env,
@@ -183,9 +194,5 @@ void BlimpView::OnSwapBuffersCompleted() {
Java_BlimpView_onSwapBuffersCompleted(env, java_obj_);
}
-void BlimpView::DidCommitAndDrawFrame() {
- BlimpStats::GetInstance()->Add(BlimpStats::COMMIT, 1);
-}
-
} // namespace client
} // namespace blimp
« no previous file with comments | « blimp/client/app/android/blimp_view.h ('k') | blimp/client/app/android/java/src/org/chromium/blimp/BlimpView.java » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698