diff options
author | enne@chromium.org <enne@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-05-18 09:40:26 +0000 |
---|---|---|
committer | enne@chromium.org <enne@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-05-18 09:40:26 +0000 |
commit | 584abe77f84b1bf56e9633e63d4fe60947eabe27 (patch) | |
tree | 8f362a9a98484c54f67968d42705c82f16328b0c /cc/test/skia_common.h | |
parent | 5a260744b81b9d3be148c2ac2b9387ab2f015213 (diff) | |
download | chromium_src-584abe77f84b1bf56e9633e63d4fe60947eabe27.zip chromium_src-584abe77f84b1bf56e9633e63d4fe60947eabe27.tar.gz chromium_src-584abe77f84b1bf56e9633e63d4fe60947eabe27.tar.bz2 |
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
Diffstat (limited to 'cc/test/skia_common.h')
-rw-r--r-- | cc/test/skia_common.h | 62 |
1 files changed, 62 insertions, 0 deletions
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<char[]> 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<char[]> pixels_; +}; + +void DrawPicture(unsigned char* buffer, + gfx::Rect layer_rect, + scoped_refptr<Picture> picture); + +void CreateBitmap(gfx::Size size, const char* uri, SkBitmap* bitmap); + +} // namespace cc + +#endif // CC_TEST_SKIA_COMMON_H_ |