BitmapContentLayerUpdater::Resource::~Resource() {}
-void BitmapContentLayerUpdater::Resource::Update(ResourceUpdateQueue* queue,
- gfx::Rect source_rect,
- gfx::Vector2d dest_offset,
- bool partial_update) {
+void BitmapContentLayerUpdater::Resource::Update(
+ ResourceUpdateQueue* queue,
+ const gfx::Rect& source_rect,
+ const gfx::Vector2d& dest_offset,
+ bool partial_update) {
updater_->UpdateTexture(
queue, texture(), source_rect, dest_offset, partial_update);
}
}
void BitmapContentLayerUpdater::PrepareToUpdate(
- gfx::Rect content_rect,
- gfx::Size tile_size,
+ const gfx::Rect& content_rect,
+ const gfx::Size& tile_size,
float contents_width_scale,
float contents_height_scale,
gfx::Rect* resulting_opaque_rect) {
- devtools_instrumentation::ScopedLayerTask paint_layer(
- devtools_instrumentation::kPaintLayer, layer_id_);
- if (canvas_size_.width() < content_rect.size().width() ||
- canvas_size_.height() < content_rect.size().height()) {
+ if (canvas_size_ != content_rect.size()) {
devtools_instrumentation::ScopedLayerTask paint_setup(
devtools_instrumentation::kPaintSetup, layer_id_);
canvas_size_ = content_rect.size();
- canvas_ = skia::AdoptRef(skia::CreateBitmapCanvas(
- canvas_size_.width(), canvas_size_.height(), layer_is_opaque_));
+ bitmap_backing_.setConfig(
+ SkBitmap::kARGB_8888_Config,
+ canvas_size_.width(), canvas_size_.height(),
+ 0, layer_is_opaque_ ? kOpaque_SkAlphaType : kPremul_SkAlphaType);
+ bitmap_backing_.allocPixels();
+ canvas_ = skia::AdoptRef(new SkCanvas(bitmap_backing_));
}
base::TimeTicks start_time =
rendering_stats_instrumentation_->StartRecording();
PaintContents(canvas_.get(),
- content_rect,
+ content_rect.origin(),
contents_width_scale,
contents_height_scale,
resulting_opaque_rect);
void BitmapContentLayerUpdater::UpdateTexture(ResourceUpdateQueue* queue,
PrioritizedResource* texture,
- gfx::Rect source_rect,
- gfx::Vector2d dest_offset,
+ const gfx::Rect& source_rect,
+ const gfx::Vector2d& dest_offset,
bool partial_update) {
CHECK(canvas_);
- gfx::Rect canvas_rect = content_rect();
- canvas_rect.set_size(canvas_size_);
- ResourceUpdate upload = ResourceUpdate::CreateFromCanvas(
- texture, canvas_, canvas_rect, source_rect, dest_offset);
+ ResourceUpdate upload = ResourceUpdate::Create(texture,
+ &bitmap_backing_,
+ content_rect(),
+ source_rect,
+ dest_offset);
if (partial_update)
queue->AppendPartialUpload(upload);
else