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

Commit ebcf70b1 authored by Derek Sollenberger's avatar Derek Sollenberger Committed by Android (Google) Code Review
Browse files

Merge "Revert "Refactor setting an SkPaint onto a hwui Layer.""

parents 5f97e9e9 90d0c75e
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -66,7 +66,8 @@ final class HardwareLayer {
     * @see View#setLayerPaint(android.graphics.Paint)
     */
    public void setLayerPaint(Paint paint) {
        nSetLayerPaint(mFinalizer.mDeferredUpdater, paint.mNativePaint);
        nSetLayerPaint(mFinalizer.mDeferredUpdater, paint.mNativePaint,
                paint.getColorFilter() != null ? paint.getColorFilter().native_instance : 0);
    }

    /**
@@ -249,7 +250,7 @@ final class HardwareLayer {
    private static native void nDestroyLayerUpdater(long layerUpdater);

    private static native boolean nPrepare(long layerUpdater, int width, int height, boolean isOpaque);
    private static native void nSetLayerPaint(long layerUpdater, long paint);
    private static native void nSetLayerPaint(long layerUpdater, long paint, long colorFilter);
    private static native void nSetTransform(long layerUpdater, long matrix);
    private static native void nSetSurfaceTexture(long layerUpdater,
            SurfaceTexture surface, boolean isAlreadyAttached);
+4 −2
Original line number Diff line number Diff line
@@ -88,11 +88,13 @@ static jboolean android_view_HardwareLayer_prepare(JNIEnv* env, jobject clazz,
}

static void android_view_HardwareLayer_setLayerPaint(JNIEnv* env, jobject clazz,
        jlong layerUpdaterPtr, jlong paintPtr) {
        jlong layerUpdaterPtr, jlong paintPtr, jlong colorFilterPtr) {
    DeferredLayerUpdater* layer = reinterpret_cast<DeferredLayerUpdater*>(layerUpdaterPtr);
    if (layer) {
        SkPaint* paint = reinterpret_cast<SkPaint*>(paintPtr);
        SkColorFilter* colorFilter = reinterpret_cast<SkColorFilter*>(colorFilterPtr);
        layer->setPaint(paint);
        layer->setColorFilter(colorFilter);
    }
}

@@ -160,7 +162,7 @@ static JNINativeMethod gMethods[] = {
    { "nDestroyLayerUpdater",    "(J)V",       (void*) android_view_HardwareLayer_destroyLayerUpdater },

    { "nPrepare",                "(JIIZ)Z",    (void*) android_view_HardwareLayer_prepare },
    { "nSetLayerPaint",          "(JJ)V",      (void*) android_view_HardwareLayer_setLayerPaint },
    { "nSetLayerPaint",          "(JJJ)V",     (void*) android_view_HardwareLayer_setLayerPaint },
    { "nSetTransform",           "(JJ)V",      (void*) android_view_HardwareLayer_setTransform },
    { "nSetSurfaceTexture",      "(JLandroid/graphics/SurfaceTexture;Z)V",
            (void*) android_view_HardwareLayer_setSurfaceTexture },
+4 −7
Original line number Diff line number Diff line
@@ -32,26 +32,24 @@ DeferredLayerUpdater::DeferredLayerUpdater(Layer* layer, OpenGLRenderer* rendere
        , mRenderer(renderer)
        , mCaches(Caches::getInstance()) {
    mCaches.resourceCache.incrementRefcount(mLayer);
    SkRefCnt_SafeAssign(mColorFilter, mLayer->getColorFilter());
    mWidth = mLayer->layer.getWidth();
    mHeight = mLayer->layer.getHeight();
    mBlend = mLayer->isBlend();
    mColorFilter = mLayer->getColorFilter();
    mAlpha = mLayer->getAlpha();
    mMode = mLayer->getMode();
    mDirtyRect.setEmpty();
}

DeferredLayerUpdater::~DeferredLayerUpdater() {
    SkSafeUnref(mColorFilter);
    setColorFilter(NULL);
    if (mLayer) {
        mCaches.resourceCache.decrementRefcount(mLayer);
    }
    delete mRenderer;
}

void DeferredLayerUpdater::setPaint(const SkPaint* paint) {
    OpenGLRenderer::getAlphaAndModeDirect(paint, &mAlpha, &mMode);
    SkColorFilter* colorFilter = (paint) ? paint->getColorFilter() : NULL;
void DeferredLayerUpdater::setColorFilter(SkColorFilter* colorFilter) {
    SkRefCnt_SafeAssign(mColorFilter, colorFilter);
}

@@ -138,10 +136,9 @@ void DeferredLayerUpdater::applyDeferred(DeferredLayerUpdater* deferredApply) {
    deferredApply->mSurfaceTexture = mSurfaceTexture;
    deferredApply->mNeedsGLContextAttach = mNeedsGLContextAttach;
    deferredApply->mUpdateTexImage = mUpdateTexImage;
    deferredApply->setColorFilter(mColorFilter);
    deferredApply->setTransform(mTransform);

    SkRefCnt_SafeAssign(deferredApply->mColorFilter, mColorFilter);

    mDisplayList = 0;
    mDirtyRect.setEmpty();
    mTransform = 0;
+5 −1
Original line number Diff line number Diff line
@@ -73,7 +73,11 @@ public:
    ANDROID_API void setDisplayList(DisplayList* displayList,
                int left, int top, int right, int bottom);

    ANDROID_API void setPaint(const SkPaint* paint);
    ANDROID_API void setPaint(const SkPaint* paint) {
        OpenGLRenderer::getAlphaAndModeDirect(paint, &mAlpha, &mMode);
    }

    ANDROID_API void setColorFilter(SkColorFilter* colorFilter);

    ANDROID_API bool apply();
    ANDROID_API void applyDeferred(DeferredLayerUpdater* deferredApply);
+1 −2
Original line number Diff line number Diff line
@@ -131,9 +131,8 @@ void Layer::removeFbo(bool flush) {
    }
}

void Layer::setPaint(const SkPaint* paint) {
void Layer::setPaint(SkPaint* paint) {
    OpenGLRenderer::getAlphaAndModeDirect(paint, &alpha, &mode);
    setColorFilter((paint) ? paint->getColorFilter() : NULL);
}

void Layer::setColorFilter(SkColorFilter* filter) {
Loading