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

Commit f0f4668b authored by Android Build Merger (Role)'s avatar Android Build Merger (Role) Committed by Android (Google) Code Review
Browse files

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

Merge "Merge "Fix compose shader child local matrix mutation" into oc-dev am: 611fae13 am: 88677af9"
parents 9fb4c29d 3eccc9b7
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);