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

Side by Side Diff: cc/output/software_renderer.cc

Issue 1866203004: Convert //cc from scoped_ptr to std::unique_ptr. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: scopedptrcc: 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
« no previous file with comments | « cc/output/software_renderer.h ('k') | cc/output/software_renderer_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 2012 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 "cc/output/software_renderer.h" 5 #include "cc/output/software_renderer.h"
6 6
7 #include "base/memory/ptr_util.h"
7 #include "base/trace_event/trace_event.h" 8 #include "base/trace_event/trace_event.h"
8 #include "cc/base/math_util.h" 9 #include "cc/base/math_util.h"
9 #include "cc/output/compositor_frame.h" 10 #include "cc/output/compositor_frame.h"
10 #include "cc/output/compositor_frame_ack.h" 11 #include "cc/output/compositor_frame_ack.h"
11 #include "cc/output/compositor_frame_metadata.h" 12 #include "cc/output/compositor_frame_metadata.h"
12 #include "cc/output/copy_output_request.h" 13 #include "cc/output/copy_output_request.h"
13 #include "cc/output/output_surface.h" 14 #include "cc/output/output_surface.h"
14 #include "cc/output/render_surface_filters.h" 15 #include "cc/output/render_surface_filters.h"
15 #include "cc/output/software_output_device.h" 16 #include "cc/output/software_output_device.h"
16 #include "cc/quads/debug_border_draw_quad.h" 17 #include "cc/quads/debug_border_draw_quad.h"
(...skipping 27 matching lines...) Expand all
44 IsScalarNearlyInteger(matrix[SkMatrix::kMTransY]) && 45 IsScalarNearlyInteger(matrix[SkMatrix::kMTransY]) &&
45 SkScalarNearlyZero(matrix[SkMatrix::kMSkewX]) && 46 SkScalarNearlyZero(matrix[SkMatrix::kMSkewX]) &&
46 SkScalarNearlyZero(matrix[SkMatrix::kMSkewY]) && 47 SkScalarNearlyZero(matrix[SkMatrix::kMSkewY]) &&
47 SkScalarNearlyZero(matrix[SkMatrix::kMPersp0]) && 48 SkScalarNearlyZero(matrix[SkMatrix::kMPersp0]) &&
48 SkScalarNearlyZero(matrix[SkMatrix::kMPersp1]) && 49 SkScalarNearlyZero(matrix[SkMatrix::kMPersp1]) &&
49 SkScalarNearlyZero(matrix[SkMatrix::kMPersp2] - 1.0f); 50 SkScalarNearlyZero(matrix[SkMatrix::kMPersp2] - 1.0f);
50 } 51 }
51 52
52 } // anonymous namespace 53 } // anonymous namespace
53 54
54 scoped_ptr<SoftwareRenderer> SoftwareRenderer::Create( 55 std::unique_ptr<SoftwareRenderer> SoftwareRenderer::Create(
55 RendererClient* client, 56 RendererClient* client,
56 const RendererSettings* settings, 57 const RendererSettings* settings,
57 OutputSurface* output_surface, 58 OutputSurface* output_surface,
58 ResourceProvider* resource_provider) { 59 ResourceProvider* resource_provider) {
59 return make_scoped_ptr(new SoftwareRenderer( 60 return base::WrapUnique(new SoftwareRenderer(client, settings, output_surface,
60 client, settings, output_surface, resource_provider)); 61 resource_provider));
61 } 62 }
62 63
63 SoftwareRenderer::SoftwareRenderer(RendererClient* client, 64 SoftwareRenderer::SoftwareRenderer(RendererClient* client,
64 const RendererSettings* settings, 65 const RendererSettings* settings,
65 OutputSurface* output_surface, 66 OutputSurface* output_surface,
66 ResourceProvider* resource_provider) 67 ResourceProvider* resource_provider)
67 : DirectRenderer(client, settings, output_surface, resource_provider), 68 : DirectRenderer(client, settings, output_surface, resource_provider),
68 is_scissor_enabled_(false), 69 is_scissor_enabled_(false),
69 is_backbuffer_discarded_(false), 70 is_backbuffer_discarded_(false),
70 output_device_(output_surface->software_device()), 71 output_device_(output_surface->software_device()),
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
142 } 143 }
143 144
144 bool SoftwareRenderer::BindFramebufferToTexture( 145 bool SoftwareRenderer::BindFramebufferToTexture(
145 DrawingFrame* frame, 146 DrawingFrame* frame,
146 const ScopedResource* texture) { 147 const ScopedResource* texture) {
147 DCHECK(texture->id()); 148 DCHECK(texture->id());
148 149
149 // Explicitly release lock, otherwise we can crash when try to lock 150 // Explicitly release lock, otherwise we can crash when try to lock
150 // same texture again. 151 // same texture again.
151 current_framebuffer_lock_ = nullptr; 152 current_framebuffer_lock_ = nullptr;
152 current_framebuffer_lock_ = make_scoped_ptr( 153 current_framebuffer_lock_ =
153 new ResourceProvider::ScopedWriteLockSoftware( 154 base::WrapUnique(new ResourceProvider::ScopedWriteLockSoftware(
154 resource_provider_, texture->id())); 155 resource_provider_, texture->id()));
155 current_framebuffer_canvas_ = 156 current_framebuffer_canvas_ =
156 skia::AdoptRef(new SkCanvas(current_framebuffer_lock_->sk_bitmap())); 157 skia::AdoptRef(new SkCanvas(current_framebuffer_lock_->sk_bitmap()));
157 current_canvas_ = current_framebuffer_canvas_.get(); 158 current_canvas_ = current_framebuffer_canvas_.get();
158 return true; 159 return true;
159 } 160 }
160 161
161 void SoftwareRenderer::SetScissorTestRect(const gfx::Rect& scissor_rect) { 162 void SoftwareRenderer::SetScissorTestRect(const gfx::Rect& scissor_rect) {
162 is_scissor_enabled_ = true; 163 is_scissor_enabled_ = true;
163 scissor_rect_ = scissor_rect; 164 scissor_rect_ = scissor_rect;
(...skipping 345 matching lines...) Expand 10 before | Expand all | Expand 10 after
509 sk_sp<SkShader> shader; 510 sk_sp<SkShader> shader;
510 if (!filter_image) { 511 if (!filter_image) {
511 shader = 512 shader =
512 SkShader::MakeBitmapShader(*content, SkShader::kClamp_TileMode, 513 SkShader::MakeBitmapShader(*content, SkShader::kClamp_TileMode,
513 SkShader::kClamp_TileMode, &content_mat); 514 SkShader::kClamp_TileMode, &content_mat);
514 } else { 515 } else {
515 shader = filter_image->makeShader(SkShader::kClamp_TileMode, 516 shader = filter_image->makeShader(SkShader::kClamp_TileMode,
516 SkShader::kClamp_TileMode, &content_mat); 517 SkShader::kClamp_TileMode, &content_mat);
517 } 518 }
518 519
519 scoped_ptr<ResourceProvider::ScopedReadLockSoftware> mask_lock; 520 std::unique_ptr<ResourceProvider::ScopedReadLockSoftware> mask_lock;
520 if (quad->mask_resource_id()) { 521 if (quad->mask_resource_id()) {
521 mask_lock = scoped_ptr<ResourceProvider::ScopedReadLockSoftware>( 522 mask_lock = std::unique_ptr<ResourceProvider::ScopedReadLockSoftware>(
522 new ResourceProvider::ScopedReadLockSoftware(resource_provider_, 523 new ResourceProvider::ScopedReadLockSoftware(resource_provider_,
523 quad->mask_resource_id())); 524 quad->mask_resource_id()));
524 525
525 if (!mask_lock->valid()) 526 if (!mask_lock->valid())
526 return; 527 return;
527 528
528 const SkBitmap* mask = mask_lock->sk_bitmap(); 529 const SkBitmap* mask = mask_lock->sk_bitmap();
529 530
530 // Scale normalized uv rect into absolute texel coordinates. 531 // Scale normalized uv rect into absolute texel coordinates.
531 SkRect mask_rect = 532 SkRect mask_rect =
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
567 #else 568 #else
568 current_paint_.setColor(SK_ColorMAGENTA); 569 current_paint_.setColor(SK_ColorMAGENTA);
569 #endif 570 #endif
570 current_paint_.setAlpha(quad->shared_quad_state->opacity * 255); 571 current_paint_.setAlpha(quad->shared_quad_state->opacity * 255);
571 current_canvas_->drawRect(gfx::RectFToSkRect(QuadVertexRect()), 572 current_canvas_->drawRect(gfx::RectFToSkRect(QuadVertexRect()),
572 current_paint_); 573 current_paint_);
573 } 574 }
574 575
575 void SoftwareRenderer::CopyCurrentRenderPassToBitmap( 576 void SoftwareRenderer::CopyCurrentRenderPassToBitmap(
576 DrawingFrame* frame, 577 DrawingFrame* frame,
577 scoped_ptr<CopyOutputRequest> request) { 578 std::unique_ptr<CopyOutputRequest> request) {
578 gfx::Rect copy_rect = frame->current_render_pass->output_rect; 579 gfx::Rect copy_rect = frame->current_render_pass->output_rect;
579 if (request->has_area()) 580 if (request->has_area())
580 copy_rect.Intersect(request->area()); 581 copy_rect.Intersect(request->area());
581 gfx::Rect window_copy_rect = MoveFromDrawToWindowSpace(frame, copy_rect); 582 gfx::Rect window_copy_rect = MoveFromDrawToWindowSpace(frame, copy_rect);
582 583
583 scoped_ptr<SkBitmap> bitmap(new SkBitmap); 584 std::unique_ptr<SkBitmap> bitmap(new SkBitmap);
584 bitmap->setInfo(SkImageInfo::MakeN32Premul(window_copy_rect.width(), 585 bitmap->setInfo(SkImageInfo::MakeN32Premul(window_copy_rect.width(),
585 window_copy_rect.height())); 586 window_copy_rect.height()));
586 current_canvas_->readPixels( 587 current_canvas_->readPixels(
587 bitmap.get(), window_copy_rect.x(), window_copy_rect.y()); 588 bitmap.get(), window_copy_rect.x(), window_copy_rect.y());
588 589
589 request->SendBitmapResult(std::move(bitmap)); 590 request->SendBitmapResult(std::move(bitmap));
590 } 591 }
591 592
592 void SoftwareRenderer::DiscardBackbuffer() { 593 void SoftwareRenderer::DiscardBackbuffer() {
593 if (is_backbuffer_discarded_) 594 if (is_backbuffer_discarded_)
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after
714 ApplyImageFilter(filter.get(), quad, &backdrop_bitmap); 715 ApplyImageFilter(filter.get(), quad, &backdrop_bitmap);
715 716
716 if (!filter_backdrop_image) 717 if (!filter_backdrop_image)
717 return nullptr; 718 return nullptr;
718 719
719 return filter_backdrop_image->makeShader(content_tile_mode, content_tile_mode, 720 return filter_backdrop_image->makeShader(content_tile_mode, content_tile_mode,
720 &filter_backdrop_transform); 721 &filter_backdrop_transform);
721 } 722 }
722 723
723 } // namespace cc 724 } // namespace cc
OLDNEW
« no previous file with comments | « cc/output/software_renderer.h ('k') | cc/output/software_renderer_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698