summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--cc/damage_tracker_unittest.cc5
-rw-r--r--cc/gl_renderer.cc9
-rw-r--r--cc/heads_up_display_layer_impl.cc4
-rw-r--r--cc/layer.cc9
-rw-r--r--cc/layer.h10
-rw-r--r--cc/layer_impl.cc9
-rw-r--r--cc/layer_impl.h8
-rw-r--r--cc/layer_impl_unittest.cc2
-rw-r--r--cc/layer_tree_host_impl.cc2
-rw-r--r--cc/picture.cc13
-rw-r--r--cc/picture.h7
-rw-r--r--cc/render_pass.cc10
-rw-r--r--cc/render_pass.h8
-rw-r--r--cc/render_pass_unittest.cc2
-rw-r--r--cc/render_surface_filters.cc38
-rw-r--r--cc/render_surface_impl.cc2
-rw-r--r--cc/resource_update_controller.cc14
-rw-r--r--cc/software_renderer.cc24
-rw-r--r--content/common/cc_messages.cc3
-rw-r--r--content/common/cc_messages_unittest.cc7
-rw-r--r--webkit/compositor_bindings/web_layer_impl.cc3
21 files changed, 100 insertions, 89 deletions
diff --git a/cc/damage_tracker_unittest.cc b/cc/damage_tracker_unittest.cc
index 167c4c1..d9e49b2 100644
--- a/cc/damage_tracker_unittest.cc
+++ b/cc/damage_tracker_unittest.cc
@@ -58,7 +58,7 @@ void emulateDrawingOneFrame(LayerImpl* root)
// Iterate back-to-front, so that damage correctly propagates from descendant surfaces to ancestors.
for (int i = renderSurfaceLayerList.size() - 1; i >= 0; --i) {
RenderSurfaceImpl* targetSurface = renderSurfaceLayerList[i]->renderSurface();
- targetSurface->damageTracker()->updateDamageTrackingState(targetSurface->layerList(), targetSurface->owningLayerId(), targetSurface->surfacePropertyChangedOnlyFromDescendant(), targetSurface->contentRect(), renderSurfaceLayerList[i]->maskLayer(), renderSurfaceLayerList[i]->filters(), renderSurfaceLayerList[i]->filter());
+ targetSurface->damageTracker()->updateDamageTrackingState(targetSurface->layerList(), targetSurface->owningLayerId(), targetSurface->surfacePropertyChangedOnlyFromDescendant(), targetSurface->contentRect(), renderSurfaceLayerList[i]->maskLayer(), renderSurfaceLayerList[i]->filters(), renderSurfaceLayerList[i]->filter().get());
}
root->resetAllChangeTrackingForSubtree();
@@ -397,8 +397,7 @@ TEST_F(DamageTrackerTest, verifyDamageForImageFilter)
// Allow us to set damage on child too.
child->setDrawsContent(true);
- SkAutoTUnref<SkImageFilter> filter(new SkBlurImageFilter(SkIntToScalar(2),
- SkIntToScalar(2)));
+ skia::RefPtr<SkImageFilter> filter = skia::AdoptRef(new SkBlurImageFilter(SkIntToScalar(2), SkIntToScalar(2)));
// Setting the filter will damage the whole surface.
clearDamageForAllSurfaces(root.get());
child->setFilter(filter);
diff --git a/cc/gl_renderer.cc b/cc/gl_renderer.cc
index c2646c1..64299f6 100644
--- a/cc/gl_renderer.cc
+++ b/cc/gl_renderer.cc
@@ -401,12 +401,13 @@ static SkBitmap applyImageFilter(GLRenderer* renderer, SkImageFilter* filter, Sc
platformTextureDescription.fHeight = sourceTexture->size().height();
platformTextureDescription.fConfig = kSkia8888_GrPixelConfig;
platformTextureDescription.fTextureHandle = lock.textureId();
- SkAutoTUnref<GrTexture> texture(grContext->createPlatformTexture(platformTextureDescription));
+ skia::RefPtr<GrTexture> texture = skia::AdoptRef(grContext->createPlatformTexture(platformTextureDescription));
// Place the platform texture inside an SkBitmap.
SkBitmap source;
source.setConfig(SkBitmap::kARGB_8888_Config, sourceTexture->size().width(), sourceTexture->size().height());
- source.setPixelRef(new SkGrPixelRef(texture.get()))->unref();
+ skia::RefPtr<SkGrPixelRef> pixelRef = skia::AdoptRef(new SkGrPixelRef(texture.get()));
+ source.setPixelRef(pixelRef.get());
// Create a scratch texture for backing store.
GrTextureDesc desc;
@@ -416,7 +417,7 @@ static SkBitmap applyImageFilter(GLRenderer* renderer, SkImageFilter* filter, Sc
desc.fHeight = source.height();
desc.fConfig = kSkia8888_GrPixelConfig;
GrAutoScratchTexture scratchTexture(grContext, desc, GrContext::kExact_ScratchTexMatch);
- SkAutoTUnref<GrTexture> backingStore(scratchTexture.detach());
+ skia::RefPtr<GrTexture> backingStore = skia::AdoptRef(scratchTexture.detach());
// Create a device and canvas using that backing store.
SkGpuDevice device(grContext, backingStore.get());
@@ -534,7 +535,7 @@ void GLRenderer::drawRenderPassQuad(DrawingFrame& frame, const RenderPassDrawQua
// Apply filters to the contents texture.
SkBitmap filterBitmap;
if (renderPass->filter) {
- filterBitmap = applyImageFilter(this, renderPass->filter, contentsTexture, m_client->hasImplThread());
+ filterBitmap = applyImageFilter(this, renderPass->filter.get(), contentsTexture, m_client->hasImplThread());
} else {
filterBitmap = applyFilters(this, renderPass->filters, contentsTexture, m_client->hasImplThread());
}
diff --git a/cc/heads_up_display_layer_impl.cc b/cc/heads_up_display_layer_impl.cc
index 0ca7fe5e..358c56c 100644
--- a/cc/heads_up_display_layer_impl.cc
+++ b/cc/heads_up_display_layer_impl.cc
@@ -39,7 +39,9 @@ static inline SkPaint createPaint()
swizzleMatrix.fMat[3 + 5 * 3] = 1;
SkPaint paint;
- paint.setColorFilter(new SkColorMatrixFilter(swizzleMatrix))->unref();
+ skia::RefPtr<SkColorMatrixFilter> filter =
+ skia::AdoptRef(new SkColorMatrixFilter(swizzleMatrix));
+ paint.setColorFilter(filter.get());
return paint;
}
diff --git a/cc/layer.cc b/cc/layer.cc
index 943d451..82b797c 100644
--- a/cc/layer.cc
+++ b/cc/layer.cc
@@ -41,7 +41,6 @@ Layer::Layer()
, m_anchorPoint(0.5, 0.5)
, m_backgroundColor(0)
, m_opacity(1.0)
- , m_filter(0)
, m_anchorPointZ(0)
, m_isContainerForFixedPositionLayers(false)
, m_fixedToContainerLayer(false)
@@ -81,8 +80,6 @@ Layer::~Layer()
// Remove the parent reference from all children.
removeAllChildren();
-
- SkSafeUnref(m_filter);
}
void Layer::setUseLCDText(bool useLCDText)
@@ -334,12 +331,12 @@ void Layer::setFilters(const WebKit::WebFilterOperations& filters)
LayerTreeHost::setNeedsFilterContext(true);
}
-void Layer::setFilter(SkImageFilter* filter)
+void Layer::setFilter(const skia::RefPtr<SkImageFilter>& filter)
{
- if (m_filter == filter)
+ if (m_filter.get() == filter.get())
return;
DCHECK(m_filters.isEmpty());
- SkRefCnt_SafeAssign(m_filter, filter);
+ m_filter = filter;
setNeedsCommit();
if (filter)
LayerTreeHost::setNeedsFilterContext(true);
diff --git a/cc/layer.h b/cc/layer.h
index a031635..86cc650 100644
--- a/cc/layer.h
+++ b/cc/layer.h
@@ -15,7 +15,9 @@
#include "cc/occlusion_tracker.h"
#include "cc/region.h"
#include "cc/render_surface.h"
+#include "skia/ext/refptr.h"
#include "third_party/skia/include/core/SkColor.h"
+#include "third_party/skia/include/core/SkImageFilter.h"
#include "ui/gfx/rect.h"
#include "ui/gfx/rect_f.h"
#include "ui/gfx/transform.h"
@@ -25,8 +27,6 @@ class WebAnimationDelegate;
class WebLayerScrollClient;
}
-class SkImageFilter;
-
namespace cc {
class ActiveAnimation;
@@ -102,8 +102,8 @@ public:
void setFilters(const WebKit::WebFilterOperations&);
const WebKit::WebFilterOperations& filters() const { return m_filters; }
- void setFilter(SkImageFilter* filter);
- SkImageFilter* filter() const { return m_filter; }
+ void setFilter(const skia::RefPtr<SkImageFilter>& filter);
+ skia::RefPtr<SkImageFilter> filter() const { return m_filter; }
// Background filters are filters applied to what is behind this layer, when they are viewed through non-opaque
// regions in this layer. They are used through the WebLayer interface, and are not exposed to HTML.
@@ -374,7 +374,7 @@ private:
SkColor m_backgroundColor;
std::string m_debugName;
float m_opacity;
- SkImageFilter* m_filter;
+ skia::RefPtr<SkImageFilter> m_filter;
WebKit::WebFilterOperations m_filters;
WebKit::WebFilterOperations m_backgroundFilters;
float m_anchorPointZ;
diff --git a/cc/layer_impl.cc b/cc/layer_impl.cc
index a1dffea..58b3b9e 100644
--- a/cc/layer_impl.cc
+++ b/cc/layer_impl.cc
@@ -14,7 +14,6 @@
#include "cc/proxy.h"
#include "cc/quad_sink.h"
#include "cc/scrollbar_animation_controller.h"
-#include "third_party/skia/include/core/SkImageFilter.h"
#include "ui/gfx/point_conversions.h"
#include "ui/gfx/rect_conversions.h"
@@ -52,7 +51,6 @@ LayerImpl::LayerImpl(int id)
, m_drawDepth(0)
, m_drawOpacity(0)
, m_drawOpacityIsAnimating(false)
- , m_filter(0)
, m_drawTransformIsAnimating(false)
, m_screenSpaceTransformIsAnimating(false)
, m_isClipped(false)
@@ -69,7 +67,6 @@ LayerImpl::~LayerImpl()
#ifndef NDEBUG
DCHECK(!m_betweenWillDrawAndDidDraw);
#endif
- SkSafeUnref(m_filter);
}
void LayerImpl::addChild(scoped_ptr<LayerImpl> child)
@@ -537,13 +534,13 @@ void LayerImpl::setBackgroundFilters(const WebKit::WebFilterOperations& backgrou
m_layerPropertyChanged = true;
}
-void LayerImpl::setFilter(SkImageFilter* filter)
+void LayerImpl::setFilter(const skia::RefPtr<SkImageFilter>& filter)
{
- if (m_filter == filter)
+ if (m_filter.get() == filter.get())
return;
DCHECK(m_filters.isEmpty());
- SkRefCnt_SafeAssign(m_filter, filter);
+ m_filter = filter;
noteLayerPropertyChangedForSubtree();
}
diff --git a/cc/layer_impl.h b/cc/layer_impl.h
index 3e72d20..ce22ed6 100644
--- a/cc/layer_impl.h
+++ b/cc/layer_impl.h
@@ -19,7 +19,9 @@
#include "cc/resource_provider.h"
#include "cc/scoped_ptr_vector.h"
#include "cc/shared_quad_state.h"
+#include "skia/ext/refptr.h"
#include "third_party/skia/include/core/SkColor.h"
+#include "third_party/skia/include/core/SkImageFilter.h"
#include "ui/gfx/rect.h"
#include "ui/gfx/rect_f.h"
#include "ui/gfx/transform.h"
@@ -119,8 +121,8 @@ public:
void setBackgroundFilters(const WebKit::WebFilterOperations&);
const WebKit::WebFilterOperations& backgroundFilters() const { return m_backgroundFilters; }
- void setFilter(SkImageFilter*);
- SkImageFilter* filter() const { return m_filter; }
+ void setFilter(const skia::RefPtr<SkImageFilter>&);
+ skia::RefPtr<SkImageFilter> filter() const { return m_filter; }
void setMasksToBounds(bool);
bool masksToBounds() const { return m_masksToBounds; }
@@ -396,7 +398,7 @@ private:
WebKit::WebFilterOperations m_filters;
WebKit::WebFilterOperations m_backgroundFilters;
- SkImageFilter* m_filter;
+ skia::RefPtr<SkImageFilter> m_filter;
gfx::Transform m_drawTransform;
gfx::Transform m_screenSpaceTransform;
diff --git a/cc/layer_impl_unittest.cc b/cc/layer_impl_unittest.cc
index 20df1ff..6413cdd 100644
--- a/cc/layer_impl_unittest.cc
+++ b/cc/layer_impl_unittest.cc
@@ -80,7 +80,7 @@ TEST(LayerImplTest, verifyLayerChangesAreTrackedProperly)
arbitraryTransform.Scale3d(0.1, 0.2, 0.3);
WebFilterOperations arbitraryFilters;
arbitraryFilters.append(WebFilterOperation::createOpacityFilter(0.5));
- SkAutoTUnref<SkImageFilter> arbitraryFilter(new SkBlurImageFilter(SK_Scalar1, SK_Scalar1));
+ skia::RefPtr<SkImageFilter> arbitraryFilter = skia::AdoptRef(new SkBlurImageFilter(SK_Scalar1, SK_Scalar1));
// These properties are internal, and should not be considered "change" when they are used.
EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE(root->setUseLCDText(true));
diff --git a/cc/layer_tree_host_impl.cc b/cc/layer_tree_host_impl.cc
index e41ca0d..26e1b3d 100644
--- a/cc/layer_tree_host_impl.cc
+++ b/cc/layer_tree_host_impl.cc
@@ -359,7 +359,7 @@ void LayerTreeHostImpl::trackDamageForAllSurfaces(LayerImpl* rootDrawLayer, cons
LayerImpl* renderSurfaceLayer = renderSurfaceLayerList[surfaceIndex];
RenderSurfaceImpl* renderSurface = renderSurfaceLayer->renderSurface();
DCHECK(renderSurface);
- renderSurface->damageTracker()->updateDamageTrackingState(renderSurface->layerList(), renderSurfaceLayer->id(), renderSurface->surfacePropertyChangedOnlyFromDescendant(), renderSurface->contentRect(), renderSurfaceLayer->maskLayer(), renderSurfaceLayer->filters(), renderSurfaceLayer->filter());
+ renderSurface->damageTracker()->updateDamageTrackingState(renderSurface->layerList(), renderSurfaceLayer->id(), renderSurface->surfacePropertyChangedOnlyFromDescendant(), renderSurface->contentRect(), renderSurfaceLayer->maskLayer(), renderSurfaceLayer->filters(), renderSurfaceLayer->filter().get());
}
}
diff --git a/cc/picture.cc b/cc/picture.cc
index 50eefd8..b7445e6 100644
--- a/cc/picture.cc
+++ b/cc/picture.cc
@@ -18,7 +18,8 @@ scoped_refptr<Picture> Picture::Create() {
Picture::Picture() {
}
-Picture::Picture(SkPicture* picture, gfx::Rect layer_rect,
+Picture::Picture(const skia::RefPtr<SkPicture>& picture,
+ gfx::Rect layer_rect,
gfx::Rect opaque_rect) :
layer_rect_(layer_rect),
opaque_rect_(opaque_rect),
@@ -31,8 +32,8 @@ Picture::~Picture() {
scoped_refptr<Picture> Picture::Clone() {
// SkPicture is not thread-safe to rasterize with, so return a thread-safe
// clone of it.
- DCHECK(picture_.get());
- SkPicture* clone = picture_->clone();
+ DCHECK(picture_);
+ skia::RefPtr<SkPicture> clone = skia::AdoptRef(picture_->clone());
return make_scoped_refptr(new Picture(clone, layer_rect_, opaque_rect_));
}
@@ -41,8 +42,8 @@ void Picture::Record(ContentLayerClient* painter, gfx::Rect layer_rect,
TRACE_EVENT0("cc", "Picture::Record");
// Record() should only be called once.
- DCHECK(!picture_.get());
- picture_.reset(new SkPicture);
+ DCHECK(!picture_);
+ picture_ = skia::AdoptRef(new SkPicture);
SkCanvas* canvas = picture_->beginRecording(
layer_rect.width(),
@@ -80,7 +81,7 @@ void Picture::Record(ContentLayerClient* painter, gfx::Rect layer_rect,
void Picture::Raster(SkCanvas* canvas) {
TRACE_EVENT0("cc", "Picture::Raster");
- DCHECK(picture_.get());
+ DCHECK(picture_);
canvas->save();
canvas->translate(layer_rect_.x(), layer_rect_.y());
canvas->drawPicture(*picture_);
diff --git a/cc/picture.h b/cc/picture.h
index bd8889a..d23d634 100644
--- a/cc/picture.h
+++ b/cc/picture.h
@@ -8,6 +8,7 @@
#include "base/basictypes.h"
#include "base/memory/ref_counted.h"
#include "cc/cc_export.h"
+#include "skia/ext/refptr.h"
#include "third_party/skia/include/core/SkPicture.h"
#include "ui/gfx/rect.h"
@@ -39,12 +40,14 @@ private:
Picture();
// This constructor assumes SkPicture is already ref'd and transfers
// ownership to this picture.
- Picture(SkPicture*, gfx::Rect layer_rect, gfx::Rect opaque_rect);
+ Picture(const skia::RefPtr<SkPicture>&,
+ gfx::Rect layer_rect,
+ gfx::Rect opaque_rect);
~Picture();
gfx::Rect layer_rect_;
gfx::Rect opaque_rect_;
- SkAutoTUnref<SkPicture> picture_;
+ skia::RefPtr<SkPicture> picture_;
friend class base::RefCountedThreadSafe<Picture>;
DISALLOW_COPY_AND_ASSIGN(Picture);
diff --git a/cc/render_pass.cc b/cc/render_pass.cc
index 2d49907..dba8e10 100644
--- a/cc/render_pass.cc
+++ b/cc/render_pass.cc
@@ -4,8 +4,6 @@
#include "cc/render_pass.h"
-#include "third_party/skia/include/core/SkImageFilter.h"
-
namespace cc {
scoped_ptr<RenderPass> RenderPass::Create() {
@@ -15,12 +13,10 @@ scoped_ptr<RenderPass> RenderPass::Create() {
RenderPass::RenderPass()
: id(Id(-1, -1)),
has_transparent_background(true),
- has_occlusion_from_outside_target_surface(false),
- filter(NULL) {
+ has_occlusion_from_outside_target_surface(false) {
}
RenderPass::~RenderPass() {
- SkSafeUnref(filter);
}
scoped_ptr<RenderPass> RenderPass::Copy(Id new_id) const {
@@ -62,7 +58,7 @@ void RenderPass::SetAll(Id id,
bool has_transparent_background,
bool has_occlusion_from_outside_target_surface,
const WebKit::WebFilterOperations& filters,
- SkImageFilter* filter,
+ const skia::RefPtr<SkImageFilter>& filter,
const WebKit::WebFilterOperations& background_filters) {
DCHECK_GT(id.layer_id, 0);
DCHECK_GE(id.index, 0);
@@ -75,7 +71,7 @@ void RenderPass::SetAll(Id id,
this->has_occlusion_from_outside_target_surface =
has_occlusion_from_outside_target_surface;
this->filters = filters;
- SkRefCnt_SafeAssign(this->filter, filter);
+ this->filter = filter;
this->background_filters = background_filters;
DCHECK(quad_list.isEmpty());
diff --git a/cc/render_pass.h b/cc/render_pass.h
index 4624757..a7e685f 100644
--- a/cc/render_pass.h
+++ b/cc/render_pass.h
@@ -15,12 +15,12 @@
#include "cc/scoped_ptr_hash_map.h"
#include "cc/scoped_ptr_vector.h"
#include "cc/shared_quad_state.h"
+#include "skia/ext/refptr.h"
#include "third_party/skia/include/core/SkColor.h"
+#include "third_party/skia/include/core/SkImageFilter.h"
#include "ui/gfx/rect_f.h"
#include "ui/gfx/transform.h"
-class SkImageFilter;
-
namespace cc {
// A list of DrawQuad objects, sorted internally in front-to-back order.
@@ -76,7 +76,7 @@ class CC_EXPORT RenderPass {
bool has_transparent_background,
bool has_occlusion_from_outside_target_surface,
const WebKit::WebFilterOperations& filters,
- SkImageFilter* filter,
+ const skia::RefPtr<SkImageFilter>& filter,
const WebKit::WebFilterOperations& background_filters);
// Uniquely identifies the render pass in the compositor's current frame.
@@ -101,7 +101,7 @@ class CC_EXPORT RenderPass {
// pass' texture.
WebKit::WebFilterOperations filters;
// Post-processing filter applied to the pixels in the render pass' texture.
- SkImageFilter* filter;
+ skia::RefPtr<SkImageFilter> filter;
// Post-processing filters, applied to the pixels showing through the
// background of the render pass, from behind it.
diff --git a/cc/render_pass_unittest.cc b/cc/render_pass_unittest.cc
index b84de4c..aa5adb9 100644
--- a/cc/render_pass_unittest.cc
+++ b/cc/render_pass_unittest.cc
@@ -49,7 +49,7 @@ TEST(RenderPassTest, copyShouldBeIdenticalExceptIdAndQuads)
filters.append(WebFilterOperation::createGrayscaleFilter(0.2f));
backgroundFilters.append(WebFilterOperation::createInvertFilter(0.2f));
- SkAutoTUnref<SkBlurImageFilter> filter(new SkBlurImageFilter(SK_Scalar1, SK_Scalar1));
+ skia::RefPtr<SkImageFilter> filter = skia::AdoptRef(new SkBlurImageFilter(SK_Scalar1, SK_Scalar1));
scoped_ptr<TestRenderPass> pass = TestRenderPass::Create();
pass->SetAll(id,
diff --git a/cc/render_surface_filters.cc b/cc/render_surface_filters.cc
index 4b9a49d..9fdf727 100644
--- a/cc/render_surface_filters.cc
+++ b/cc/render_surface_filters.cc
@@ -5,6 +5,7 @@
#include "cc/render_surface_filters.h"
#include "base/logging.h"
+#include "skia/ext/refptr.h"
#include "third_party/skia/include/core/SkCanvas.h"
#include "third_party/skia/include/effects/SkBlurImageFilter.h"
#include "third_party/skia/include/effects/SkColorMatrixFilter.h"
@@ -246,10 +247,11 @@ public:
platformTextureDescription.fHeight = size.height();
platformTextureDescription.fConfig = kSkia8888_GrPixelConfig;
platformTextureDescription.fTextureHandle = textureId;
- SkAutoTUnref<GrTexture> texture(grContext->createPlatformTexture(platformTextureDescription));
+ skia::RefPtr<GrTexture> texture = skia::AdoptRef(grContext->createPlatformTexture(platformTextureDescription));
// Place the platform texture inside an SkBitmap.
m_source.setConfig(SkBitmap::kARGB_8888_Config, size.width(), size.height());
- m_source.setPixelRef(new SkGrPixelRef(texture.get()))->unref();
+ skia::RefPtr<SkGrPixelRef> pixelRef = skia::AdoptRef(new SkGrPixelRef(texture.get()));
+ m_source.setPixelRef(pixelRef.get());
}
~FilterBufferState() { }
@@ -265,8 +267,8 @@ public:
desc.fConfig = kSkia8888_GrPixelConfig;
for (int i = 0; i < scratchCount; ++i) {
GrAutoScratchTexture scratchTexture(m_grContext, desc, GrContext::kExact_ScratchTexMatch);
- m_scratchTextures[i].reset(scratchTexture.detach());
- if (!m_scratchTextures[i].get())
+ m_scratchTextures[i] = skia::AdoptRef(scratchTexture.detach());
+ if (!m_scratchTextures[i])
return false;
}
return true;
@@ -284,10 +286,11 @@ public:
void swap()
{
m_canvas->flush();
- m_canvas.reset(0);
- m_device.reset(0);
+ m_canvas.clear();
+ m_device.clear();
- m_source.setPixelRef(new SkGrPixelRef(m_scratchTextures[m_currentTexture].get()))->unref();
+ skia::RefPtr<SkGrPixelRef> pixelRef = skia::AdoptRef(new SkGrPixelRef(m_scratchTextures[m_currentTexture].get()));
+ m_source.setPixelRef(pixelRef.get());
m_currentTexture = 1 - m_currentTexture;
}
@@ -295,17 +298,17 @@ private:
void createCanvas()
{
DCHECK(m_scratchTextures[m_currentTexture].get());
- m_device.reset(new SkGpuDevice(m_grContext, m_scratchTextures[m_currentTexture].get()));
- m_canvas.reset(new SkCanvas(m_device.get()));
+ m_device = skia::AdoptRef(new SkGpuDevice(m_grContext, m_scratchTextures[m_currentTexture].get()));
+ m_canvas = skia::AdoptRef(new SkCanvas(m_device.get()));
m_canvas->clear(0x0);
}
GrContext* m_grContext;
SkBitmap m_source;
- SkAutoTUnref<GrTexture> m_scratchTextures[2];
+ skia::RefPtr<GrTexture> m_scratchTextures[2];
int m_currentTexture;
- SkAutoTUnref<SkGpuDevice> m_device;
- SkAutoTUnref<SkCanvas> m_canvas;
+ skia::RefPtr<SkGpuDevice> m_device;
+ skia::RefPtr<SkCanvas> m_canvas;
};
} // namespace
@@ -381,21 +384,22 @@ SkBitmap RenderSurfaceFilters::apply(const WebKit::WebFilterOperations& filters,
switch (op.type()) {
case WebKit::WebFilterOperation::FilterTypeColorMatrix: {
SkPaint paint;
- paint.setColorFilter(new SkColorMatrixFilter(op.matrix()))->unref();
+ skia::RefPtr<SkColorMatrixFilter> filter = skia::AdoptRef(new SkColorMatrixFilter(op.matrix()));
+ paint.setColorFilter(filter.get());
canvas->drawBitmap(state.source(), 0, 0, &paint);
break;
}
case WebKit::WebFilterOperation::FilterTypeBlur: {
float stdDeviation = op.amount();
- SkAutoTUnref<SkImageFilter> filter(new SkBlurImageFilter(stdDeviation, stdDeviation));
+ skia::RefPtr<SkImageFilter> filter = skia::AdoptRef(new SkBlurImageFilter(stdDeviation, stdDeviation));
SkPaint paint;
paint.setImageFilter(filter.get());
canvas->drawSprite(state.source(), 0, 0, &paint);
break;
}
case WebKit::WebFilterOperation::FilterTypeDropShadow: {
- SkAutoTUnref<SkImageFilter> blurFilter(new SkBlurImageFilter(op.amount(), op.amount()));
- SkAutoTUnref<SkColorFilter> colorFilter(SkColorFilter::CreateModeFilter(op.dropShadowColor(), SkXfermode::kSrcIn_Mode));
+ skia::RefPtr<SkImageFilter> blurFilter = skia::AdoptRef(new SkBlurImageFilter(op.amount(), op.amount()));
+ skia::RefPtr<SkColorFilter> colorFilter = skia::AdoptRef(SkColorFilter::CreateModeFilter(op.dropShadowColor(), SkXfermode::kSrcIn_Mode));
SkPaint paint;
paint.setImageFilter(blurFilter.get());
paint.setColorFilter(colorFilter.get());
@@ -408,7 +412,7 @@ SkBitmap RenderSurfaceFilters::apply(const WebKit::WebFilterOperations& filters,
}
case WebKit::WebFilterOperation::FilterTypeZoom: {
SkPaint paint;
- SkAutoTUnref<SkImageFilter> zoomFilter(
+ skia::RefPtr<SkImageFilter> zoomFilter = skia::AdoptRef(
new SkMagnifierImageFilter(
SkRect::MakeXYWH(op.zoomRect().x,
op.zoomRect().y,
diff --git a/cc/render_surface_impl.cc b/cc/render_surface_impl.cc
index 6be40d4..800faed 100644
--- a/cc/render_surface_impl.cc
+++ b/cc/render_surface_impl.cc
@@ -187,7 +187,7 @@ void RenderSurfaceImpl::appendRenderPasses(RenderPassSink& passSink)
scoped_ptr<RenderPass> pass = RenderPass::Create();
pass->SetNew(renderPassId(), m_contentRect, m_damageTracker->currentDamageRect(), m_screenSpaceTransform);
pass->filters = m_owningLayer->filters();
- SkRefCnt_SafeAssign(pass->filter, m_owningLayer->filter());
+ pass->filter = m_owningLayer->filter();
pass->background_filters = m_owningLayer->backgroundFilters();
passSink.appendRenderPass(pass.Pass());
}
diff --git a/cc/resource_update_controller.cc b/cc/resource_update_controller.cc
index 4ff729c..44e8abe 100644
--- a/cc/resource_update_controller.cc
+++ b/cc/resource_update_controller.cc
@@ -9,6 +9,7 @@
#include "cc/resource_provider.h"
#include "cc/texture_copier.h"
#include "cc/thread.h"
+#include "skia/ext/refptr.h"
#include "third_party/khronos/GLES2/gl2.h"
#include "third_party/skia/include/gpu/SkGpuDevice.h"
#include <limits>
@@ -36,7 +37,7 @@ const double uploaderBusyTickRate = 0.001;
// Number of blocking update intervals to allow.
const size_t maxBlockingUpdateIntervals = 4;
-scoped_ptr<SkCanvas> createAcceleratedCanvas(
+skia::RefPtr<SkCanvas> createAcceleratedCanvas(
GrContext* grContext, gfx::Size canvasSize, unsigned textureId)
{
GrPlatformTextureDesc textureDesc;
@@ -45,10 +46,11 @@ scoped_ptr<SkCanvas> createAcceleratedCanvas(
textureDesc.fHeight = canvasSize.height();
textureDesc.fConfig = kSkia8888_GrPixelConfig;
textureDesc.fTextureHandle = textureId;
- SkAutoTUnref<GrTexture> target(
- grContext->createPlatformTexture(textureDesc));
- SkAutoTUnref<SkDevice> device(new SkGpuDevice(grContext, target.get()));
- return make_scoped_ptr(new SkCanvas(device.get()));
+ skia::RefPtr<GrTexture> target =
+ skia::AdoptRef(grContext->createPlatformTexture(textureDesc));
+ skia::RefPtr<SkDevice> device =
+ skia::AdoptRef(new SkGpuDevice(grContext, target.get()));
+ return skia::AdoptRef(new SkCanvas(device.get()));
}
} // namespace
@@ -150,7 +152,7 @@ void ResourceUpdateController::updateTexture(ResourceUpdate update)
paintContext->makeContextCurrent();
// Create an accelerated canvas to draw on.
- scoped_ptr<SkCanvas> canvas = createAcceleratedCanvas(
+ skia::RefPtr<SkCanvas> canvas = createAcceleratedCanvas(
paintGrContext, texture->size(), lock.textureId());
// The compositor expects the textures to be upside-down so it can flip
diff --git a/cc/software_renderer.cc b/cc/software_renderer.cc
index 7f6e0c9..a2fd08a 100644
--- a/cc/software_renderer.cc
+++ b/cc/software_renderer.cc
@@ -307,13 +307,14 @@ void SoftwareRenderer::drawRenderPassQuad(const DrawingFrame& frame, const Rende
SkMatrix contentMat;
contentMat.setRectToRect(contentRect, destRect, SkMatrix::kFill_ScaleToFit);
- SkAutoTUnref<SkShader> shader(SkShader::CreateBitmapShader(*content,
- SkShader::kClamp_TileMode,
- SkShader::kClamp_TileMode));
+ skia::RefPtr<SkShader> shader = skia::AdoptRef(
+ SkShader::CreateBitmapShader(*content,
+ SkShader::kClamp_TileMode,
+ SkShader::kClamp_TileMode));
shader->setLocalMatrix(contentMat);
- m_skCurrentPaint.setShader(shader);
+ m_skCurrentPaint.setShader(shader.get());
- SkImageFilter* filter = renderPass->filter;
+ SkImageFilter* filter = renderPass->filter.get();
if (filter)
m_skCurrentPaint.setImageFilter(filter);
@@ -331,18 +332,19 @@ void SoftwareRenderer::drawRenderPassQuad(const DrawingFrame& frame, const Rende
SkMatrix maskMat;
maskMat.setRectToRect(maskRect, destRect, SkMatrix::kFill_ScaleToFit);
- SkAutoTUnref<SkShader> maskShader(SkShader::CreateBitmapShader(*mask,
- SkShader::kClamp_TileMode,
- SkShader::kClamp_TileMode));
+ skia::RefPtr<SkShader> maskShader = skia::AdoptRef(
+ SkShader::CreateBitmapShader(*mask,
+ SkShader::kClamp_TileMode,
+ SkShader::kClamp_TileMode));
maskShader->setLocalMatrix(maskMat);
SkPaint maskPaint;
- maskPaint.setShader(maskShader);
+ maskPaint.setShader(maskShader.get());
- SkAutoTUnref<SkLayerRasterizer> maskRasterizer(new SkLayerRasterizer);
+ skia::RefPtr<SkLayerRasterizer> maskRasterizer = skia::AdoptRef(new SkLayerRasterizer);
maskRasterizer->addLayer(maskPaint);
- m_skCurrentPaint.setRasterizer(maskRasterizer);
+ m_skCurrentPaint.setRasterizer(maskRasterizer.get());
m_skCurrentCanvas->drawRect(destRect, m_skCurrentPaint);
} else {
// FIXME: Apply background filters and blend with content
diff --git a/content/common/cc_messages.cc b/content/common/cc_messages.cc
index bcdf0f0..d65e5f0 100644
--- a/content/common/cc_messages.cc
+++ b/content/common/cc_messages.cc
@@ -415,6 +415,7 @@ bool ParamTraits<cc::RenderPass>::Read(
bool has_transparent_background;
bool has_occlusion_from_outside_target_surface;
WebKit::WebFilterOperations filters;
+ skia::RefPtr<SkImageFilter> filter;
WebKit::WebFilterOperations background_filters;
size_t shared_quad_state_list_size;
size_t quad_list_size;
@@ -438,7 +439,7 @@ bool ParamTraits<cc::RenderPass>::Read(
has_transparent_background,
has_occlusion_from_outside_target_surface,
filters,
- NULL, // TODO(danakj): filter isn't being serialized.
+ filter, // TODO(danakj): filter isn't being serialized.
background_filters);
for (size_t i = 0; i < shared_quad_state_list_size; ++i) {
diff --git a/content/common/cc_messages_unittest.cc b/content/common/cc_messages_unittest.cc
index 4e20e2b..0342690 100644
--- a/content/common/cc_messages_unittest.cc
+++ b/content/common/cc_messages_unittest.cc
@@ -235,6 +235,9 @@ TEST_F(CCMessagesTest, AllQuads) {
arbitrary_filters2.append(WebFilterOperation::createBrightnessFilter(
arbitrary_float2));
+ // TODO(danakj): filter is not serialized.
+ skia::RefPtr<SkImageFilter> arbitrary_filter;
+
scoped_ptr<SharedQuadState> shared_state1_in = SharedQuadState::Create();
shared_state1_in->SetAll(arbitrary_matrix,
arbitrary_rect1,
@@ -361,7 +364,7 @@ TEST_F(CCMessagesTest, AllQuads) {
arbitrary_bool1,
arbitrary_bool2,
arbitrary_filters1,
- NULL, // TODO(danakj): filter is not serialized.
+ arbitrary_filter, // TODO(danakj): filter is not serialized.
arbitrary_filters2);
pass_in->shared_quad_state_list.append(shared_state1_in.Pass());
@@ -383,7 +386,7 @@ TEST_F(CCMessagesTest, AllQuads) {
arbitrary_bool1,
arbitrary_bool2,
arbitrary_filters1,
- NULL, // TODO(danakj): filter is not serialized.
+ arbitrary_filter, // TODO(danakj): filter is not serialized.
arbitrary_filters2);
pass_cmp->shared_quad_state_list.append(shared_state1_cmp.Pass());
diff --git a/webkit/compositor_bindings/web_layer_impl.cc b/webkit/compositor_bindings/web_layer_impl.cc
index ee8b50f..8683d1f 100644
--- a/webkit/compositor_bindings/web_layer_impl.cc
+++ b/webkit/compositor_bindings/web_layer_impl.cc
@@ -241,7 +241,8 @@ void WebLayerImpl::setBackgroundFilters(const WebFilterOperations& filters)
void WebLayerImpl::setFilter(SkImageFilter* filter)
{
- m_layer->setFilter(filter);
+ filter->ref(); // Claim a reference for the compositor.
+ m_layer->setFilter(skia::AdoptRef(filter));
}
void WebLayerImpl::setDebugName(WebString name)