mirror of
https://github.com/LawnchairLauncher/lawnchair.git
synced 2026-02-19 10:48:19 +00:00
Merge "Defer adding surface changed callback until view root is valid" into tm-qpr-dev am: c04576ad6e
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Launcher3/+/19628908 Change-Id: I8f43ab2e866c34ccddd4c802c4892714160a66f5 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -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();
|
||||
}
|
||||
mViewRoot.removeSurfaceChangedCallback(this);
|
||||
if (mViewRoot != null) {
|
||||
mViewRoot.removeSurfaceChangedCallback(this);
|
||||
mSurfaceCallbackRegistered = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user