Merge "Fix race condition causing screenshot view to be added to window twice" into sc-qpr1-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
4c76184ee1
@@ -33,6 +33,7 @@ import static java.util.Objects.requireNonNull;
|
||||
|
||||
import android.animation.Animator;
|
||||
import android.animation.AnimatorListenerAdapter;
|
||||
import android.annotation.MainThread;
|
||||
import android.annotation.Nullable;
|
||||
import android.app.ActivityManager;
|
||||
import android.app.ActivityOptions;
|
||||
@@ -261,6 +262,7 @@ public class ScreenshotController {
|
||||
private Bitmap mScreenBitmap;
|
||||
private SaveImageInBackgroundTask mSaveInBgTask;
|
||||
private boolean mScreenshotTakenInPortrait;
|
||||
private boolean mBlockAttach;
|
||||
|
||||
private Animator mScreenshotAnimation;
|
||||
private RequestCallback mCurrentRequestCallback;
|
||||
@@ -731,6 +733,7 @@ public class ScreenshotController {
|
||||
new ViewTreeObserver.OnWindowAttachListener() {
|
||||
@Override
|
||||
public void onWindowAttached() {
|
||||
mBlockAttach = false;
|
||||
decorView.getViewTreeObserver().removeOnWindowAttachListener(this);
|
||||
action.run();
|
||||
}
|
||||
@@ -747,14 +750,16 @@ public class ScreenshotController {
|
||||
mWindow.setContentView(contentView);
|
||||
}
|
||||
|
||||
@MainThread
|
||||
private void attachWindow() {
|
||||
View decorView = mWindow.getDecorView();
|
||||
if (decorView.isAttachedToWindow()) {
|
||||
if (decorView.isAttachedToWindow() || mBlockAttach) {
|
||||
return;
|
||||
}
|
||||
if (DEBUG_WINDOW) {
|
||||
Log.d(TAG, "attachWindow");
|
||||
}
|
||||
mBlockAttach = true;
|
||||
mWindowManager.addView(decorView, mWindowLayoutParams);
|
||||
decorView.requestApplyInsets();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user