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

Side by Side Diff: android_webview/browser/render_thread_manager.cc

Issue 1858853002: Rename SharedRendererState to RenderThreadManager (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix rebase 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "android_webview/browser/shared_renderer_state.h" 5 #include "android_webview/browser/render_thread_manager.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "android_webview/browser/child_frame.h" 9 #include "android_webview/browser/child_frame.h"
10 #include "android_webview/browser/deferred_gpu_command_service.h" 10 #include "android_webview/browser/deferred_gpu_command_service.h"
11 #include "android_webview/browser/hardware_renderer.h" 11 #include "android_webview/browser/hardware_renderer.h"
12 #include "android_webview/browser/render_thread_manager_client.h"
12 #include "android_webview/browser/scoped_app_gl_state_restore.h" 13 #include "android_webview/browser/scoped_app_gl_state_restore.h"
13 #include "android_webview/browser/shared_renderer_state_client.h"
14 #include "android_webview/public/browser/draw_gl.h" 14 #include "android_webview/public/browser/draw_gl.h"
15 #include "base/bind.h" 15 #include "base/bind.h"
16 #include "base/lazy_instance.h" 16 #include "base/lazy_instance.h"
17 #include "base/location.h" 17 #include "base/location.h"
18 #include "base/time/time.h" 18 #include "base/time/time.h"
19 #include "base/trace_event/trace_event_argument.h" 19 #include "base/trace_event/trace_event_argument.h"
20 20
21 namespace android_webview { 21 namespace android_webview {
22 22
23 namespace internal { 23 namespace internal {
24 24
25 class RequestDrawGLTracker { 25 class RequestDrawGLTracker {
26 public: 26 public:
27 RequestDrawGLTracker(); 27 RequestDrawGLTracker();
28 bool ShouldRequestOnNonUiThread(SharedRendererState* state); 28 bool ShouldRequestOnNonUiThread(RenderThreadManager* state);
29 bool ShouldRequestOnUiThread(SharedRendererState* state); 29 bool ShouldRequestOnUiThread(RenderThreadManager* state);
30 void ResetPending(); 30 void ResetPending();
31 void SetQueuedFunctorOnUi(SharedRendererState* state); 31 void SetQueuedFunctorOnUi(RenderThreadManager* state);
32 32
33 private: 33 private:
34 base::Lock lock_; 34 base::Lock lock_;
35 SharedRendererState* pending_ui_; 35 RenderThreadManager* pending_ui_;
36 SharedRendererState* pending_non_ui_; 36 RenderThreadManager* pending_non_ui_;
37 }; 37 };
38 38
39 RequestDrawGLTracker::RequestDrawGLTracker() 39 RequestDrawGLTracker::RequestDrawGLTracker()
40 : pending_ui_(NULL), pending_non_ui_(NULL) { 40 : pending_ui_(NULL), pending_non_ui_(NULL) {
41 } 41 }
42 42
43 bool RequestDrawGLTracker::ShouldRequestOnNonUiThread( 43 bool RequestDrawGLTracker::ShouldRequestOnNonUiThread(
44 SharedRendererState* state) { 44 RenderThreadManager* state) {
45 base::AutoLock lock(lock_); 45 base::AutoLock lock(lock_);
46 if (pending_ui_ || pending_non_ui_) 46 if (pending_ui_ || pending_non_ui_)
47 return false; 47 return false;
48 pending_non_ui_ = state; 48 pending_non_ui_ = state;
49 return true; 49 return true;
50 } 50 }
51 51
52 bool RequestDrawGLTracker::ShouldRequestOnUiThread(SharedRendererState* state) { 52 bool RequestDrawGLTracker::ShouldRequestOnUiThread(RenderThreadManager* state) {
53 base::AutoLock lock(lock_); 53 base::AutoLock lock(lock_);
54 if (pending_non_ui_) { 54 if (pending_non_ui_) {
55 pending_non_ui_->ResetRequestDrawGLCallback(); 55 pending_non_ui_->ResetRequestDrawGLCallback();
56 pending_non_ui_ = NULL; 56 pending_non_ui_ = NULL;
57 } 57 }
58 // At this time, we could have already called RequestDrawGL on the UI thread, 58 // At this time, we could have already called RequestDrawGL on the UI thread,
59 // but the corresponding GL mode process hasn't happened yet. In this case, 59 // but the corresponding GL mode process hasn't happened yet. In this case,
60 // don't schedule another requestDrawGL on the UI thread. 60 // don't schedule another requestDrawGL on the UI thread.
61 if (pending_ui_) 61 if (pending_ui_)
62 return false; 62 return false;
63 pending_ui_ = state; 63 pending_ui_ = state;
64 return true; 64 return true;
65 } 65 }
66 66
67 void RequestDrawGLTracker::ResetPending() { 67 void RequestDrawGLTracker::ResetPending() {
68 base::AutoLock lock(lock_); 68 base::AutoLock lock(lock_);
69 pending_non_ui_ = NULL; 69 pending_non_ui_ = NULL;
70 pending_ui_ = NULL; 70 pending_ui_ = NULL;
71 } 71 }
72 72
73 void RequestDrawGLTracker::SetQueuedFunctorOnUi(SharedRendererState* state) { 73 void RequestDrawGLTracker::SetQueuedFunctorOnUi(RenderThreadManager* state) {
74 base::AutoLock lock(lock_); 74 base::AutoLock lock(lock_);
75 DCHECK(state); 75 DCHECK(state);
76 pending_ui_ = state; 76 pending_ui_ = state;
77 pending_non_ui_ = NULL; 77 pending_non_ui_ = NULL;
78 } 78 }
79 79
80 } // namespace internal 80 } // namespace internal
81 81
82 namespace { 82 namespace {
83 83
84 base::LazyInstance<internal::RequestDrawGLTracker> g_request_draw_gl_tracker = 84 base::LazyInstance<internal::RequestDrawGLTracker> g_request_draw_gl_tracker =
85 LAZY_INSTANCE_INITIALIZER; 85 LAZY_INSTANCE_INITIALIZER;
86 86
87 } 87 }
88 88
89 SharedRendererState::SharedRendererState( 89 RenderThreadManager::RenderThreadManager(
90 SharedRendererStateClient* client, 90 RenderThreadManagerClient* client,
91 const scoped_refptr<base::SingleThreadTaskRunner>& ui_loop) 91 const scoped_refptr<base::SingleThreadTaskRunner>& ui_loop)
92 : ui_loop_(ui_loop), 92 : ui_loop_(ui_loop),
93 client_(client), 93 client_(client),
94 renderer_manager_key_(GLViewRendererManager::GetInstance()->NullKey()), 94 renderer_manager_key_(GLViewRendererManager::GetInstance()->NullKey()),
95 hardware_renderer_has_frame_(false), 95 hardware_renderer_has_frame_(false),
96 inside_hardware_release_(false), 96 inside_hardware_release_(false),
97 weak_factory_on_ui_thread_(this) { 97 weak_factory_on_ui_thread_(this) {
98 DCHECK(ui_loop_->BelongsToCurrentThread()); 98 DCHECK(ui_loop_->BelongsToCurrentThread());
99 DCHECK(client_); 99 DCHECK(client_);
100 ui_thread_weak_ptr_ = weak_factory_on_ui_thread_.GetWeakPtr(); 100 ui_thread_weak_ptr_ = weak_factory_on_ui_thread_.GetWeakPtr();
101 ResetRequestDrawGLCallback(); 101 ResetRequestDrawGLCallback();
102 } 102 }
103 103
104 SharedRendererState::~SharedRendererState() { 104 RenderThreadManager::~RenderThreadManager() {
105 DCHECK(ui_loop_->BelongsToCurrentThread()); 105 DCHECK(ui_loop_->BelongsToCurrentThread());
106 DCHECK(!hardware_renderer_.get()); 106 DCHECK(!hardware_renderer_.get());
107 } 107 }
108 108
109 void SharedRendererState::ClientRequestDrawGL(bool for_idle) { 109 void RenderThreadManager::ClientRequestDrawGL(bool for_idle) {
110 if (ui_loop_->BelongsToCurrentThread()) { 110 if (ui_loop_->BelongsToCurrentThread()) {
111 if (!g_request_draw_gl_tracker.Get().ShouldRequestOnUiThread(this)) 111 if (!g_request_draw_gl_tracker.Get().ShouldRequestOnUiThread(this))
112 return; 112 return;
113 ClientRequestDrawGLOnUI(); 113 ClientRequestDrawGLOnUI();
114 } else { 114 } else {
115 if (!g_request_draw_gl_tracker.Get().ShouldRequestOnNonUiThread(this)) 115 if (!g_request_draw_gl_tracker.Get().ShouldRequestOnNonUiThread(this))
116 return; 116 return;
117 base::Closure callback; 117 base::Closure callback;
118 { 118 {
119 base::AutoLock lock(lock_); 119 base::AutoLock lock(lock_);
120 callback = request_draw_gl_closure_; 120 callback = request_draw_gl_closure_;
121 } 121 }
122 // 17ms is slightly longer than a frame, hoping that it will come 122 // 17ms is slightly longer than a frame, hoping that it will come
123 // after the next frame so that the idle work is taken care off by 123 // after the next frame so that the idle work is taken care off by
124 // the next frame instead. 124 // the next frame instead.
125 ui_loop_->PostDelayedTask( 125 ui_loop_->PostDelayedTask(
126 FROM_HERE, callback, 126 FROM_HERE, callback,
127 for_idle ? base::TimeDelta::FromMilliseconds(17) : base::TimeDelta()); 127 for_idle ? base::TimeDelta::FromMilliseconds(17) : base::TimeDelta());
128 } 128 }
129 } 129 }
130 130
131 void SharedRendererState::DidDrawGLProcess() { 131 void RenderThreadManager::DidDrawGLProcess() {
132 g_request_draw_gl_tracker.Get().ResetPending(); 132 g_request_draw_gl_tracker.Get().ResetPending();
133 } 133 }
134 134
135 void SharedRendererState::ResetRequestDrawGLCallback() { 135 void RenderThreadManager::ResetRequestDrawGLCallback() {
136 DCHECK(ui_loop_->BelongsToCurrentThread()); 136 DCHECK(ui_loop_->BelongsToCurrentThread());
137 base::AutoLock lock(lock_); 137 base::AutoLock lock(lock_);
138 request_draw_gl_cancelable_closure_.Reset(base::Bind( 138 request_draw_gl_cancelable_closure_.Reset(base::Bind(
139 &SharedRendererState::ClientRequestDrawGLOnUI, base::Unretained(this))); 139 &RenderThreadManager::ClientRequestDrawGLOnUI, base::Unretained(this)));
140 request_draw_gl_closure_ = request_draw_gl_cancelable_closure_.callback(); 140 request_draw_gl_closure_ = request_draw_gl_cancelable_closure_.callback();
141 } 141 }
142 142
143 void SharedRendererState::ClientRequestDrawGLOnUI() { 143 void RenderThreadManager::ClientRequestDrawGLOnUI() {
144 DCHECK(ui_loop_->BelongsToCurrentThread()); 144 DCHECK(ui_loop_->BelongsToCurrentThread());
145 ResetRequestDrawGLCallback(); 145 ResetRequestDrawGLCallback();
146 g_request_draw_gl_tracker.Get().SetQueuedFunctorOnUi(this); 146 g_request_draw_gl_tracker.Get().SetQueuedFunctorOnUi(this);
147 if (!client_->RequestDrawGL(false)) { 147 if (!client_->RequestDrawGL(false)) {
148 g_request_draw_gl_tracker.Get().ResetPending(); 148 g_request_draw_gl_tracker.Get().ResetPending();
149 LOG(ERROR) << "Failed to request GL process. Deadlock likely"; 149 LOG(ERROR) << "Failed to request GL process. Deadlock likely";
150 } 150 }
151 } 151 }
152 152
153 void SharedRendererState::UpdateParentDrawConstraintsOnUI() { 153 void RenderThreadManager::UpdateParentDrawConstraintsOnUI() {
154 DCHECK(ui_loop_->BelongsToCurrentThread()); 154 DCHECK(ui_loop_->BelongsToCurrentThread());
155 client_->OnParentDrawConstraintsUpdated(); 155 client_->OnParentDrawConstraintsUpdated();
156 } 156 }
157 157
158 void SharedRendererState::SetScrollOffsetOnUI(gfx::Vector2d scroll_offset) { 158 void RenderThreadManager::SetScrollOffsetOnUI(gfx::Vector2d scroll_offset) {
159 base::AutoLock lock(lock_); 159 base::AutoLock lock(lock_);
160 scroll_offset_ = scroll_offset; 160 scroll_offset_ = scroll_offset;
161 } 161 }
162 162
163 gfx::Vector2d SharedRendererState::GetScrollOffsetOnRT() { 163 gfx::Vector2d RenderThreadManager::GetScrollOffsetOnRT() {
164 base::AutoLock lock(lock_); 164 base::AutoLock lock(lock_);
165 return scroll_offset_; 165 return scroll_offset_;
166 } 166 }
167 167
168 void SharedRendererState::SetFrameOnUI(std::unique_ptr<ChildFrame> frame) { 168 void RenderThreadManager::SetFrameOnUI(std::unique_ptr<ChildFrame> frame) {
169 base::AutoLock lock(lock_); 169 base::AutoLock lock(lock_);
170 DCHECK(!child_frame_.get()); 170 DCHECK(!child_frame_.get());
171 child_frame_ = std::move(frame); 171 child_frame_ = std::move(frame);
172 } 172 }
173 173
174 std::unique_ptr<ChildFrame> SharedRendererState::PassFrameOnRT() { 174 std::unique_ptr<ChildFrame> RenderThreadManager::PassFrameOnRT() {
175 base::AutoLock lock(lock_); 175 base::AutoLock lock(lock_);
176 hardware_renderer_has_frame_ = 176 hardware_renderer_has_frame_ =
177 hardware_renderer_has_frame_ || child_frame_.get(); 177 hardware_renderer_has_frame_ || child_frame_.get();
178 return std::move(child_frame_); 178 return std::move(child_frame_);
179 } 179 }
180 180
181 std::unique_ptr<ChildFrame> SharedRendererState::PassUncommittedFrameOnUI() { 181 std::unique_ptr<ChildFrame> RenderThreadManager::PassUncommittedFrameOnUI() {
182 base::AutoLock lock(lock_); 182 base::AutoLock lock(lock_);
183 return std::move(child_frame_); 183 return std::move(child_frame_);
184 } 184 }
185 185
186 void SharedRendererState::PostExternalDrawConstraintsToChildCompositorOnRT( 186 void RenderThreadManager::PostExternalDrawConstraintsToChildCompositorOnRT(
187 const ParentCompositorDrawConstraints& parent_draw_constraints) { 187 const ParentCompositorDrawConstraints& parent_draw_constraints) {
188 { 188 {
189 base::AutoLock lock(lock_); 189 base::AutoLock lock(lock_);
190 parent_draw_constraints_ = parent_draw_constraints; 190 parent_draw_constraints_ = parent_draw_constraints;
191 } 191 }
192 192
193 // No need to hold the lock_ during the post task. 193 // No need to hold the lock_ during the post task.
194 ui_loop_->PostTask( 194 ui_loop_->PostTask(
195 FROM_HERE, 195 FROM_HERE,
196 base::Bind(&SharedRendererState::UpdateParentDrawConstraintsOnUI, 196 base::Bind(&RenderThreadManager::UpdateParentDrawConstraintsOnUI,
197 ui_thread_weak_ptr_)); 197 ui_thread_weak_ptr_));
198 } 198 }
199 199
200 ParentCompositorDrawConstraints 200 ParentCompositorDrawConstraints
201 SharedRendererState::GetParentDrawConstraintsOnUI() const { 201 RenderThreadManager::GetParentDrawConstraintsOnUI() const {
202 base::AutoLock lock(lock_); 202 base::AutoLock lock(lock_);
203 return parent_draw_constraints_; 203 return parent_draw_constraints_;
204 } 204 }
205 205
206 void SharedRendererState::SetInsideHardwareRelease(bool inside) { 206 void RenderThreadManager::SetInsideHardwareRelease(bool inside) {
207 base::AutoLock lock(lock_); 207 base::AutoLock lock(lock_);
208 inside_hardware_release_ = inside; 208 inside_hardware_release_ = inside;
209 } 209 }
210 210
211 bool SharedRendererState::IsInsideHardwareRelease() const { 211 bool RenderThreadManager::IsInsideHardwareRelease() const {
212 base::AutoLock lock(lock_); 212 base::AutoLock lock(lock_);
213 return inside_hardware_release_; 213 return inside_hardware_release_;
214 } 214 }
215 215
216 SharedRendererState::ReturnedResources::ReturnedResources() 216 RenderThreadManager::ReturnedResources::ReturnedResources()
217 : output_surface_id(0u) {} 217 : output_surface_id(0u) {}
218 218
219 SharedRendererState::ReturnedResources::~ReturnedResources() {} 219 RenderThreadManager::ReturnedResources::~ReturnedResources() {}
220 220
221 void SharedRendererState::InsertReturnedResourcesOnRT( 221 void RenderThreadManager::InsertReturnedResourcesOnRT(
222 const cc::ReturnedResourceArray& resources, 222 const cc::ReturnedResourceArray& resources,
223 uint32_t compositor_id, 223 uint32_t compositor_id,
224 uint32_t output_surface_id) { 224 uint32_t output_surface_id) {
225 base::AutoLock lock(lock_); 225 base::AutoLock lock(lock_);
226 ReturnedResources& returned_resources = 226 ReturnedResources& returned_resources =
227 returned_resources_map_[compositor_id]; 227 returned_resources_map_[compositor_id];
228 if (returned_resources.output_surface_id != output_surface_id) { 228 if (returned_resources.output_surface_id != output_surface_id) {
229 returned_resources.resources.clear(); 229 returned_resources.resources.clear();
230 } 230 }
231 returned_resources.resources.insert(returned_resources.resources.end(), 231 returned_resources.resources.insert(returned_resources.resources.end(),
232 resources.begin(), resources.end()); 232 resources.begin(), resources.end());
233 returned_resources.output_surface_id = output_surface_id; 233 returned_resources.output_surface_id = output_surface_id;
234 } 234 }
235 235
236 void SharedRendererState::SwapReturnedResourcesOnUI( 236 void RenderThreadManager::SwapReturnedResourcesOnUI(
237 ReturnedResourcesMap* returned_resource_map) { 237 ReturnedResourcesMap* returned_resource_map) {
238 DCHECK(returned_resource_map->empty()); 238 DCHECK(returned_resource_map->empty());
239 base::AutoLock lock(lock_); 239 base::AutoLock lock(lock_);
240 returned_resource_map->swap(returned_resources_map_); 240 returned_resource_map->swap(returned_resources_map_);
241 } 241 }
242 242
243 bool SharedRendererState::ReturnedResourcesEmptyOnUI() const { 243 bool RenderThreadManager::ReturnedResourcesEmptyOnUI() const {
244 base::AutoLock lock(lock_); 244 base::AutoLock lock(lock_);
245 return returned_resources_map_.empty(); 245 return returned_resources_map_.empty();
246 } 246 }
247 247
248 void SharedRendererState::DrawGL(AwDrawGLInfo* draw_info) { 248 void RenderThreadManager::DrawGL(AwDrawGLInfo* draw_info) {
249 TRACE_EVENT0("android_webview", "DrawFunctor"); 249 TRACE_EVENT0("android_webview", "DrawFunctor");
250 if (draw_info->mode == AwDrawGLInfo::kModeSync) { 250 if (draw_info->mode == AwDrawGLInfo::kModeSync) {
251 TRACE_EVENT_INSTANT0("android_webview", "kModeSync", 251 TRACE_EVENT_INSTANT0("android_webview", "kModeSync",
252 TRACE_EVENT_SCOPE_THREAD); 252 TRACE_EVENT_SCOPE_THREAD);
253 if (hardware_renderer_) 253 if (hardware_renderer_)
254 hardware_renderer_->CommitFrame(); 254 hardware_renderer_->CommitFrame();
255 return; 255 return;
256 } 256 }
257 257
258 // kModeProcessNoContext should never happen because we tear down hardware 258 // kModeProcessNoContext should never happen because we tear down hardware
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
307 if (draw_info->mode == AwDrawGLInfo::kModeProcess) { 307 if (draw_info->mode == AwDrawGLInfo::kModeProcess) {
308 DeferredGpuCommandService::GetInstance()->PerformIdleWork(true); 308 DeferredGpuCommandService::GetInstance()->PerformIdleWork(true);
309 } 309 }
310 return; 310 return;
311 } 311 }
312 312
313 hardware_renderer_->DrawGL(draw_info, state_restore); 313 hardware_renderer_->DrawGL(draw_info, state_restore);
314 DeferredGpuCommandService::GetInstance()->PerformIdleWork(false); 314 DeferredGpuCommandService::GetInstance()->PerformIdleWork(false);
315 } 315 }
316 316
317 void SharedRendererState::DeleteHardwareRendererOnUI() { 317 void RenderThreadManager::DeleteHardwareRendererOnUI() {
318 DCHECK(ui_loop_->BelongsToCurrentThread()); 318 DCHECK(ui_loop_->BelongsToCurrentThread());
319 319
320 InsideHardwareReleaseReset auto_inside_hardware_release_reset(this); 320 InsideHardwareReleaseReset auto_inside_hardware_release_reset(this);
321 321
322 client_->DetachFunctorFromView(); 322 client_->DetachFunctorFromView();
323 323
324 // If the WebView gets onTrimMemory >= MODERATE twice in a row, the 2nd 324 // If the WebView gets onTrimMemory >= MODERATE twice in a row, the 2nd
325 // onTrimMemory will result in an unnecessary Render Thread DrawGL call. 325 // onTrimMemory will result in an unnecessary Render Thread DrawGL call.
326 bool hardware_initialized = HasFrameOnUI(); 326 bool hardware_initialized = HasFrameOnUI();
327 if (hardware_initialized) { 327 if (hardware_initialized) {
(...skipping 16 matching lines...) Expand all
344 renderer_manager_key_ = manager->NullKey(); 344 renderer_manager_key_ = manager->NullKey();
345 } 345 }
346 } 346 }
347 347
348 if (hardware_initialized) { 348 if (hardware_initialized) {
349 // Flush any invoke functors that's caused by ReleaseHardware. 349 // Flush any invoke functors that's caused by ReleaseHardware.
350 client_->RequestDrawGL(true); 350 client_->RequestDrawGL(true);
351 } 351 }
352 } 352 }
353 353
354 bool SharedRendererState::HasFrameOnUI() const { 354 bool RenderThreadManager::HasFrameOnUI() const {
355 base::AutoLock lock(lock_); 355 base::AutoLock lock(lock_);
356 return hardware_renderer_has_frame_ || child_frame_.get(); 356 return hardware_renderer_has_frame_ || child_frame_.get();
357 } 357 }
358 358
359 void SharedRendererState::InitializeHardwareDrawIfNeededOnUI() { 359 void RenderThreadManager::InitializeHardwareDrawIfNeededOnUI() {
360 DCHECK(ui_loop_->BelongsToCurrentThread()); 360 DCHECK(ui_loop_->BelongsToCurrentThread());
361 GLViewRendererManager* manager = GLViewRendererManager::GetInstance(); 361 GLViewRendererManager* manager = GLViewRendererManager::GetInstance();
362 362
363 base::AutoLock lock(lock_); 363 base::AutoLock lock(lock_);
364 if (renderer_manager_key_ == manager->NullKey()) { 364 if (renderer_manager_key_ == manager->NullKey()) {
365 renderer_manager_key_ = manager->PushBack(this); 365 renderer_manager_key_ = manager->PushBack(this);
366 } 366 }
367 } 367 }
368 368
369 SharedRendererState::InsideHardwareReleaseReset::InsideHardwareReleaseReset( 369 RenderThreadManager::InsideHardwareReleaseReset::InsideHardwareReleaseReset(
370 SharedRendererState* shared_renderer_state) 370 RenderThreadManager* render_thread_manager)
371 : shared_renderer_state_(shared_renderer_state) { 371 : render_thread_manager_(render_thread_manager) {
372 DCHECK(!shared_renderer_state_->IsInsideHardwareRelease()); 372 DCHECK(!render_thread_manager_->IsInsideHardwareRelease());
373 shared_renderer_state_->SetInsideHardwareRelease(true); 373 render_thread_manager_->SetInsideHardwareRelease(true);
374 } 374 }
375 375
376 SharedRendererState::InsideHardwareReleaseReset::~InsideHardwareReleaseReset() { 376 RenderThreadManager::InsideHardwareReleaseReset::~InsideHardwareReleaseReset() {
377 shared_renderer_state_->SetInsideHardwareRelease(false); 377 render_thread_manager_->SetInsideHardwareRelease(false);
378 } 378 }
379 379
380 } // namespace android_webview 380 } // namespace android_webview
OLDNEW
« no previous file with comments | « android_webview/browser/render_thread_manager.h ('k') | android_webview/browser/render_thread_manager_client.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698