diff options
author | reed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2011-02-07 15:30:46 +0000 |
---|---|---|
committer | reed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2011-02-07 15:30:46 +0000 |
commit | 82065d667f64e232bcde2ad849756a6096fcbe6f (patch) | |
tree | b286676278e48522d5a1e153ff5696d3f2088cc8 /src/effects | |
parent | 18908aacf360eaacf5e6a98dd57342adb98cf463 (diff) |
remove SkRefCnt safeRef() and safeUnref(), and replace the call-sites with
SkSafeRef() and SkSafeUnref().
This is basically a bug waiting to happen. An optimizing compiler can remove
checks for null on "this" if it chooses. However, SkRefCnt::safeRef() relies on
precisely this check...
void SkRefCnt::safeRef() {
if (this) {
this->ref();
}
}
Since a compiler might skip the if-clause, it breaks the intention of this
method, hence its removal.
static inline void SkSafeRef(SkRefCnt* obj) {
if (obj) {
obj->ref();
}
}
This form is not ignored by an optimizing compile, so we use it instead.
git-svn-id: http://skia.googlecode.com/svn/trunk@762 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'src/effects')
-rw-r--r-- | src/effects/SkBlurDrawLooper.cpp | 8 | ||||
-rw-r--r-- | src/effects/SkGradientShader.cpp | 4 | ||||
-rw-r--r-- | src/effects/SkLayerRasterizer.cpp | 42 |
3 files changed, 27 insertions, 27 deletions
diff --git a/src/effects/SkBlurDrawLooper.cpp b/src/effects/SkBlurDrawLooper.cpp index 2af60971c3..a3c4eacb6f 100644 --- a/src/effects/SkBlurDrawLooper.cpp +++ b/src/effects/SkBlurDrawLooper.cpp @@ -11,12 +11,12 @@ SkBlurDrawLooper::SkBlurDrawLooper(SkScalar radius, SkScalar dx, SkScalar dy, SkASSERT(flags <= kAll_BlurFlag); if (radius > 0) { - uint32_t blurFlags = flags & kIgnoreTransform_BlurFlag ? - SkBlurMaskFilter::kIgnoreTransform_BlurFlag : + uint32_t blurFlags = flags & kIgnoreTransform_BlurFlag ? + SkBlurMaskFilter::kIgnoreTransform_BlurFlag : SkBlurMaskFilter::kNone_BlurFlag; fBlur = SkBlurMaskFilter::Create(radius, - SkBlurMaskFilter::kNormal_BlurStyle, + SkBlurMaskFilter::kNormal_BlurStyle, blurFlags); } else @@ -34,7 +34,7 @@ SkBlurDrawLooper::SkBlurDrawLooper(SkFlattenableReadBuffer& buffer) SkBlurDrawLooper::~SkBlurDrawLooper() { - fBlur->safeUnref(); + SkSafeUnref(fBlur); } void SkBlurDrawLooper::flatten(SkFlattenableWriteBuffer& buffer) diff --git a/src/effects/SkGradientShader.cpp b/src/effects/SkGradientShader.cpp index 81a8d683f1..64a78c7f0e 100644 --- a/src/effects/SkGradientShader.cpp +++ b/src/effects/SkGradientShader.cpp @@ -169,7 +169,7 @@ Gradient_Shader::Gradient_Shader(const SkColor colors[], const SkScalar pos[], fCacheAlpha = 256; // init to a value that paint.getAlpha() can't return fMapper = mapper; - mapper->safeRef(); + SkSafeRef(mapper); SkASSERT((unsigned)mode < SkShader::kTileModeCount); SkASSERT(SkShader::kTileModeCount == SK_ARRAY_COUNT(gTileProcs)); @@ -321,7 +321,7 @@ Gradient_Shader::~Gradient_Shader() { if (fOrigColors != fStorage) { sk_free(fOrigColors); } - fMapper->safeUnref(); + SkSafeUnref(fMapper); } void Gradient_Shader::flatten(SkFlattenableWriteBuffer& buffer) { diff --git a/src/effects/SkLayerRasterizer.cpp b/src/effects/SkLayerRasterizer.cpp index 5aa883dfa2..168fbe91ea 100644 --- a/src/effects/SkLayerRasterizer.cpp +++ b/src/effects/SkLayerRasterizer.cpp @@ -2,16 +2,16 @@ ** ** Copyright 2006, The Android Open Source Project ** -** Licensed under the Apache License, Version 2.0 (the "License"); -** you may not use this file except in compliance with the License. -** You may obtain a copy of the License at +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at ** -** http://www.apache.org/licenses/LICENSE-2.0 +** http://www.apache.org/licenses/LICENSE-2.0 ** -** Unless required by applicable law or agreed to in writing, software -** distributed under the License is distributed on an "AS IS" BASIS, -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -** See the License for the specific language governing permissions and +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and ** limitations under the License. */ @@ -59,7 +59,7 @@ static bool compute_bounds(const SkDeque& layers, const SkPath& path, const SkMa SkLayerRasterizer_Rec* rec; bounds->set(SK_MaxS32, SK_MaxS32, SK_MinS32, SK_MinS32); - + while ((rec = (SkLayerRasterizer_Rec*)iter.next()) != NULL) { const SkPaint& paint = rec->fPaint; @@ -117,13 +117,13 @@ bool SkLayerRasterizer::onRasterize(const SkPath& path, const SkMatrix& matrix, } if (SkMask::kJustComputeBounds_CreateMode != mode) - { + { SkBitmap device; SkDraw draw; SkMatrix translatedMatrix; // this translates us to our local pixels SkMatrix drawMatrix; // this translates the path by each layer's offset SkRegion rectClip; - + rectClip.setRect(0, 0, mask->fBounds.width(), mask->fBounds.height()); translatedMatrix = matrix; @@ -138,7 +138,7 @@ bool SkLayerRasterizer::onRasterize(const SkPath& path, const SkMatrix& matrix, draw.fClip = &rectClip; // we set the matrixproc in the loop, as the matrix changes each time (potentially) draw.fBounder = NULL; - + SkDeque::Iter iter(fLayers); SkLayerRasterizer_Rec* rec; @@ -158,7 +158,7 @@ static void paint_read(SkPaint* paint, SkFlattenableReadBuffer& buffer) paint->setAntiAlias(buffer.readBool()); paint->setStyle((SkPaint::Style)buffer.readU8()); paint->setAlpha(buffer.readU8()); - + if (paint->getStyle() != SkPaint::kFill_Style) { paint->setStrokeWidth(buffer.readScalar()); @@ -167,10 +167,10 @@ static void paint_read(SkPaint* paint, SkFlattenableReadBuffer& buffer) paint->setStrokeJoin((SkPaint::Join)buffer.readU8()); } - paint->setMaskFilter((SkMaskFilter*)buffer.readFlattenable())->safeUnref(); - paint->setPathEffect((SkPathEffect*)buffer.readFlattenable())->safeUnref(); - paint->setRasterizer((SkRasterizer*)buffer.readFlattenable())->safeUnref(); - paint->setXfermode((SkXfermode*)buffer.readFlattenable())->safeUnref(); + SkSafeUnref(paint->setMaskFilter((SkMaskFilter*)buffer.readFlattenable())); + SkSafeUnref(paint->setPathEffect((SkPathEffect*)buffer.readFlattenable())); + SkSafeUnref(paint->setRasterizer((SkRasterizer*)buffer.readFlattenable())); + SkSafeUnref(paint->setXfermode((SkXfermode*)buffer.readFlattenable())); } static void paint_write(const SkPaint& paint, SkFlattenableWriteBuffer& buffer) @@ -178,7 +178,7 @@ static void paint_write(const SkPaint& paint, SkFlattenableWriteBuffer& buffer) buffer.writeBool(paint.isAntiAlias()); buffer.write8(paint.getStyle()); buffer.write8(paint.getAlpha()); - + if (paint.getStyle() != SkPaint::kFill_Style) { buffer.writeScalar(paint.getStrokeWidth()); @@ -186,7 +186,7 @@ static void paint_write(const SkPaint& paint, SkFlattenableWriteBuffer& buffer) buffer.write8(paint.getStrokeCap()); buffer.write8(paint.getStrokeJoin()); } - + buffer.writeFlattenable(paint.getMaskFilter()); buffer.writeFlattenable(paint.getPathEffect()); buffer.writeFlattenable(paint.getRasterizer()); @@ -197,11 +197,11 @@ SkLayerRasterizer::SkLayerRasterizer(SkFlattenableReadBuffer& buffer) : SkRasterizer(buffer), fLayers(sizeof(SkLayerRasterizer_Rec)) { int count = buffer.readS32(); - + for (int i = 0; i < count; i++) { SkLayerRasterizer_Rec* rec = (SkLayerRasterizer_Rec*)fLayers.push_back(); - + #if 0 new (&rec->fPaint) SkPaint(buffer); #else |