summaryrefslogtreecommitdiffstats
path: root/services/java/com/android
diff options
context:
space:
mode:
Diffstat (limited to 'services/java/com/android')
-rwxr-xr-xservices/java/com/android/server/VibratorService.java17
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 {