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

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

Issue 653173004: Part 2: WIP Refactor Webview graphics related code (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: review Created 6 years, 1 month 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/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 "base/auto_reset.h" 10 #include "base/auto_reset.h"
(...skipping 313 matching lines...) Expand 10 before | Expand all | Expand 10 after
324 if (compositor_ && !frame_ack.resources.empty()) { 324 if (compositor_ && !frame_ack.resources.empty()) {
325 compositor_->ReturnResources(frame_ack); 325 compositor_->ReturnResources(frame_ack);
326 } 326 }
327 } 327 }
328 328
329 void BrowserViewRenderer::DidSkipCommitFrame() { 329 void BrowserViewRenderer::DidSkipCommitFrame() {
330 // Treat it the same way as skipping onDraw. 330 // Treat it the same way as skipping onDraw.
331 DidSkipCompositeInDraw(); 331 DidSkipCompositeInDraw();
332 } 332 }
333 333
334 void BrowserViewRenderer::InvalidateOnFunctorDestroy() {
335 client_->InvalidateOnFunctorDestroy();
336 }
337
334 bool BrowserViewRenderer::OnDrawSoftware(jobject java_canvas) { 338 bool BrowserViewRenderer::OnDrawSoftware(jobject java_canvas) {
335 if (!compositor_) { 339 if (!compositor_) {
336 TRACE_EVENT_INSTANT0( 340 TRACE_EVENT_INSTANT0(
337 "android_webview", "EarlyOut_NoCompositor", TRACE_EVENT_SCOPE_THREAD); 341 "android_webview", "EarlyOut_NoCompositor", TRACE_EVENT_SCOPE_THREAD);
338 return false; 342 return false;
339 } 343 }
340 344
341 // TODO(hush): right now webview size is passed in as the auxiliary bitmap 345 // TODO(hush): right now webview size is passed in as the auxiliary bitmap
342 // size, which might hurt performace (only for software draws with auxiliary 346 // size, which might hurt performace (only for software draws with auxiliary
343 // bitmap). For better performance, get global visible rect, transform it 347 // bitmap). For better performance, get global visible rect, transform it
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
446 } 450 }
447 451
448 void BrowserViewRenderer::OnDetachedFromWindow() { 452 void BrowserViewRenderer::OnDetachedFromWindow() {
449 TRACE_EVENT0("android_webview", "BrowserViewRenderer::OnDetachedFromWindow"); 453 TRACE_EVENT0("android_webview", "BrowserViewRenderer::OnDetachedFromWindow");
450 attached_to_window_ = false; 454 attached_to_window_ = false;
451 DCHECK(!hardware_enabled_); 455 DCHECK(!hardware_enabled_);
452 } 456 }
453 457
454 void BrowserViewRenderer::ReleaseHardware() { 458 void BrowserViewRenderer::ReleaseHardware() {
455 DCHECK(hardware_enabled_); 459 DCHECK(hardware_enabled_);
456 // TODO(hush): do this in somewhere else. Either in hardware render or in 460 ReturnUnusedResource(shared_renderer_state_.PassUncommittedFrameOnUI());
457 // shared renderer state.
458 ReturnUnusedResource(shared_renderer_state_.PassCompositorFrame());
459 ReturnResourceFromParent(); 461 ReturnResourceFromParent();
460 DCHECK(shared_renderer_state_.ReturnedResourcesEmpty()); 462 DCHECK(shared_renderer_state_.ReturnedResourcesEmptyOnUI());
461 463
462 if (compositor_) { 464 if (compositor_) {
463 compositor_->ReleaseHwDraw(); 465 compositor_->ReleaseHwDraw();
464 SynchronousCompositorMemoryPolicy zero_policy; 466 SynchronousCompositorMemoryPolicy zero_policy;
465 RequestMemoryPolicy(zero_policy); 467 RequestMemoryPolicy(zero_policy);
466 } 468 }
467 469
468 hardware_enabled_ = false; 470 hardware_enabled_ = false;
469 GlobalTileManager::GetInstance()->Remove(tile_manager_key_); 471 GlobalTileManager::GetInstance()->Remove(tile_manager_key_);
470 } 472 }
(...skipping 276 matching lines...) Expand 10 before | Expand all | Expand 10 after
747 "compositor_needs_continuous_invalidate_", 749 "compositor_needs_continuous_invalidate_",
748 compositor_needs_continuous_invalidate_); 750 compositor_needs_continuous_invalidate_);
749 751
750 // This should only be called if OnDraw or DrawGL did not come in time, which 752 // This should only be called if OnDraw or DrawGL did not come in time, which
751 // means block_invalidates_ must still be true. 753 // means block_invalidates_ must still be true.
752 DCHECK(block_invalidates_); 754 DCHECK(block_invalidates_);
753 fallback_tick_pending_ = false; 755 fallback_tick_pending_ = false;
754 if (compositor_needs_continuous_invalidate_ && compositor_) { 756 if (compositor_needs_continuous_invalidate_ && compositor_) {
755 if (hardware_enabled_) { 757 if (hardware_enabled_) {
756 ReturnResourceFromParent(); 758 ReturnResourceFromParent();
757 ReturnUnusedResource(shared_renderer_state_.PassCompositorFrame()); 759 ReturnUnusedResource(shared_renderer_state_.PassUncommittedFrameOnUI());
758 scoped_ptr<cc::CompositorFrame> frame = CompositeHw(); 760 scoped_ptr<cc::CompositorFrame> frame = CompositeHw();
759 if (frame.get()) { 761 if (frame.get()) {
760 shared_renderer_state_.SetCompositorFrameOnUI(frame.Pass(), true); 762 shared_renderer_state_.SetCompositorFrameOnUI(frame.Pass(), true);
761 } 763 }
762 } else { 764 } else {
763 ForceFakeCompositeSW(); 765 ForceFakeCompositeSW();
764 } 766 }
765 } else { 767 } else {
766 // Pretend we just composited to unblock further invalidates. 768 // Pretend we just composited to unblock further invalidates.
767 DidComposite(); 769 DidComposite();
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
819 base::StringAppendF(&str, 821 base::StringAppendF(&str,
820 "overscroll_rounding_error_: %s ", 822 "overscroll_rounding_error_: %s ",
821 overscroll_rounding_error_.ToString().c_str()); 823 overscroll_rounding_error_.ToString().c_str());
822 base::StringAppendF( 824 base::StringAppendF(
823 &str, "on_new_picture_enable: %d ", on_new_picture_enable_); 825 &str, "on_new_picture_enable: %d ", on_new_picture_enable_);
824 base::StringAppendF(&str, "clear_view: %d ", clear_view_); 826 base::StringAppendF(&str, "clear_view: %d ", clear_view_);
825 return str; 827 return str;
826 } 828 }
827 829
828 } // namespace android_webview 830 } // namespace android_webview
OLDNEW
« no previous file with comments | « android_webview/browser/browser_view_renderer.h ('k') | android_webview/browser/browser_view_renderer_client.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698