Merge change Ied958262 into eclair
* changes:
Fix 2262069: Cosmetic change - shift DigitalClock down to provide room for carrier.
diff --git a/core/java/android/accounts/GrantCredentialsPermissionActivity.java b/core/java/android/accounts/GrantCredentialsPermissionActivity.java
index e3ed2e9..4282c1b 100644
--- a/core/java/android/accounts/GrantCredentialsPermissionActivity.java
+++ b/core/java/android/accounts/GrantCredentialsPermissionActivity.java
@@ -26,6 +26,7 @@
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
+import android.text.TextUtils;
import com.android.internal.R;
/**
@@ -59,7 +60,7 @@
TextView messageView = (TextView) getWindow().findViewById(R.id.message);
String authTokenLabel = getIntent().getExtras().getString(EXTRAS_AUTH_TOKEN_LABEL);
- if (authTokenLabel.length() == 0) {
+ if (TextUtils.isEmpty(authTokenLabel)) {
CharSequence grantCredentialsPermissionFormat = getResources().getText(
R.string.grant_credentials_permission_message_desc);
messageView.setText(String.format(grantCredentialsPermissionFormat.toString(),
diff --git a/services/java/com/android/server/PowerManagerService.java b/services/java/com/android/server/PowerManagerService.java
index e1425d4..bde03f3 100644
--- a/services/java/com/android/server/PowerManagerService.java
+++ b/services/java/com/android/server/PowerManagerService.java
@@ -185,6 +185,7 @@
private UnsynchronizedWakeLock mStayOnWhilePluggedInScreenDimLock;
private UnsynchronizedWakeLock mStayOnWhilePluggedInPartialLock;
private UnsynchronizedWakeLock mPreventScreenOnPartialLock;
+ private UnsynchronizedWakeLock mProximityPartialLock;
private HandlerThread mHandlerThread;
private Handler mHandler;
private TimeoutTask mTimeoutTask = new TimeoutTask();
@@ -283,6 +284,7 @@
IBinder mToken;
int mCount = 0;
boolean mRefCounted;
+ boolean mHeld;
UnsynchronizedWakeLock(int flags, String tag, boolean refCounted) {
mFlags = flags;
@@ -297,6 +299,7 @@
try {
PowerManagerService.this.acquireWakeLockLocked(mFlags, mToken,
MY_UID, mTag);
+ mHeld = true;
} finally {
Binder.restoreCallingIdentity(ident);
}
@@ -306,15 +309,21 @@
public void release() {
if (!mRefCounted || --mCount == 0) {
PowerManagerService.this.releaseWakeLockLocked(mToken, false);
+ mHeld = false;
}
if (mCount < 0) {
throw new RuntimeException("WakeLock under-locked " + mTag);
}
}
+ public boolean isHeld()
+ {
+ return mHeld;
+ }
+
public String toString() {
return "UnsynchronizedWakeLock(mFlags=0x" + Integer.toHexString(mFlags)
- + " mCount=" + mCount + ")";
+ + " mCount=" + mCount + " mHeld=" + mHeld + ")";
}
}
@@ -443,6 +452,8 @@
PowerManager.PARTIAL_WAKE_LOCK, "StayOnWhilePluggedIn Partial", false);
mPreventScreenOnPartialLock = new UnsynchronizedWakeLock(
PowerManager.PARTIAL_WAKE_LOCK, "PreventScreenOn Partial", false);
+ mProximityPartialLock = new UnsynchronizedWakeLock(
+ PowerManager.PARTIAL_WAKE_LOCK, "Proximity Partial", false);
mScreenOnIntent = new Intent(Intent.ACTION_SCREEN_ON);
mScreenOnIntent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY);
@@ -907,6 +918,7 @@
pw.println(" mStayOnWhilePluggedInScreenDimLock=" + mStayOnWhilePluggedInScreenDimLock);
pw.println(" mStayOnWhilePluggedInPartialLock=" + mStayOnWhilePluggedInPartialLock);
pw.println(" mPreventScreenOnPartialLock=" + mPreventScreenOnPartialLock);
+ pw.println(" mProximityPartialLock=" + mProximityPartialLock);
pw.println(" mProximityWakeLockCount=" + mProximityWakeLockCount);
pw.println(" mProximitySensorEnabled=" + mProximitySensorEnabled);
pw.println(" mProximitySensorActive=" + mProximitySensorActive);
@@ -1254,7 +1266,7 @@
// Forcibly turn on the screen if it's supposed to be on. (This
// handles the case where the screen is currently off because of
// a prior preventScreenOn(true) call.)
- if ((mPowerState & SCREEN_ON_BIT) != 0) {
+ if (!mProximitySensorActive && (mPowerState & SCREEN_ON_BIT) != 0) {
if (mSpew) {
Log.d(TAG,
"preventScreenOn: turning on after a prior preventScreenOn(true)!");
@@ -1835,8 +1847,10 @@
}
private void forceUserActivityLocked() {
- // cancel animation so userActivity will succeed
- mScreenBrightness.animating = false;
+ if (isScreenTurningOffLocked()) {
+ // cancel animation so userActivity will succeed
+ mScreenBrightness.animating = false;
+ }
boolean savedActivityAllowed = mUserActivityAllowed;
mUserActivityAllowed = true;
userActivity(SystemClock.uptimeMillis(), false);
@@ -1951,6 +1965,9 @@
proximityChangedLocked(mProximityPendingValue == 1);
mProximityPendingValue = -1;
}
+ if (mProximityPartialLock.isHeld()) {
+ mProximityPartialLock.release();
+ }
}
}
};
@@ -2412,6 +2429,9 @@
try {
mSensorManager.unregisterListener(mProximityListener);
mHandler.removeCallbacks(mProximityTask);
+ if (mProximityPartialLock.isHeld()) {
+ mProximityPartialLock.release();
+ }
mProximitySensorEnabled = false;
} finally {
Binder.restoreCallingIdentity(identity);
@@ -2478,6 +2498,7 @@
long timeSinceLastEvent = milliseconds - mLastProximityEventTime;
mLastProximityEventTime = milliseconds;
mHandler.removeCallbacks(mProximityTask);
+ boolean proximityTaskQueued = false;
// compare against getMaximumRange to support sensors that only return 0 or 1
boolean active = (distance >= 0.0 && distance < PROXIMITY_THRESHOLD &&
@@ -2490,11 +2511,21 @@
// enforce delaying atleast PROXIMITY_SENSOR_DELAY before processing
mProximityPendingValue = (active ? 1 : 0);
mHandler.postDelayed(mProximityTask, PROXIMITY_SENSOR_DELAY - timeSinceLastEvent);
+ proximityTaskQueued = true;
} else {
// process the value immediately
mProximityPendingValue = -1;
proximityChangedLocked(active);
}
+
+ // update mProximityPartialLock state
+ boolean held = mProximityPartialLock.isHeld();
+ if (!held && proximityTaskQueued) {
+ // hold wakelock until mProximityTask runs
+ mProximityPartialLock.acquire();
+ } else if (held && !proximityTaskQueued) {
+ mProximityPartialLock.release();
+ }
}
}