Upstream version 5.34.104.0
[platform/framework/web/crosswalk.git] / src / cc / resources / bitmap_content_layer_updater.cc
index 26aee92..6f2332b 100644 (file)
@@ -21,10 +21,11 @@ BitmapContentLayerUpdater::Resource::Resource(
 
 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);
 }
@@ -54,26 +55,27 @@ scoped_ptr<LayerUpdater::Resource> BitmapContentLayerUpdater::CreateResource(
 }
 
 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);
@@ -86,14 +88,15 @@ void BitmapContentLayerUpdater::PrepareToUpdate(
 
 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