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

Commit 2f708ce9 authored by Pannag Sanketi's avatar Pannag Sanketi
Browse files

Resolving the black screen / crash in effects

b:/6278826
The SurfaceTextureTarget Filter was not unregistering the surface
on closing leading to crashes and blank screens.

Change-Id: Ia9f6fc69b92d5a5e2e1e3803969152d11528aa3d
parent 1b8f499a
Loading
Loading
Loading
Loading
+18 −3
Original line number Diff line number Diff line
@@ -160,8 +160,21 @@ public class SurfaceTextureTarget extends Filter {
    @Override
    public void open(FilterContext context) {
        // Set up SurfaceTexture internals
        mSurfaceId = context.getGLEnvironment().registerSurfaceTexture(mSurfaceTexture, mScreenWidth, mScreenHeight);
        mSurfaceId = context.getGLEnvironment().registerSurfaceTexture(
            mSurfaceTexture, mScreenWidth, mScreenHeight);
        if (mSurfaceId <= 0) {
            throw new RuntimeException("Could not register SurfaceTexture: " + mSurfaceTexture);
        }
    }


    @Override
    public void close(FilterContext context) {
        if (mSurfaceId > 0) {
            context.getGLEnvironment().unregisterSurfaceId(mSurfaceId);
        }
    }


    @Override
    public void process(FilterContext context) {
@@ -173,9 +186,11 @@ public class SurfaceTextureTarget extends Filter {
        Frame input = pullInput("frame");
        boolean createdFrame = false;

        float currentAspectRatio = (float)input.getFormat().getWidth() / input.getFormat().getHeight();
        float currentAspectRatio =
          (float)input.getFormat().getWidth() / input.getFormat().getHeight();
        if (currentAspectRatio != mAspectRatio) {
            if (mLogVerbose) Log.v(TAG, "New aspect ratio: " + currentAspectRatio +", previously: " + mAspectRatio);
            if (mLogVerbose) Log.v(TAG, "New aspect ratio: " + currentAspectRatio +
                ", previously: " + mAspectRatio);
            mAspectRatio = currentAspectRatio;
            updateTargetRect();
        }