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

Commit c04576ad authored by Winson Chung's avatar Winson Chung Committed by Android (Google) Code Review
Browse files

Merge "Defer adding surface changed callback until view root is valid" into tm-qpr-dev

parents dc51afd9 b8a2a026
Loading
Loading
Loading
Loading
+9 −2
Original line number Diff line number Diff line
@@ -53,13 +53,13 @@ public class ViewUtils {
        final Runnable mFinishCallback;
        final BooleanSupplier mCancelled;
        final Handler mHandler;
        boolean mSurfaceCallbackRegistered = false;
        boolean mFinished;

        int mDeferFrameCount = 1;

        FrameHandler(View view, Runnable finishCallback, BooleanSupplier cancelled) {
            mViewRoot = view.getViewRootImpl();
            mViewRoot.addSurfaceChangedCallback(this);
            mFinishCallback = finishCallback;
            mCancelled = cancelled;
            mHandler = new Handler();
@@ -103,6 +103,10 @@ public class ViewUtils {

        private boolean schedule() {
            if (mViewRoot != null && mViewRoot.getView() != null) {
                if (!mSurfaceCallbackRegistered) {
                    mSurfaceCallbackRegistered = true;
                    mViewRoot.addSurfaceChangedCallback(this);
                }
                mViewRoot.registerRtFrameCallback(this);
                mViewRoot.getView().invalidate();
                return true;
@@ -119,7 +123,10 @@ public class ViewUtils {
            if (mFinishCallback != null) {
                mFinishCallback.run();
            }
            if (mViewRoot != null) {
                mViewRoot.removeSurfaceChangedCallback(this);
                mSurfaceCallbackRegistered = false;
            }
        }
    }
}