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

Unified Diff: android_webview/browser/render_thread_manager.cc

Issue 1911433002: Refactor BrowserViewRenderer-RenderThreadManager relationship. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Address most comments Created 4 years, 8 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: android_webview/browser/render_thread_manager.cc
diff --git a/android_webview/browser/render_thread_manager.cc b/android_webview/browser/render_thread_manager.cc
index 94d74c6bff33e024b71634f1a0089d483912e83f..b55546578e3bd816fea363cac4de3ca17a2c79a7 100644
--- a/android_webview/browser/render_thread_manager.cc
+++ b/android_webview/browser/render_thread_manager.cc
@@ -7,6 +7,7 @@
#include <utility>
#include "android_webview/browser/child_frame.h"
+#include "android_webview/browser/compositor_frame_producer.h"
#include "android_webview/browser/deferred_gpu_command_service.h"
#include "android_webview/browser/hardware_renderer.h"
#include "android_webview/browser/render_thread_manager_client.h"
@@ -91,6 +92,7 @@ RenderThreadManager::RenderThreadManager(
const scoped_refptr<base::SingleThreadTaskRunner>& ui_loop)
: ui_loop_(ui_loop),
client_(client),
+ compositor_frame_producer_(nullptr),
renderer_manager_key_(GLViewRendererManager::GetInstance()->NullKey()),
hardware_renderer_has_frame_(false),
inside_hardware_release_(false),
@@ -104,6 +106,9 @@ RenderThreadManager::RenderThreadManager(
RenderThreadManager::~RenderThreadManager() {
DCHECK(ui_loop_->BelongsToCurrentThread());
DCHECK(!hardware_renderer_.get());
+ if (compositor_frame_producer_) {
+ compositor_frame_producer_->OnCompositorFrameConsumerWillDestroy();
+ }
}
void RenderThreadManager::ClientRequestInvokeGL(bool for_idle) {
@@ -152,7 +157,9 @@ void RenderThreadManager::ClientRequestInvokeGLOnUI() {
void RenderThreadManager::UpdateParentDrawConstraintsOnUI() {
DCHECK(ui_loop_->BelongsToCurrentThread());
- client_->OnParentDrawConstraintsUpdated();
+ if (compositor_frame_producer_) {
+ compositor_frame_producer_->OnParentDrawConstraintsUpdated();
+ }
}
void RenderThreadManager::SetScrollOffsetOnUI(gfx::Vector2d scroll_offset) {
@@ -353,6 +360,11 @@ void RenderThreadManager::DeleteHardwareRendererOnUI() {
}
}
+void RenderThreadManager::SetCompositorFrameProducer(
+ CompositorFrameProducer* compositor_frame_producer) {
+ compositor_frame_producer_ = compositor_frame_producer;
+}
+
bool RenderThreadManager::HasFrameOnUI() const {
base::AutoLock lock(lock_);
return hardware_renderer_has_frame_ || child_frame_.get();

Powered by Google App Engine
This is Rietveld 408576698