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

Unified Diff: android_webview/native/aw_contents.cc

Issue 266353003: aw: Ubercomp mega patch (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « android_webview/native/aw_contents.h ('k') | android_webview/native/aw_contents_io_thread_client_impl.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: android_webview/native/aw_contents.cc
diff --git a/android_webview/native/aw_contents.cc b/android_webview/native/aw_contents.cc
index 91f6f9d2508bf20e004ebc2c619a4c3373bd764b..7231e6f715f26eb8d53939760bdbb3acaf0a0b49 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"
@@ -342,12 +344,16 @@ void AwContents::DrawGL(AwDrawGLInfo* draw_info) {
return;
// TODO(boliu): Make this a task as well.
- 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());
+ }
}
}
@@ -795,7 +801,12 @@ void AwContents::InitializeHardwareDrawIfNeeded() {
void AwContents::InitializeHardwareDrawOnRenderThread() {
DCHECK(!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);
}
@@ -817,7 +828,10 @@ void AwContents::OnDetachedFromWindow(JNIEnv* env, jobject obj) {
shared_renderer_state_.ClearClosureQueue();
}
+ DCHECK(!hardware_renderer_);
browser_view_renderer_.OnDetachedFromWindow();
+ // Flush any invoke functors that's caused by OnDetachedFromWindow.
+ RequestDrawGL(NULL, true);
GLViewRendererManager* manager = GLViewRendererManager::GetInstance();
if (renderer_manager_key_ != manager->NullKey()) {
« no previous file with comments | « android_webview/native/aw_contents.h ('k') | android_webview/native/aw_contents_io_thread_client_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698