Merge "Remove reuse of pending deferred transactions." into nyc-mr1-dev
This commit is contained in:
@@ -228,8 +228,6 @@ class WindowStateAnimator {
|
|||||||
int mAttrType;
|
int mAttrType;
|
||||||
|
|
||||||
static final long PENDING_TRANSACTION_FINISH_WAIT_TIME = 100;
|
static final long PENDING_TRANSACTION_FINISH_WAIT_TIME = 100;
|
||||||
long mDeferTransactionUntilFrame = -1;
|
|
||||||
long mDeferTransactionTime = -1;
|
|
||||||
|
|
||||||
boolean mForceScaleUntilResize;
|
boolean mForceScaleUntilResize;
|
||||||
|
|
||||||
@@ -2055,35 +2053,11 @@ class WindowStateAnimator {
|
|||||||
if (!mWin.isChildWindow()) {
|
if (!mWin.isChildWindow()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
mDeferTransactionUntilFrame = frameNumber;
|
|
||||||
mDeferTransactionTime = System.currentTimeMillis();
|
|
||||||
mSurfaceController.deferTransactionUntil(
|
mSurfaceController.deferTransactionUntil(
|
||||||
mWin.mAttachedWindow.mWinAnimator.mSurfaceController.getHandle(),
|
mWin.mAttachedWindow.mWinAnimator.mSurfaceController.getHandle(),
|
||||||
frameNumber);
|
frameNumber);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Defer the current transaction to the frame number of the last saved transaction.
|
|
||||||
// We do this to avoid shooting through an unsynchronized transaction while something is
|
|
||||||
// pending. This is generally fine, as either we will get in on the synchronization,
|
|
||||||
// or SurfaceFlinger will see that the frame has already occured. The only
|
|
||||||
// potential problem is in frame number resets so we reset things with a timeout
|
|
||||||
// every so often to be careful.
|
|
||||||
void deferToPendingTransaction() {
|
|
||||||
if (mDeferTransactionUntilFrame < 0) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
long time = System.currentTimeMillis();
|
|
||||||
if (time > mDeferTransactionTime + PENDING_TRANSACTION_FINISH_WAIT_TIME) {
|
|
||||||
mDeferTransactionTime = -1;
|
|
||||||
mDeferTransactionUntilFrame = -1;
|
|
||||||
} else if (mWin.mAttachedWindow != null &&
|
|
||||||
mWin.mAttachedWindow.mWinAnimator.hasSurface()) {
|
|
||||||
mSurfaceController.deferTransactionUntil(
|
|
||||||
mWin.mAttachedWindow.mWinAnimator.mSurfaceController.getHandle(),
|
|
||||||
mDeferTransactionUntilFrame);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sometimes we need to synchronize the first frame of animation with some external event.
|
* Sometimes we need to synchronize the first frame of animation with some external event.
|
||||||
* To achieve this, we prolong the start of the animation and keep producing the first frame of
|
* To achieve this, we prolong the start of the animation and keep producing the first frame of
|
||||||
|
|||||||
@@ -742,10 +742,6 @@ class WindowSurfacePlacer {
|
|||||||
|
|
||||||
// Moved from updateWindowsAndWallpaperLocked().
|
// Moved from updateWindowsAndWallpaperLocked().
|
||||||
if (w.mHasSurface) {
|
if (w.mHasSurface) {
|
||||||
// If we have recently synchronized a previous transaction for this
|
|
||||||
// window ensure we don't push through an unsynchronized one now.
|
|
||||||
winAnimator.deferToPendingTransaction();
|
|
||||||
|
|
||||||
// Take care of the window being ready to display.
|
// Take care of the window being ready to display.
|
||||||
final boolean committed = winAnimator.commitFinishDrawingLocked();
|
final boolean committed = winAnimator.commitFinishDrawingLocked();
|
||||||
if (isDefaultDisplay && committed) {
|
if (isDefaultDisplay && committed) {
|
||||||
|
|||||||
Reference in New Issue
Block a user