From 584abe77f84b1bf56e9633e63d4fe60947eabe27 Mon Sep 17 00:00:00 2001 From: "enne@chromium.org" Date: Sat, 18 May 2013 09:40:26 +0000 Subject: Only use skia::RefPtr for refcounting For consistency and sanity in Chromium, only use skia::RefPtr in Chromium to ref count skia classes. SkRefPtr is unsafe to use for newly created objects because it refs the object that is passed to its constructor. skia::RefPtr makes this adoption explicit it via skia::AdoptRef and so is much clearer. This patch also adds a skia::ShareRef function which makes it explicit that the callsite is adopting a ref which is already owned somewhere else. Using AdoptRef vs. ShareRef seems much clearer than using SkRefPtr vs. skia::RefPtr. These are the remaining code sites that use internal Skia reference counted classes. Once these have been removed, then we can use a PRESUBMIT rule to prevent new uses from being added. BUG=none Review URL: https://chromiumcodereview.appspot.com/15004024 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@200989 0039d316-1c4b-4281-b951-d872f2087c98 --- cc/test/skia_common.h | 62 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 cc/test/skia_common.h (limited to 'cc/test/skia_common.h') diff --git a/cc/test/skia_common.h b/cc/test/skia_common.h new file mode 100644 index 0000000..4d82b76 --- /dev/null +++ b/cc/test/skia_common.h @@ -0,0 +1,62 @@ +// Copyright 2012 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CC_TEST_SKIA_COMMON_H_ +#define CC_TEST_SKIA_COMMON_H_ + +#include "base/memory/ref_counted.h" +#include "base/memory/scoped_ptr.h" +#include "skia/ext/lazy_pixel_ref.h" +#include "third_party/skia/include/core/SkBitmap.h" +#include "third_party/skia/include/core/SkFlattenable.h" + +namespace gfx { +class Rect; +class Size; +} + +namespace cc { +class Picture; + +class TestPixelRef : public SkPixelRef { + public: + TestPixelRef(int width, int height); + virtual ~TestPixelRef(); + + virtual SkFlattenable::Factory getFactory() OVERRIDE; + virtual void* onLockPixels(SkColorTable** color_table) OVERRIDE; + virtual void onUnlockPixels() OVERRIDE {} + virtual SkPixelRef* deepCopy( + SkBitmap::Config config, + const SkIRect* subset) OVERRIDE; + private: + scoped_ptr pixels_; +}; + +class TestLazyPixelRef : public skia::LazyPixelRef { + public: + TestLazyPixelRef(int width, int height); + virtual ~TestLazyPixelRef(); + + virtual SkFlattenable::Factory getFactory() OVERRIDE; + virtual void* onLockPixels(SkColorTable** color_table) OVERRIDE; + virtual void onUnlockPixels() OVERRIDE {} + virtual bool PrepareToDecode(const PrepareParams& params) OVERRIDE; + virtual SkPixelRef* deepCopy( + SkBitmap::Config config, + const SkIRect* subset) OVERRIDE; + virtual void Decode() OVERRIDE {} + private: + scoped_ptr pixels_; +}; + +void DrawPicture(unsigned char* buffer, + gfx::Rect layer_rect, + scoped_refptr picture); + +void CreateBitmap(gfx::Size size, const char* uri, SkBitmap* bitmap); + +} // namespace cc + +#endif // CC_TEST_SKIA_COMMON_H_ -- cgit v1.1