| Index: src/gpu/GrBitmapTextContext.cpp
 | 
| diff --git a/src/gpu/GrBitmapTextContext.cpp b/src/gpu/GrBitmapTextContext.cpp
 | 
| index 488aa137e9a14f5c72033df5d74dedcea9d639ae..c7beb14e4204d58f3e01f74908a9edc3a047bc39 100755
 | 
| --- a/src/gpu/GrBitmapTextContext.cpp
 | 
| +++ b/src/gpu/GrBitmapTextContext.cpp
 | 
| @@ -29,15 +29,9 @@ static const int kGlyphCoordsAttributeIndex = 1;
 | 
|  SK_CONF_DECLARE(bool, c_DumpFontCache, "gpu.dumpFontCache", false,
 | 
|                  "Dump the contents of the font cache before every purge.");
 | 
|  
 | 
| -bool GrBitmapTextContext::CanDraw(const SkPaint& paint, const SkMatrix& ctm) {
 | 
| -    return !SkDraw::ShouldDrawTextAsPaths(paint, ctm);
 | 
| -}
 | 
| -
 | 
|  GrBitmapTextContext::GrBitmapTextContext(GrContext* context,
 | 
| -                                         const GrPaint& grPaint,
 | 
| -                                         const SkPaint& skPaint,
 | 
|                                           const SkDeviceProperties& properties)
 | 
| -                                       : GrTextContext(context, grPaint, skPaint, properties) {
 | 
| +                                       : GrTextContext(context, properties) {
 | 
|      fStrike = NULL;
 | 
|  
 | 
|      fCurrTexture = NULL;
 | 
| @@ -51,6 +45,10 @@ GrBitmapTextContext::~GrBitmapTextContext() {
 | 
|      this->flushGlyphs();
 | 
|  }
 | 
|  
 | 
| +bool GrBitmapTextContext::canDraw(const SkPaint& paint) {
 | 
| +    return !SkDraw::ShouldDrawTextAsPaths(paint, fContext->getMatrix());
 | 
| +}
 | 
| +
 | 
|  static inline GrColor skcolor_to_grcolor_nopremultiply(SkColor c) {
 | 
|      unsigned r = SkColorGetR(c);
 | 
|      unsigned g = SkColorGetG(c);
 | 
| @@ -117,7 +115,26 @@ void GrBitmapTextContext::flushGlyphs() {
 | 
|      }
 | 
|  }
 | 
|  
 | 
| -void GrBitmapTextContext::drawText(const char text[], size_t byteLength,
 | 
| +inline void GrBitmapTextContext::init(const GrPaint& paint, const SkPaint& skPaint) {
 | 
| +    GrTextContext::init(paint, skPaint);
 | 
| +
 | 
| +    fStrike = NULL;
 | 
| +
 | 
| +    fCurrTexture = NULL;
 | 
| +    fCurrVertex = 0;
 | 
| +
 | 
| +    fVertices = NULL;
 | 
| +    fMaxVertices = 0;
 | 
| +}
 | 
| +
 | 
| +inline void GrBitmapTextContext::finish() {
 | 
| +    flushGlyphs();
 | 
| +
 | 
| +    GrTextContext::finish();
 | 
| +}
 | 
| +
 | 
| +void GrBitmapTextContext::drawText(const GrPaint& paint, const SkPaint& skPaint, 
 | 
| +                                   const char text[], size_t byteLength,
 | 
|                                     SkScalar x, SkScalar y) {
 | 
|      SkASSERT(byteLength == 0 || text != NULL);
 | 
|  
 | 
| @@ -126,6 +143,8 @@ void GrBitmapTextContext::drawText(const char text[], size_t byteLength,
 | 
|          return;
 | 
|      }
 | 
|  
 | 
| +    this->init(paint, skPaint);
 | 
| +
 | 
|      SkDrawCacheProc glyphCacheProc = fSkPaint.getDrawCacheProc();
 | 
|  
 | 
|      SkAutoGlyphCache    autoCache(fSkPaint, &fDeviceProperties, &fContext->getMatrix());
 | 
| @@ -201,6 +220,8 @@ void GrBitmapTextContext::drawText(const char text[], size_t byteLength,
 | 
|          fx += glyph.fAdvanceX;
 | 
|          fy += glyph.fAdvanceY;
 | 
|      }
 | 
| +
 | 
| +    this->finish();
 | 
|  }
 | 
|  
 | 
|  ///////////////////////////////////////////////////////////////////////////////
 | 
| @@ -295,7 +316,8 @@ BitmapTextMapState::Proc BitmapTextMapState::pickProc(int scalarsPerPosition) {
 | 
|  
 | 
|  ///////////////////////////////////////////////////////////////////////////////
 | 
|  
 | 
| -void GrBitmapTextContext::drawPosText(const char text[], size_t byteLength,
 | 
| +void GrBitmapTextContext::drawPosText(const GrPaint& paint, const SkPaint& skPaint, 
 | 
| +                                      const char text[], size_t byteLength,
 | 
|                                        const SkScalar pos[], SkScalar constY,
 | 
|                                        int scalarsPerPosition) {
 | 
|      SkASSERT(byteLength == 0 || text != NULL);
 | 
| @@ -306,6 +328,8 @@ void GrBitmapTextContext::drawPosText(const char text[], size_t byteLength,
 | 
|          return;
 | 
|      }
 | 
|  
 | 
| +    this->init(paint, skPaint);
 | 
| +
 | 
|      SkDrawCacheProc glyphCacheProc = fSkPaint.getDrawCacheProc();
 | 
|  
 | 
|      SkAutoGlyphCache    autoCache(fSkPaint, &fDeviceProperties, &fContext->getMatrix());
 | 
| @@ -439,6 +463,8 @@ void GrBitmapTextContext::drawPosText(const char text[], size_t byteLength,
 | 
|              }
 | 
|          }
 | 
|      }
 | 
| +
 | 
| +    this->finish();
 | 
|  }
 | 
|  
 | 
|  namespace {
 | 
| 
 |