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

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

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

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

    /**
@@ -250,7 +249,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, long colorFilter);
    private static native void nSetLayerPaint(long layerUpdater, long paint);
    private static native void nSetTransform(long layerUpdater, long matrix);
    private static native void nSetSurfaceTexture(long layerUpdater,
            SurfaceTexture surface, boolean isAlreadyAttached);
+2 −4
Original line number Diff line number Diff line
@@ -88,13 +88,11 @@ 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 colorFilterPtr) {
        jlong layerUpdaterPtr, jlong paintPtr) {
    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);
    }
}

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

    { "nPrepare",                "(JIIZ)Z",    (void*) android_view_HardwareLayer_prepare },
    { "nSetLayerPaint",          "(JJJ)V",     (void*) android_view_HardwareLayer_setLayerPaint },
    { "nSetLayerPaint",          "(JJ)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 },
+7 −4
Original line number Diff line number Diff line
@@ -32,24 +32,26 @@ 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() {
    setColorFilter(NULL);
    SkSafeUnref(mColorFilter);
    if (mLayer) {
        mCaches.resourceCache.decrementRefcount(mLayer);
    }
    delete mRenderer;
}

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

@@ -136,9 +138,10 @@ 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;
+1 −5
Original line number Diff line number Diff line
@@ -73,11 +73,7 @@ public:
    ANDROID_API void setDisplayList(DisplayList* displayList,
                int left, int top, int right, int bottom);

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

    ANDROID_API void setColorFilter(SkColorFilter* colorFilter);
    ANDROID_API void setPaint(const SkPaint* paint);

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

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

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