Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0b860626 authored by Derek Sollenberger's avatar Derek Sollenberger
Browse files

Fix DrawFilter's usage in HWUI.

Also add additional compile time checks to ensure that the Java
and Skia APIs remain in sync.

bug:19890753
Change-Id: I8503cacf2859307e3f480a78603f9f05901b58cc
parent 2a16460c
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -101,6 +101,16 @@ public:
    }

    static jlong init(JNIEnv* env, jobject clazz) {
        SK_COMPILE_ASSERT(1 <<  0 == SkPaint::kAntiAlias_Flag,          paint_flags_mismatch);
        SK_COMPILE_ASSERT(1 <<  2 == SkPaint::kDither_Flag,             paint_flags_mismatch);
        SK_COMPILE_ASSERT(1 <<  3 == SkPaint::kUnderlineText_Flag,      paint_flags_mismatch);
        SK_COMPILE_ASSERT(1 <<  4 == SkPaint::kStrikeThruText_Flag,     paint_flags_mismatch);
        SK_COMPILE_ASSERT(1 <<  5 == SkPaint::kFakeBoldText_Flag,       paint_flags_mismatch);
        SK_COMPILE_ASSERT(1 <<  6 == SkPaint::kLinearText_Flag,         paint_flags_mismatch);
        SK_COMPILE_ASSERT(1 <<  7 == SkPaint::kSubpixelText_Flag,       paint_flags_mismatch);
        SK_COMPILE_ASSERT(1 <<  8 == SkPaint::kDevKernText_Flag,        paint_flags_mismatch);
        SK_COMPILE_ASSERT(1 << 10 == SkPaint::kEmbeddedBitmapText_Flag, paint_flags_mismatch);

        Paint* obj = new Paint();
        defaultSettingsForAndroid(obj);
        return reinterpret_cast<jlong>(obj);
+1 −1
Original line number Diff line number Diff line
@@ -484,7 +484,7 @@ void DisplayListRenderer::drawRects(const float* rects, int count, const SkPaint
}

void DisplayListRenderer::setDrawFilter(SkDrawFilter* filter) {
    mDrawFilter.reset(filter);
    mDrawFilter.reset(SkSafeRef(filter));
}

void DisplayListRenderer::insertReorderBarrier(bool enableReorder) {
+2 −1
Original line number Diff line number Diff line
@@ -296,8 +296,9 @@ private:
        // so that we don't need to modify the paint every time we access it.
        SkTLazy<SkPaint> filteredPaint;
        if (mDrawFilter.get()) {
            paint = filteredPaint.init();
            filteredPaint.set(*paint);
            mDrawFilter->filter(filteredPaint.get(), SkDrawFilter::kPaint_Type);
            paint = filteredPaint.get();
        }

        // compute the hash key for the paint and check the cache.