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

Commit 611fae13 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Fix compose shader child local matrix mutation" into oc-dev

parents 57d0c0bb f6b0e60b
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -76,6 +76,16 @@ public class ComposeShader extends Shader {
                mShaderA.getNativeInstance(), mShaderB.getNativeInstance(), mPorterDuffMode);
    }

    @Override
    void verifyNativeInstance() {
        if (mShaderA.getNativeInstance() != mNativeInstanceShaderA
                || mShaderB.getNativeInstance() != mNativeInstanceShaderB) {
            // Child shader native instance has been updated,
            // so our cached native instance is no longer valid - discard it
            discardNativeInstance();
        }
    }

    /**
     * @hide
     */
+11 −1
Original line number Diff line number Diff line
@@ -105,13 +105,20 @@ public class Shader {
        return 0;
    }

    private void discardNativeInstance() {
    void discardNativeInstance() {
        if (mNativeInstance != 0) {
            nativeSafeUnref(mNativeInstance);
            mNativeInstance = 0;
        }
    }

    /**
     * Callback for subclasses to call {@link #discardNativeInstance()} if the most recently
     * constructed native instance is no longer valid.
     */
    void verifyNativeInstance() {
    }

    @Override
    protected void finalize() throws Throwable {
        try {
@@ -148,6 +155,9 @@ public class Shader {
            throw new IllegalStateException("attempting to use a finalized Shader");
        }

        // verify mNativeInstance is valid
        verifyNativeInstance();

        if (mNativeInstance == 0) {
            mNativeInstance = createNativeInstance(mLocalMatrix == null
                    ? 0 : mLocalMatrix.native_instance);