Merge "Fix bug, change crashes to warnings"
This commit is contained in:
@@ -216,7 +216,7 @@ public:
|
||||
virtual void drawVertices(SkCanvas::VertexMode vertexMode, int vertexCount,
|
||||
const float* verts, const float* tex, const int* colors,
|
||||
const uint16_t* indices, int indexCount, const SkPaint& paint) override
|
||||
{ LOG_ALWAYS_FATAL("DisplayListRenderer does not support drawVertices()"); }
|
||||
{ /* DisplayListRenderer does not support drawVertices(); ignore */ }
|
||||
|
||||
// Bitmap-based
|
||||
virtual void drawBitmap(const SkBitmap& bitmap, float left, float top, const SkPaint* paint) override;
|
||||
|
||||
@@ -22,9 +22,10 @@
|
||||
namespace android {
|
||||
namespace uirenderer {
|
||||
|
||||
SkiaCanvasProxy::SkiaCanvasProxy(Canvas* canvas)
|
||||
SkiaCanvasProxy::SkiaCanvasProxy(Canvas* canvas, bool filterHwuiCalls)
|
||||
: INHERITED(canvas->width(), canvas->height())
|
||||
, mCanvas(canvas) {}
|
||||
, mCanvas(canvas)
|
||||
, mFilterHwuiCalls(filterHwuiCalls) {}
|
||||
|
||||
void SkiaCanvasProxy::onDrawPaint(const SkPaint& paint) {
|
||||
mCanvas->drawPaint(paint);
|
||||
@@ -32,6 +33,10 @@ void SkiaCanvasProxy::onDrawPaint(const SkPaint& paint) {
|
||||
|
||||
void SkiaCanvasProxy::onDrawPoints(PointMode pointMode, size_t count, const SkPoint pts[],
|
||||
const SkPaint& paint) {
|
||||
if (!pts || count == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
// convert the SkPoints into floats
|
||||
SK_COMPILE_ASSERT(sizeof(SkPoint) == sizeof(float)*2, SkPoint_is_no_longer_2_floats);
|
||||
const size_t floatCount = count << 1;
|
||||
@@ -118,6 +123,9 @@ void SkiaCanvasProxy::onDrawSprite(const SkBitmap& bitmap, int left, int top,
|
||||
void SkiaCanvasProxy::onDrawVertices(VertexMode mode, int vertexCount, const SkPoint vertices[],
|
||||
const SkPoint texs[], const SkColor colors[], SkXfermode*, const uint16_t indices[],
|
||||
int indexCount, const SkPaint& paint) {
|
||||
if (mFilterHwuiCalls) {
|
||||
return;
|
||||
}
|
||||
// convert the SkPoints into floats
|
||||
SK_COMPILE_ASSERT(sizeof(SkPoint) == sizeof(float)*2, SkPoint_is_no_longer_2_floats);
|
||||
const int floatCount = vertexCount << 1;
|
||||
@@ -312,6 +320,9 @@ void SkiaCanvasProxy::onDrawTextBlob(const SkTextBlob* blob, SkScalar x, SkScala
|
||||
|
||||
void SkiaCanvasProxy::onDrawPatch(const SkPoint cubics[12], const SkColor colors[4],
|
||||
const SkPoint texCoords[4], SkXfermode* xmode, const SkPaint& paint) {
|
||||
if (mFilterHwuiCalls) {
|
||||
return;
|
||||
}
|
||||
SkPatchUtils::VertexData data;
|
||||
|
||||
SkMatrix matrix;
|
||||
|
||||
@@ -27,16 +27,19 @@ namespace uirenderer {
|
||||
|
||||
/**
|
||||
* This class serves as a proxy between Skia's SkCanvas and Android Framework's
|
||||
* Canvas. The class does not maintain any state and will pass through any request
|
||||
* directly to the Canvas provided in the constructor.
|
||||
* Canvas. The class does not maintain any draw-related state and will pass
|
||||
* through most requests directly to the Canvas provided in the constructor.
|
||||
*
|
||||
* Upon construction it is expected that the provided Canvas has already been
|
||||
* prepared for recording and will continue to be in the recording state while
|
||||
* this proxy class is being used.
|
||||
*
|
||||
* If filterHwuiCalls is true, the proxy silently ignores away draw calls that
|
||||
* aren't supported by HWUI.
|
||||
*/
|
||||
class ANDROID_API SkiaCanvasProxy : public SkCanvas {
|
||||
public:
|
||||
SkiaCanvasProxy(Canvas* canvas);
|
||||
SkiaCanvasProxy(Canvas* canvas, bool filterHwuiCalls = false);
|
||||
virtual ~SkiaCanvasProxy() {}
|
||||
|
||||
protected:
|
||||
@@ -94,6 +97,7 @@ protected:
|
||||
|
||||
private:
|
||||
Canvas* mCanvas;
|
||||
bool mFilterHwuiCalls;
|
||||
|
||||
typedef SkCanvas INHERITED;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user