Index: src/gpu/SkGpuDevice.cpp |
diff --git a/src/gpu/SkGpuDevice.cpp b/src/gpu/SkGpuDevice.cpp |
index beed2fab286bcd88a16d62168b7d1b5727a30e7e..c4ed0f9e2de4b72c038075366f1bc92452cc8523 100644 |
--- a/src/gpu/SkGpuDevice.cpp |
+++ b/src/gpu/SkGpuDevice.cpp |
@@ -10,6 +10,7 @@ |
#include "GrBlurUtils.h" |
#include "GrContext.h" |
#include "GrDrawContext.h" |
+#include "GrFontScaler.h" |
#include "GrGpu.h" |
#include "GrGpuResourcePriv.h" |
#include "GrLayerHoister.h" |
@@ -19,6 +20,7 @@ |
#include "GrTracing.h" |
#include "SkCanvasPriv.h" |
#include "SkDeviceImageFilterProxy.h" |
+#include "SkDeviceProperties.h" |
#include "SkDrawProcs.h" |
#include "SkErrorInternals.h" |
#include "SkGlyphCache.h" |
@@ -138,7 +140,7 @@ static SkDeviceProperties surfaceprops_to_deviceprops(const SkSurfaceProps* prop |
if (props) { |
return SkDeviceProperties(props->pixelGeometry()); |
} else { |
- return SkDeviceProperties(SkDeviceProperties::kLegacyLCD_InitType); |
+ return SkDeviceProperties(); |
} |
} |
@@ -168,8 +170,7 @@ SkGpuDevice::SkGpuDevice(GrRenderTarget* rt, int width, int height, |
fLegacyBitmap.setPixelRef(pr)->unref(); |
bool useDFT = fSurfaceProps.isUseDistanceFieldFonts(); |
- fTextContext = fContext->createTextContext(fRenderTarget, this->getLeakyProperties(), useDFT); |
- fDrawContext.reset(SkRef(fContext->drawContext())); |
+ fDrawContext.reset(SkRef(fContext->drawContext(&this->getLeakyProperties(), useDFT))); |
} |
GrRenderTarget* SkGpuDevice::CreateRenderTarget(GrContext* context, SkSurface::Budgeted budgeted, |
@@ -228,8 +229,6 @@ SkGpuDevice::~SkGpuDevice() { |
delete fDrawProcs; |
} |
- SkDELETE(fTextContext); |
- |
fRenderTarget->unref(); |
fContext->unref(); |
} |
@@ -347,7 +346,9 @@ void SkGpuDevice::replaceRenderTarget(bool shouldRetainContent) { |
SkPixelRef* pr = SkNEW_ARGS(SkGrPixelRef, (fRenderTarget->surfacePriv().info(), fRenderTarget)); |
fLegacyBitmap.setPixelRef(pr)->unref(); |
- fDrawContext.reset(SkRef(fRenderTarget->getContext()->drawContext())); |
+ bool useDFT = fSurfaceProps.isUseDistanceFieldFonts(); |
+ fDrawContext.reset(SkRef(fRenderTarget->getContext()->drawContext(&this->getLeakyProperties(), |
+ useDFT))); |
} |
/////////////////////////////////////////////////////////////////////////////// |
@@ -1630,7 +1631,7 @@ void SkGpuDevice::drawText(const SkDraw& draw, const void* text, |
SkDEBUGCODE(this->validate();) |
- fTextContext->drawText(fRenderTarget, fClip, grPaint, paint, *draw.fMatrix, |
+ fDrawContext->drawText(fRenderTarget, fClip, grPaint, paint, *draw.fMatrix, |
(const char *)text, byteLength, x, y, draw.fClip->getBounds()); |
} |
@@ -1647,7 +1648,7 @@ void SkGpuDevice::drawPosText(const SkDraw& draw, const void* text, size_t byteL |
SkDEBUGCODE(this->validate();) |
- fTextContext->drawPosText(fRenderTarget, fClip, grPaint, paint, *draw.fMatrix, |
+ fDrawContext->drawPosText(fRenderTarget, fClip, grPaint, paint, *draw.fMatrix, |
(const char *)text, byteLength, pos, scalarsPerPos, offset, |
draw.fClip->getBounds()); |
} |
@@ -1659,7 +1660,7 @@ void SkGpuDevice::drawTextBlob(const SkDraw& draw, const SkTextBlob* blob, SkSca |
SkDEBUGCODE(this->validate();) |
- fTextContext->drawTextBlob(fRenderTarget, fClip, paint, *draw.fMatrix, |
+ fDrawContext->drawTextBlob(fRenderTarget, fClip, paint, *draw.fMatrix, |
blob, x, y, drawFilter, draw.fClip->getBounds()); |
} |