| OLD | NEW |
| 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/browser_view_renderer.h" | 5 #include "android_webview/browser/browser_view_renderer.h" |
| 6 | 6 |
| 7 #include "android_webview/browser/browser_view_renderer_client.h" | 7 #include "android_webview/browser/browser_view_renderer_client.h" |
| 8 #include "android_webview/browser/shared_renderer_state.h" | 8 #include "android_webview/browser/shared_renderer_state.h" |
| 9 #include "android_webview/common/aw_switches.h" | 9 #include "android_webview/common/aw_switches.h" |
| 10 #include "android_webview/public/browser/draw_gl.h" | 10 #include "android_webview/public/browser/draw_gl.h" |
| (...skipping 222 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 233 return OnDrawSoftware(java_canvas); | 233 return OnDrawSoftware(java_canvas); |
| 234 } | 234 } |
| 235 | 235 |
| 236 bool BrowserViewRenderer::OnDrawHardware(jobject java_canvas) { | 236 bool BrowserViewRenderer::OnDrawHardware(jobject java_canvas) { |
| 237 if (!compositor_) | 237 if (!compositor_) |
| 238 return false; | 238 return false; |
| 239 | 239 |
| 240 if (!hardware_enabled_) { | 240 if (!hardware_enabled_) { |
| 241 hardware_enabled_ = compositor_->InitializeHwDraw(); | 241 hardware_enabled_ = compositor_->InitializeHwDraw(); |
| 242 if (hardware_enabled_) { | 242 if (hardware_enabled_) { |
| 243 tile_manager_key_ = GlobalTileManager::GetInstance()->PushBack(this); |
| 243 gpu::GLInProcessContext* share_context = compositor_->GetShareContext(); | 244 gpu::GLInProcessContext* share_context = compositor_->GetShareContext(); |
| 244 DCHECK(share_context); | 245 DCHECK(share_context); |
| 245 shared_renderer_state_->SetSharedContext(share_context); | 246 shared_renderer_state_->SetSharedContext(share_context); |
| 246 } | 247 } |
| 247 } | 248 } |
| 248 if (!hardware_enabled_) | 249 if (!hardware_enabled_) |
| 249 return false; | 250 return false; |
| 250 | 251 |
| 251 ReturnResourceFromParent(); | 252 ReturnResourceFromParent(); |
| 252 SynchronousCompositorMemoryPolicy new_policy = CalculateDesiredMemoryPolicy(); | 253 SynchronousCompositorMemoryPolicy new_policy = CalculateDesiredMemoryPolicy(); |
| (...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 397 void BrowserViewRenderer::OnAttachedToWindow(int width, int height) { | 398 void BrowserViewRenderer::OnAttachedToWindow(int width, int height) { |
| 398 TRACE_EVENT2("android_webview", | 399 TRACE_EVENT2("android_webview", |
| 399 "BrowserViewRenderer::OnAttachedToWindow", | 400 "BrowserViewRenderer::OnAttachedToWindow", |
| 400 "width", | 401 "width", |
| 401 width, | 402 width, |
| 402 "height", | 403 "height", |
| 403 height); | 404 height); |
| 404 attached_to_window_ = true; | 405 attached_to_window_ = true; |
| 405 width_ = width; | 406 width_ = width; |
| 406 height_ = height; | 407 height_ = height; |
| 407 tile_manager_key_ = GlobalTileManager::GetInstance()->PushBack(this); | |
| 408 } | 408 } |
| 409 | 409 |
| 410 void BrowserViewRenderer::OnDetachedFromWindow() { | 410 void BrowserViewRenderer::OnDetachedFromWindow() { |
| 411 TRACE_EVENT0("android_webview", "BrowserViewRenderer::OnDetachedFromWindow"); | 411 TRACE_EVENT0("android_webview", "BrowserViewRenderer::OnDetachedFromWindow"); |
| 412 attached_to_window_ = false; | 412 attached_to_window_ = false; |
| 413 if (hardware_enabled_) { | 413 DCHECK(!hardware_enabled_); |
| 414 ReturnUnusedResource(shared_renderer_state_->PassDrawGLInput()); | 414 } |
| 415 ReturnResourceFromParent(); | |
| 416 DCHECK(shared_renderer_state_->ReturnedResourcesEmpty()); | |
| 417 | 415 |
| 418 compositor_->ReleaseHwDraw(); | 416 void BrowserViewRenderer::ReleaseHardware() { |
| 419 shared_renderer_state_->SetSharedContext(NULL); | 417 DCHECK(hardware_enabled_); |
| 420 hardware_enabled_ = false; | 418 ReturnUnusedResource(shared_renderer_state_->PassDrawGLInput()); |
| 421 } | 419 ReturnResourceFromParent(); |
| 420 DCHECK(shared_renderer_state_->ReturnedResourcesEmpty()); |
| 421 |
| 422 compositor_->ReleaseHwDraw(); |
| 423 shared_renderer_state_->SetSharedContext(NULL); |
| 424 hardware_enabled_ = false; |
| 425 |
| 422 SynchronousCompositorMemoryPolicy zero_policy; | 426 SynchronousCompositorMemoryPolicy zero_policy; |
| 423 RequestMemoryPolicy(zero_policy); | 427 RequestMemoryPolicy(zero_policy); |
| 424 GlobalTileManager::GetInstance()->Remove(tile_manager_key_); | 428 GlobalTileManager::GetInstance()->Remove(tile_manager_key_); |
| 425 // The hardware resources are released in the destructor of hardware renderer, | |
| 426 // so we don't need to do it here. | |
| 427 // See AwContents::ReleaseHardwareDrawOnRenderThread(JNIEnv*, jobject). | |
| 428 } | 429 } |
| 429 | 430 |
| 430 bool BrowserViewRenderer::IsVisible() const { | 431 bool BrowserViewRenderer::IsVisible() const { |
| 431 // Ignore |window_visible_| if |attached_to_window_| is false. | 432 // Ignore |window_visible_| if |attached_to_window_| is false. |
| 432 return view_visible_ && (!attached_to_window_ || window_visible_); | 433 return view_visible_ && (!attached_to_window_ || window_visible_); |
| 433 } | 434 } |
| 434 | 435 |
| 435 gfx::Rect BrowserViewRenderer::GetScreenRect() const { | 436 gfx::Rect BrowserViewRenderer::GetScreenRect() const { |
| 436 return gfx::Rect(client_->GetLocationOnScreen(), gfx::Size(width_, height_)); | 437 return gfx::Rect(client_->GetLocationOnScreen(), gfx::Size(width_, height_)); |
| 437 } | 438 } |
| (...skipping 313 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 751 base::StringAppendF(&str, | 752 base::StringAppendF(&str, |
| 752 "surface width height: [%d %d] ", | 753 "surface width height: [%d %d] ", |
| 753 draw_info->width, | 754 draw_info->width, |
| 754 draw_info->height); | 755 draw_info->height); |
| 755 base::StringAppendF(&str, "is_layer: %d ", draw_info->is_layer); | 756 base::StringAppendF(&str, "is_layer: %d ", draw_info->is_layer); |
| 756 } | 757 } |
| 757 return str; | 758 return str; |
| 758 } | 759 } |
| 759 | 760 |
| 760 } // namespace android_webview | 761 } // namespace android_webview |
| OLD | NEW |