| Index: android_webview/native/aw_contents.cc
|
| diff --git a/android_webview/native/aw_contents.cc b/android_webview/native/aw_contents.cc
|
| index 91443a0337c84aa35bd4750e9506955adb8d1771..18ff50f5a01b645e64dfdaea0695a21413893ce3 100644
|
| --- a/android_webview/native/aw_contents.cc
|
| +++ b/android_webview/native/aw_contents.cc
|
| @@ -13,10 +13,12 @@
|
| #include "android_webview/browser/deferred_gpu_command_service.h"
|
| #include "android_webview/browser/gpu_memory_buffer_factory_impl.h"
|
| #include "android_webview/browser/hardware_renderer.h"
|
| +#include "android_webview/browser/hardware_renderer_legacy.h"
|
| #include "android_webview/browser/net_disk_cache_remover.h"
|
| #include "android_webview/browser/renderer_host/aw_resource_dispatcher_host_delegate.h"
|
| #include "android_webview/browser/scoped_app_gl_state_restore.h"
|
| #include "android_webview/common/aw_hit_test_data.h"
|
| +#include "android_webview/common/aw_switches.h"
|
| #include "android_webview/common/devtools_instrumentation.h"
|
| #include "android_webview/native/aw_autofill_manager_delegate.h"
|
| #include "android_webview/native/aw_browser_dependency_factory.h"
|
| @@ -351,16 +353,25 @@ void AwContents::DrawGL(AwDrawGLInfo* draw_info) {
|
|
|
| if (!hardware_renderer_) {
|
| DCHECK(!shared_renderer_state_.IsHardwareInitialized());
|
| - hardware_renderer_.reset(new HardwareRenderer(&shared_renderer_state_));
|
| + if (switches::UbercompEnabled()) {
|
| + hardware_renderer_.reset(new HardwareRenderer(&shared_renderer_state_));
|
| + } else {
|
| + hardware_renderer_.reset(
|
| + new HardwareRendererLegacy(&shared_renderer_state_));
|
| + }
|
| shared_renderer_state_.SetHardwareInitialized(true);
|
| }
|
|
|
| - DrawGLResult result;
|
| + scoped_ptr<DrawGLResult> result(new DrawGLResult);
|
| if (hardware_renderer_->DrawGL(state_restore.stencil_enabled(),
|
| state_restore.framebuffer_binding_ext(),
|
| draw_info,
|
| - &result)) {
|
| - browser_view_renderer_.DidDrawGL(result);
|
| + result.get())) {
|
| + if (switches::UbercompEnabled()) {
|
| + browser_view_renderer_.DidDrawDelegated(result.Pass());
|
| + } else {
|
| + browser_view_renderer_.DidDrawGL(result.Pass());
|
| + }
|
| }
|
| }
|
|
|
| @@ -810,7 +821,7 @@ void AwContents::OnDetachedFromWindow(JNIEnv* env, jobject obj) {
|
| bool hardware_initialized = shared_renderer_state_.IsHardwareInitialized();
|
| if (hardware_initialized) {
|
| bool draw_functor_succeeded = RequestDrawGL(NULL, true);
|
| - if (!draw_functor_succeeded && hardware_initialized) {
|
| + if (!draw_functor_succeeded) {
|
| LOG(ERROR) << "Unable to free GL resources. Has the Window leaked?";
|
| // Calling release on wrong thread intentionally.
|
| AwDrawGLInfo info;
|
|
|