diff options
Diffstat (limited to 'libs/hwui/SkiaCanvasProxy.cpp')
-rw-r--r-- | libs/hwui/SkiaCanvasProxy.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/libs/hwui/SkiaCanvasProxy.cpp b/libs/hwui/SkiaCanvasProxy.cpp index 295ec4bbaf0a..811a3b0d664e 100644 --- a/libs/hwui/SkiaCanvasProxy.cpp +++ b/libs/hwui/SkiaCanvasProxy.cpp @@ -136,7 +136,7 @@ void SkiaCanvasProxy::onDrawSprite(const SkBitmap& bitmap, int left, int top, const SkPaint* paint) { // TODO: if bitmap is a subset, do we need to add pixelRefOrigin to src? mCanvas->save(SkCanvas::kMatrixClip_SaveFlag); - mCanvas->setMatrix(SkMatrix::I()); + mCanvas->setLocalMatrix(SkMatrix::I()); mCanvas->drawBitmap(bitmap, left, top, paint); mCanvas->restore(); } @@ -186,7 +186,9 @@ void SkiaCanvasProxy::didConcat(const SkMatrix& matrix) { } void SkiaCanvasProxy::didSetMatrix(const SkMatrix& matrix) { - mCanvas->setMatrix(matrix); + // SkCanvas setMatrix() is relative to the Canvas origin, but OpenGLRenderer's + // setMatrix() is relative to device origin; call setLocalMatrix() instead. + mCanvas->setLocalMatrix(matrix); } void SkiaCanvasProxy::onDrawDRRect(const SkRRect& outer, const SkRRect& inner, |