Bug 935778 - Part 0.7: Emit the correct type name from FilterNodeLightingSoftware; r=jrmuizel, parts r=dbaron

This commit is contained in:
Ehsan Akhgari 2014-02-26 10:13:48 -05:00
parent 33fc0403e7
commit 149b11176b
3 changed files with 28 additions and 11 deletions

View File

@ -534,22 +534,22 @@ FilterNodeSoftware::Create(FilterType aType)
filter = new FilterNodeUnpremultiplySoftware();
break;
case FilterType::POINT_DIFFUSE:
filter = new FilterNodeLightingSoftware<PointLightSoftware, DiffuseLightingSoftware>();
filter = new FilterNodeLightingSoftware<PointLightSoftware, DiffuseLightingSoftware>("FilterNodeLightingSoftware<PointLight, DiffuseLighting>");
break;
case FilterType::POINT_SPECULAR:
filter = new FilterNodeLightingSoftware<PointLightSoftware, SpecularLightingSoftware>();
filter = new FilterNodeLightingSoftware<PointLightSoftware, SpecularLightingSoftware>("FilterNodeLightingSoftware<PointLight, SpecularLighting>");
break;
case FilterType::SPOT_DIFFUSE:
filter = new FilterNodeLightingSoftware<SpotLightSoftware, DiffuseLightingSoftware>();
filter = new FilterNodeLightingSoftware<SpotLightSoftware, DiffuseLightingSoftware>("FilterNodeLightingSoftware<SpotLight, DiffuseLighting>");
break;
case FilterType::SPOT_SPECULAR:
filter = new FilterNodeLightingSoftware<SpotLightSoftware, SpecularLightingSoftware>();
filter = new FilterNodeLightingSoftware<SpotLightSoftware, SpecularLightingSoftware>("FilterNodeLightingSoftware<SpotLight, SpecularLighting>");
break;
case FilterType::DISTANT_DIFFUSE:
filter = new FilterNodeLightingSoftware<DistantLightSoftware, DiffuseLightingSoftware>();
filter = new FilterNodeLightingSoftware<DistantLightSoftware, DiffuseLightingSoftware>("FilterNodeLightingSoftware<DistantLight, DiffuseLighting>");
break;
case FilterType::DISTANT_SPECULAR:
filter = new FilterNodeLightingSoftware<DistantLightSoftware, SpecularLightingSoftware>();
filter = new FilterNodeLightingSoftware<DistantLightSoftware, SpecularLightingSoftware>("FilterNodeLightingSoftware<DistantLight, SpecularLighting>");
break;
}
return filter;
@ -3059,8 +3059,11 @@ static inline Point3D Normalized(const Point3D &vec) {
}
template<typename LightType, typename LightingType>
FilterNodeLightingSoftware<LightType, LightingType>::FilterNodeLightingSoftware()
FilterNodeLightingSoftware<LightType, LightingType>::FilterNodeLightingSoftware(const char* aTypeName)
: mSurfaceScale(0)
#if defined(MOZILLA_INTERNAL_API) && (defined(DEBUG) || defined(FORCE_BUILD_REFCNT_LOGGING))
, mTypeName(aTypeName)
#endif
{}
template<typename LightType, typename LightingType>

View File

@ -683,8 +683,12 @@ template<typename LightType, typename LightingType>
class FilterNodeLightingSoftware : public FilterNodeSoftware
{
public:
MOZ_DECLARE_REFCOUNTED_VIRTUAL_TYPENAME(FilterNodeLightingSoftware)
FilterNodeLightingSoftware();
#if defined(MOZILLA_INTERNAL_API) && (defined(DEBUG) || defined(FORCE_BUILD_REFCNT_LOGGING))
// Helpers for refcounted
virtual const char* typeName() const MOZ_OVERRIDE { return mTypeName; }
virtual size_t typeSize() const MOZ_OVERRIDE { return sizeof(*this); }
#endif
explicit FilterNodeLightingSoftware(const char* aTypeName);
virtual const char* GetName() MOZ_OVERRIDE { return "Lighting"; }
using FilterNodeSoftware::SetAttribute;
virtual void SetAttribute(uint32_t aIndex, Float) MOZ_OVERRIDE;
@ -709,6 +713,9 @@ private:
Float mSurfaceScale;
Size mKernelUnitLength;
Color mColor;
#if defined(MOZILLA_INTERNAL_API) && (defined(DEBUG) || defined(FORCE_BUILD_REFCNT_LOGGING))
const char* mTypeName;
#endif
};
}

View File

@ -101,11 +101,18 @@ class RefCounted
mutable typename Conditional<Atomicity == AtomicRefCount, Atomic<MozRefCountType>, MozRefCountType>::Type refCnt;
};
#if defined(MOZILLA_INTERNAL_API) && (defined(DEBUG) || defined(FORCE_BUILD_REFCNT_LOGGING))
#define MOZ_DECLARE_REFCOUNTED_TYPENAME(T) \
const char* typeName() const { return #T; }
const char* typeName() const { return #T; } \
size_t typeSize() const { return sizeof(*this); }
#define MOZ_DECLARE_REFCOUNTED_VIRTUAL_TYPENAME(T) \
virtual const char* typeName() const { return #T; }
virtual const char* typeName() const { return #T; } \
virtual size_t typeSize() const { return sizeof(*this); }
#else
#define MOZ_DECLARE_REFCOUNTED_TYPENAME(T)
#define MOZ_DECLARE_REFCOUNTED_VIRTUAL_TYPENAME(T)
#endif
}