diff options
Diffstat (limited to 'services/java/com/android')
-rwxr-xr-x | services/java/com/android/server/VibratorService.java | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/services/java/com/android/server/VibratorService.java b/services/java/com/android/server/VibratorService.java index 2e7e3e1..379c158 100755 --- a/services/java/com/android/server/VibratorService.java +++ b/services/java/com/android/server/VibratorService.java @@ -123,8 +123,17 @@ public class VibratorService extends IVibratorService.Stub { return; } Vibration vib = new Vibration(token, milliseconds); + try { + token.linkToDeath(vib, 0); + } catch (RemoteException e) { + return; + } synchronized (mVibrations) { removeVibrationLocked(token); + if ((mCurrentVibration != null) && (mThread == null)) { + mCurrentVibration.mToken.unlinkToDeath(mCurrentVibration, 0); + mCurrentVibration = null; + } doCancelVibrateLocked(); mCurrentVibration = vib; startVibrationLocked(vib); @@ -174,6 +183,10 @@ public class VibratorService extends IVibratorService.Stub { synchronized (mVibrations) { removeVibrationLocked(token); + if ((mCurrentVibration != null) && (mThread == null)) { + mCurrentVibration.mToken.unlinkToDeath(mCurrentVibration, 0); + mCurrentVibration = null; + } doCancelVibrateLocked(); if (repeat >= 0) { mVibrations.addFirst(vib); @@ -205,6 +218,10 @@ public class VibratorService extends IVibratorService.Stub { doCancelVibrateLocked(); startNextVibrationLocked(); } + if ((mCurrentVibration != null) && (mThread == null)) { + mCurrentVibration.mToken.unlinkToDeath(mCurrentVibration, 0); + mCurrentVibration = null; + } } } finally { |