diff options
| -rw-r--r-- | services/core/java/com/android/server/statusbar/StatusBarManagerService.java | 29 |
1 files changed, 19 insertions, 10 deletions
diff --git a/services/core/java/com/android/server/statusbar/StatusBarManagerService.java b/services/core/java/com/android/server/statusbar/StatusBarManagerService.java index 738b0ca4a74f..8cccbb1a5fb4 100644 --- a/services/core/java/com/android/server/statusbar/StatusBarManagerService.java +++ b/services/core/java/com/android/server/statusbar/StatusBarManagerService.java @@ -80,6 +80,7 @@ public class StatusBarManagerService extends IStatusBarService.Stub { private int mDisabled2 = 0; private final Object mLock = new Object(); + private final DeathRecipient mDeathRecipient = new DeathRecipient(); // encompasses lights-out mode and other flags defined on View private int mSystemUiVisibility = 0; private int mFullscreenStackSysUiVisibility; @@ -93,6 +94,23 @@ public class StatusBarManagerService extends IStatusBarService.Stub { private IBinder mImeToken = null; private int mCurrentUserId; + private class DeathRecipient implements IBinder.DeathRecipient { + public void binderDied() { + mBar.asBinder().unlinkToDeath(this,0); + mBar = null; + notifyBarAttachChanged(); + } + + public void linkToDeath() { + try { + mBar.asBinder().linkToDeath(mDeathRecipient,0); + } catch (RemoteException e) { + Slog.e(TAG,"Unable to register Death Recipient for status bar", e); + } + } + + } + private class DisableRecord implements IBinder.DeathRecipient { int userId; String pkg; @@ -859,16 +877,7 @@ public class StatusBarManagerService extends IStatusBarService.Stub { Slog.i(TAG, "registerStatusBar bar=" + bar); mBar = bar; - try { - mBar.asBinder().linkToDeath(new DeathRecipient() { - @Override - public void binderDied() { - mBar = null; - notifyBarAttachChanged(); - } - }, 0); - } catch (RemoteException e) { - } + mDeathRecipient.linkToDeath(); notifyBarAttachChanged(); synchronized (mIcons) { for (String slot : mIcons.keySet()) { |