Bug 1362221. InlineTranslator should track DrawTargets. r=lsalzman

Previously we always used the initial DrawTarget regardless of what was being drawn.
This commit is contained in:
Jeff Muizelaar 2017-05-04 21:33:10 -04:00
parent 879d41f625
commit 2d0ade0f7c
2 changed files with 13 additions and 3 deletions

View File

@ -77,6 +77,7 @@ InlineTranslator::CreateDrawTarget(ReferencePtr aRefPtr,
gfx::SurfaceFormat aFormat)
{
RefPtr<DrawTarget> drawTarget = mBaseDT;
AddDrawTarget(aRefPtr, drawTarget);
return drawTarget.forget();
}

View File

@ -36,7 +36,9 @@ public:
DrawTarget* LookupDrawTarget(ReferencePtr aRefPtr) final
{
return mBaseDT;
DrawTarget* result = mDrawTargets.GetWeak(aRefPtr);
MOZ_ASSERT(result);
return result;
}
Path* LookupPath(ReferencePtr aRefPtr) final
@ -88,7 +90,10 @@ public:
return result;
}
void AddDrawTarget(ReferencePtr aRefPtr, DrawTarget *aDT) final { }
void AddDrawTarget(ReferencePtr aRefPtr, DrawTarget *aDT) final
{
mDrawTargets.Put(aRefPtr, aDT);
}
void AddPath(ReferencePtr aRefPtr, Path *aPath) final
{
@ -126,7 +131,10 @@ public:
mNativeFontResources.Put(aKey, aScaledFontResouce);
}
void RemoveDrawTarget(ReferencePtr aRefPtr) final { }
void RemoveDrawTarget(ReferencePtr aRefPtr) final
{
mDrawTargets.Remove(aRefPtr);
}
void RemovePath(ReferencePtr aRefPtr) final
{
@ -171,6 +179,7 @@ private:
RefPtr<DrawTarget> mBaseDT;
Matrix mBaseTransform;
nsRefPtrHashtable<nsPtrHashKey<void>, DrawTarget> mDrawTargets;
nsRefPtrHashtable<nsPtrHashKey<void>, Path> mPaths;
nsRefPtrHashtable<nsPtrHashKey<void>, SourceSurface> mSourceSurfaces;
nsRefPtrHashtable<nsPtrHashKey<void>, FilterNode> mFilterNodes;