diff options
-rw-r--r-- | cc/damage_tracker_unittest.cc | 5 | ||||
-rw-r--r-- | cc/gl_renderer.cc | 9 | ||||
-rw-r--r-- | cc/heads_up_display_layer_impl.cc | 4 | ||||
-rw-r--r-- | cc/layer.cc | 9 | ||||
-rw-r--r-- | cc/layer.h | 10 | ||||
-rw-r--r-- | cc/layer_impl.cc | 9 | ||||
-rw-r--r-- | cc/layer_impl.h | 8 | ||||
-rw-r--r-- | cc/layer_impl_unittest.cc | 2 | ||||
-rw-r--r-- | cc/layer_tree_host_impl.cc | 2 | ||||
-rw-r--r-- | cc/picture.cc | 13 | ||||
-rw-r--r-- | cc/picture.h | 7 | ||||
-rw-r--r-- | cc/render_pass.cc | 10 | ||||
-rw-r--r-- | cc/render_pass.h | 8 | ||||
-rw-r--r-- | cc/render_pass_unittest.cc | 2 | ||||
-rw-r--r-- | cc/render_surface_filters.cc | 38 | ||||
-rw-r--r-- | cc/render_surface_impl.cc | 2 | ||||
-rw-r--r-- | cc/resource_update_controller.cc | 14 | ||||
-rw-r--r-- | cc/software_renderer.cc | 24 | ||||
-rw-r--r-- | content/common/cc_messages.cc | 3 | ||||
-rw-r--r-- | content/common/cc_messages_unittest.cc | 7 | ||||
-rw-r--r-- | webkit/compositor_bindings/web_layer_impl.cc | 3 |
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); @@ -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) |