summaryrefslogtreecommitdiffstats
path: root/cc/output/software_renderer.cc
diff options
context:
space:
mode:
authorreed@google.com <reed@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2014-02-27 04:24:09 +0000
committerreed@google.com <reed@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2014-02-27 04:24:09 +0000
commitfdf93ecf35b0ad0647ca1ba4d9b4e972e966fe7b (patch)
tree835944ed7c6e92ea55c2f3cdb2ec379bbad1010f /cc/output/software_renderer.cc
parent868680fa9e633e2191c3507445f890b5da0e5b38 (diff)
downloadchromium_src-fdf93ecf35b0ad0647ca1ba4d9b4e972e966fe7b.zip
chromium_src-fdf93ecf35b0ad0647ca1ba4d9b4e972e966fe7b.tar.gz
chromium_src-fdf93ecf35b0ad0647ca1ba4d9b4e972e966fe7b.tar.bz2
don't explicitly create SkDevice, as it is intended to be private. Skia now has ways to create a canvas that completely hide the impl-details of SkDevice and its subclasses (mostly).
BUG=skia:1931 Review URL: https://codereview.chromium.org/137833013 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@253714 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'cc/output/software_renderer.cc')
-rw-r--r--cc/output/software_renderer.cc30
1 files changed, 13 insertions, 17 deletions
diff --git a/cc/output/software_renderer.cc b/cc/output/software_renderer.cc
index 3a27388..73d974b 100644
--- a/cc/output/software_renderer.cc
+++ b/cc/output/software_renderer.cc
@@ -177,8 +177,8 @@ void SoftwareRenderer::EnsureScissorTestDisabled() {
// clipRect on the current SkCanvas. This is done by setting clipRect to
// the viewport's dimensions.
is_scissor_enabled_ = false;
- SkBaseDevice* device = current_canvas_->getDevice();
- SetClipRect(gfx::Rect(device->width(), device->height()));
+ SkISize size = current_canvas_->getDeviceSize();
+ SetClipRect(gfx::Rect(size.width(), size.height()));
}
void SoftwareRenderer::Finish() {}
@@ -525,21 +525,17 @@ void SoftwareRenderer::DrawRenderPassQuad(const DrawingFrame* frame,
// TODO(ajuma): Apply the filter in the same pass as the content where
// possible (e.g. when there's no origin offset). See crbug.com/308201.
if (filter) {
- bool is_opaque = false;
- skia::RefPtr<SkBaseDevice> device =
- skia::AdoptRef(new SkBitmapDevice(SkBitmap::kARGB_8888_Config,
- content_texture->size().width(),
- content_texture->size().height(),
- is_opaque));
- SkCanvas canvas(device.get());
- SkPaint paint;
- paint.setImageFilter(filter.get());
- canvas.clear(SK_ColorTRANSPARENT);
- canvas.translate(SkIntToScalar(-quad->rect.origin().x()),
- SkIntToScalar(-quad->rect.origin().y()));
- canvas.drawSprite(*content, 0, 0, &paint);
- bool will_change_pixels = false;
- filter_bitmap = device->accessBitmap(will_change_pixels);
+ SkImageInfo info = SkImageInfo::MakeN32Premul(
+ content_texture->size().width(), content_texture->size().height());
+ if (filter_bitmap.allocPixels(info)) {
+ SkCanvas canvas(filter_bitmap);
+ SkPaint paint;
+ paint.setImageFilter(filter.get());
+ canvas.clear(SK_ColorTRANSPARENT);
+ canvas.translate(SkIntToScalar(-quad->rect.origin().x()),
+ SkIntToScalar(-quad->rect.origin().y()));
+ canvas.drawSprite(*content, 0, 0, &paint);
+ }
}
}