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; |