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

Unified Diff: cc/raster/tile_task_worker_pool.cc

Issue 1799883002: cc: Refactor SkipImageCanvas and create it during playback. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 9 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 side-by-side diff with in-line comments
Download patch
Index: cc/raster/tile_task_worker_pool.cc
diff --git a/cc/raster/tile_task_worker_pool.cc b/cc/raster/tile_task_worker_pool.cc
index 09051cff221addb0efb51ebb5ae7cc57598b921f..263720d79f53ebd965a754afb47a48b18ff5db8b 100644
--- a/cc/raster/tile_task_worker_pool.cc
+++ b/cc/raster/tile_task_worker_pool.cc
@@ -12,7 +12,6 @@
#include "skia/ext/refptr.h"
#include "third_party/skia/include/core/SkCanvas.h"
#include "third_party/skia/include/core/SkSurface.h"
-#include "third_party/skia/include/utils/SkPaintFilterCanvas.h"
namespace cc {
@@ -58,45 +57,6 @@ bool IsSupportedPlaybackToMemoryFormat(ResourceFormat format) {
return false;
}
-class SkipImageCanvas : public SkPaintFilterCanvas {
- public:
- explicit SkipImageCanvas(SkCanvas* canvas) : SkPaintFilterCanvas(canvas) {}
-
- bool onFilter(SkTCopyOnFirstWrite<SkPaint>* paint, Type type) const override {
- if (type == kBitmap_Type)
- return false;
-
- SkShader* shader = (*paint) ? (*paint)->getShader() : nullptr;
- return !shader || !shader->isABitmap();
- }
-
- void onDrawPicture(const SkPicture* picture,
- const SkMatrix* matrix,
- const SkPaint* paint) override {
- SkTCopyOnFirstWrite<SkPaint> filteredPaint(paint);
-
- // To filter nested draws, we must unfurl pictures at this stage.
- if (onFilter(&filteredPaint, kPicture_Type))
- SkCanvas::onDrawPicture(picture, matrix, filteredPaint);
- }
-};
-
-class AutoSkipImageCanvas {
- public:
- AutoSkipImageCanvas(SkCanvas* canvas, bool include_images) : canvas_(canvas) {
- if (!include_images) {
- skip_image_canvas_ = skia::AdoptRef(new SkipImageCanvas(canvas));
- canvas_ = skip_image_canvas_.get();
- }
- }
-
- operator SkCanvas*() { return canvas_; }
-
- private:
- skia::RefPtr<SkCanvas> skip_image_canvas_;
- SkCanvas* canvas_;
-};
-
} // anonymous namespace
// static
@@ -134,20 +94,20 @@ void TileTaskWorkerPool::PlaybackToMemory(
case BGRA_8888: {
skia::RefPtr<SkSurface> surface = skia::AdoptRef(
SkSurface::NewRasterDirect(info, memory, stride, &surface_props));
- AutoSkipImageCanvas canvas(surface->getCanvas(), include_images);
- raster_source->PlaybackToCanvas(canvas, canvas_bitmap_rect,
- canvas_playback_rect, scale);
+ raster_source->PlaybackToCanvas(surface->getCanvas(), canvas_bitmap_rect,
+ canvas_playback_rect, scale,
+ include_images);
return;
}
case RGBA_4444:
case ETC1: {
skia::RefPtr<SkSurface> surface =
skia::AdoptRef(SkSurface::NewRaster(info, &surface_props));
- AutoSkipImageCanvas canvas(surface->getCanvas(), include_images);
// TODO(reveman): Improve partial raster support by reducing the size of
// playback rect passed to PlaybackToCanvas. crbug.com/519070
- raster_source->PlaybackToCanvas(canvas, canvas_bitmap_rect,
- canvas_bitmap_rect, scale);
+ raster_source->PlaybackToCanvas(surface->getCanvas(), canvas_bitmap_rect,
+ canvas_bitmap_rect, scale,
+ include_images);
if (format == ETC1) {
TRACE_EVENT0("cc",

Powered by Google App Engine
This is Rietveld 408576698