Check for a timeout <= 0 before adding the vibration.

A timeout of 0 could cause the vibration thread to run with a null pattern and
crash the system server. Instead, we should just ignore vibrations that don't
make any sense (similar to ignoring a bad pattern vibration).
This commit is contained in:
Patrick Scott
2009-08-19 09:03:56 -04:00
parent 220dec2897
commit 24f1076097

View File

@@ -141,8 +141,11 @@ public class HardwareService extends IHardwareService.Stub {
!= PackageManager.PERMISSION_GRANTED) {
throw new SecurityException("Requires VIBRATE permission");
}
if (mCurrentVibration != null
&& mCurrentVibration.hasLongerTimeout(milliseconds)) {
// We're running in the system server so we cannot crash. Check for a
// timeout of 0 or negative. This will ensure that a vibration has
// either a timeout of > 0 or a non-null pattern.
if (milliseconds <= 0 || (mCurrentVibration != null
&& mCurrentVibration.hasLongerTimeout(milliseconds))) {
// Ignore this vibration since the current vibration will play for
// longer than milliseconds.
return;