Merge "Release outstanding suspend blockers when shutting down DPC" into tm-dev am: 3a28a13e0d
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/19053827 Change-Id: I3470e662dc1b8dc42b7d92ae18529744a19ab080 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -461,6 +461,18 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
|
|||||||
|
|
||||||
private boolean mIsRbcActive;
|
private boolean mIsRbcActive;
|
||||||
|
|
||||||
|
// Whether there's a callback to tell listeners the display has changed scheduled to run. When
|
||||||
|
// true it implies a wakelock is being held to guarantee the update happens before we collapse
|
||||||
|
// into suspend and so needs to be cleaned up if the thread is exiting.
|
||||||
|
// Should only be accessed on the Handler thread.
|
||||||
|
private boolean mOnStateChangedPending;
|
||||||
|
|
||||||
|
// Count of proximity messages currently on this DPC's Handler. Used to keep track of how many
|
||||||
|
// suspend blocker acquisitions are pending when shutting down this DPC.
|
||||||
|
// Should only be accessed on the Handler thread.
|
||||||
|
private int mOnProximityPositiveMessages;
|
||||||
|
private int mOnProximityNegativeMessages;
|
||||||
|
|
||||||
// Animators.
|
// Animators.
|
||||||
private ObjectAnimator mColorFadeOnAnimator;
|
private ObjectAnimator mColorFadeOnAnimator;
|
||||||
private ObjectAnimator mColorFadeOffAnimator;
|
private ObjectAnimator mColorFadeOffAnimator;
|
||||||
@@ -1091,10 +1103,24 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
|
|||||||
mHbmController.stop();
|
mHbmController.stop();
|
||||||
mBrightnessThrottler.stop();
|
mBrightnessThrottler.stop();
|
||||||
mHandler.removeCallbacksAndMessages(null);
|
mHandler.removeCallbacksAndMessages(null);
|
||||||
|
|
||||||
|
// Release any outstanding wakelocks we're still holding because of pending messages.
|
||||||
if (mUnfinishedBusiness) {
|
if (mUnfinishedBusiness) {
|
||||||
mCallbacks.releaseSuspendBlocker(mSuspendBlockerIdUnfinishedBusiness);
|
mCallbacks.releaseSuspendBlocker(mSuspendBlockerIdUnfinishedBusiness);
|
||||||
mUnfinishedBusiness = false;
|
mUnfinishedBusiness = false;
|
||||||
}
|
}
|
||||||
|
if (mOnStateChangedPending) {
|
||||||
|
mCallbacks.releaseSuspendBlocker(mSuspendBlockerIdOnStateChanged);
|
||||||
|
mOnStateChangedPending = false;
|
||||||
|
}
|
||||||
|
for (int i = 0; i < mOnProximityPositiveMessages; i++) {
|
||||||
|
mCallbacks.releaseSuspendBlocker(mSuspendBlockerIdProxPositive);
|
||||||
|
}
|
||||||
|
mOnProximityPositiveMessages = 0;
|
||||||
|
for (int i = 0; i < mOnProximityNegativeMessages; i++) {
|
||||||
|
mCallbacks.releaseSuspendBlocker(mSuspendBlockerIdProxNegative);
|
||||||
|
}
|
||||||
|
mOnProximityNegativeMessages = 0;
|
||||||
|
|
||||||
final float brightness = mPowerState != null
|
final float brightness = mPowerState != null
|
||||||
? mPowerState.getScreenBrightness()
|
? mPowerState.getScreenBrightness()
|
||||||
@@ -2248,8 +2274,11 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void sendOnStateChangedWithWakelock() {
|
private void sendOnStateChangedWithWakelock() {
|
||||||
mCallbacks.acquireSuspendBlocker(mSuspendBlockerIdOnStateChanged);
|
if (!mOnStateChangedPending) {
|
||||||
mHandler.post(mOnStateChangedRunnable);
|
mOnStateChangedPending = true;
|
||||||
|
mCallbacks.acquireSuspendBlocker(mSuspendBlockerIdOnStateChanged);
|
||||||
|
mHandler.post(mOnStateChangedRunnable);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void logDisplayPolicyChanged(int newPolicy) {
|
private void logDisplayPolicyChanged(int newPolicy) {
|
||||||
@@ -2408,6 +2437,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
|
|||||||
private final Runnable mOnStateChangedRunnable = new Runnable() {
|
private final Runnable mOnStateChangedRunnable = new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
|
mOnStateChangedPending = false;
|
||||||
mCallbacks.onStateChanged();
|
mCallbacks.onStateChanged();
|
||||||
mCallbacks.releaseSuspendBlocker(mSuspendBlockerIdOnStateChanged);
|
mCallbacks.releaseSuspendBlocker(mSuspendBlockerIdOnStateChanged);
|
||||||
}
|
}
|
||||||
@@ -2416,17 +2446,20 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
|
|||||||
private void sendOnProximityPositiveWithWakelock() {
|
private void sendOnProximityPositiveWithWakelock() {
|
||||||
mCallbacks.acquireSuspendBlocker(mSuspendBlockerIdProxPositive);
|
mCallbacks.acquireSuspendBlocker(mSuspendBlockerIdProxPositive);
|
||||||
mHandler.post(mOnProximityPositiveRunnable);
|
mHandler.post(mOnProximityPositiveRunnable);
|
||||||
|
mOnProximityPositiveMessages++;
|
||||||
}
|
}
|
||||||
|
|
||||||
private final Runnable mOnProximityPositiveRunnable = new Runnable() {
|
private final Runnable mOnProximityPositiveRunnable = new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
|
mOnProximityPositiveMessages--;
|
||||||
mCallbacks.onProximityPositive();
|
mCallbacks.onProximityPositive();
|
||||||
mCallbacks.releaseSuspendBlocker(mSuspendBlockerIdProxPositive);
|
mCallbacks.releaseSuspendBlocker(mSuspendBlockerIdProxPositive);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
private void sendOnProximityNegativeWithWakelock() {
|
private void sendOnProximityNegativeWithWakelock() {
|
||||||
|
mOnProximityNegativeMessages++;
|
||||||
mCallbacks.acquireSuspendBlocker(mSuspendBlockerIdProxNegative);
|
mCallbacks.acquireSuspendBlocker(mSuspendBlockerIdProxNegative);
|
||||||
mHandler.post(mOnProximityNegativeRunnable);
|
mHandler.post(mOnProximityNegativeRunnable);
|
||||||
}
|
}
|
||||||
@@ -2434,6 +2467,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
|
|||||||
private final Runnable mOnProximityNegativeRunnable = new Runnable() {
|
private final Runnable mOnProximityNegativeRunnable = new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
|
mOnProximityNegativeMessages--;
|
||||||
mCallbacks.onProximityNegative();
|
mCallbacks.onProximityNegative();
|
||||||
mCallbacks.releaseSuspendBlocker(mSuspendBlockerIdProxNegative);
|
mCallbacks.releaseSuspendBlocker(mSuspendBlockerIdProxNegative);
|
||||||
}
|
}
|
||||||
@@ -2533,6 +2567,9 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
|
|||||||
pw.println(" mReportedToPolicy="
|
pw.println(" mReportedToPolicy="
|
||||||
+ reportedToPolicyToString(mReportedScreenStateToPolicy));
|
+ reportedToPolicyToString(mReportedScreenStateToPolicy));
|
||||||
pw.println(" mIsRbcActive=" + mIsRbcActive);
|
pw.println(" mIsRbcActive=" + mIsRbcActive);
|
||||||
|
pw.println(" mOnStateChangePending=" + mOnStateChangedPending);
|
||||||
|
pw.println(" mOnProximityPositiveMessages=" + mOnProximityPositiveMessages);
|
||||||
|
pw.println(" mOnProximityNegativeMessages=" + mOnProximityNegativeMessages);
|
||||||
|
|
||||||
if (mScreenBrightnessRampAnimator != null) {
|
if (mScreenBrightnessRampAnimator != null) {
|
||||||
pw.println(" mScreenBrightnessRampAnimator.isAnimating()="
|
pw.println(" mScreenBrightnessRampAnimator.isAnimating()="
|
||||||
|
|||||||
Reference in New Issue
Block a user