| Index: src/effects/SkLightingImageFilter.cpp
|
| diff --git a/src/effects/SkLightingImageFilter.cpp b/src/effects/SkLightingImageFilter.cpp
|
| index aac54625fee1a6197f125e4dee9f95eda7b0b704..9b8277f0d426b315e49a04d833c2a28bb4fcf439 100644
|
| --- a/src/effects/SkLightingImageFilter.cpp
|
| +++ b/src/effects/SkLightingImageFilter.cpp
|
| @@ -248,6 +248,9 @@ SkPoint3 readPoint3(SkFlattenableReadBuffer& buffer) {
|
| point.fX = buffer.readScalar();
|
| point.fY = buffer.readScalar();
|
| point.fZ = buffer.readScalar();
|
| + buffer.validate(SkScalarIsFinite(point.fX) &&
|
| + SkScalarIsFinite(point.fY) &&
|
| + SkScalarIsFinite(point.fZ));
|
| return point;
|
| };
|
|
|
| @@ -526,6 +529,8 @@ public:
|
| virtual bool requiresFragmentPosition() const = 0;
|
| virtual SkLight* transform(const SkMatrix& matrix) const = 0;
|
|
|
| + SK_DEFINE_FLATTENABLE_TYPE_CHECKING_PROCS(SkLight)
|
| +
|
| protected:
|
| SkLight(SkColor color)
|
| : fColor(SkIntToScalar(SkColorGetR(color)),
|
| @@ -740,6 +745,10 @@ protected:
|
| fCosInnerConeAngle = buffer.readScalar();
|
| fConeScale = buffer.readScalar();
|
| fS = readPoint3(buffer);
|
| + buffer.validate(SkScalarIsFinite(fSpecularExponent) &&
|
| + SkScalarIsFinite(fCosOuterConeAngle) &&
|
| + SkScalarIsFinite(fCosInnerConeAngle) &&
|
| + SkScalarIsFinite(fConeScale));
|
| }
|
| SkSpotLight(const SkPoint3& location, const SkPoint3& target, SkScalar specularExponent, SkScalar cosOuterConeAngle, SkScalar cosInnerConeAngle, SkScalar coneScale, const SkPoint3& s, const SkPoint3& color)
|
| : INHERITED(color),
|
| @@ -861,7 +870,7 @@ SkImageFilter* SkLightingImageFilter::CreateSpotLitSpecular(
|
| }
|
|
|
| SkLightingImageFilter::~SkLightingImageFilter() {
|
| - fLight->unref();
|
| + SkSafeUnref(fLight);
|
| }
|
|
|
| SkLightingImageFilter::SkLightingImageFilter(SkFlattenableReadBuffer& buffer)
|
| @@ -869,6 +878,7 @@ SkLightingImageFilter::SkLightingImageFilter(SkFlattenableReadBuffer& buffer)
|
| {
|
| fLight = buffer.readFlattenableT<SkLight>();
|
| fSurfaceScale = buffer.readScalar();
|
| + buffer.validate(SkScalarIsFinite(fSurfaceScale));
|
| }
|
|
|
| void SkLightingImageFilter::flatten(SkFlattenableWriteBuffer& buffer) const {
|
| @@ -889,6 +899,7 @@ SkDiffuseLightingImageFilter::SkDiffuseLightingImageFilter(SkFlattenableReadBuff
|
| : INHERITED(buffer)
|
| {
|
| fKD = buffer.readScalar();
|
| + buffer.validate(SkScalarIsFinite(fKD));
|
| }
|
|
|
| void SkDiffuseLightingImageFilter::flatten(SkFlattenableWriteBuffer& buffer) const {
|
| @@ -966,6 +977,8 @@ SkSpecularLightingImageFilter::SkSpecularLightingImageFilter(SkFlattenableReadBu
|
| {
|
| fKS = buffer.readScalar();
|
| fShininess = buffer.readScalar();
|
| + buffer.validate(SkScalarIsFinite(fKS) &&
|
| + SkScalarIsFinite(fShininess));
|
| }
|
|
|
| void SkSpecularLightingImageFilter::flatten(SkFlattenableWriteBuffer& buffer) const {
|
|
|