diff options
3 files changed, 26 insertions, 3 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java b/packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java index f9347b1..4f080d5 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java @@ -165,8 +165,10 @@ class CommandQueue extends IStatusBar.Stub { break; } case OP_REMOVE_ICON: - mList.removeIcon(index); - mCallbacks.removeIcon(mList.getSlot(index), index, viewIndex); + if (mList.getIcon(index) != null) { + mList.removeIcon(index); + mCallbacks.removeIcon(mList.getSlot(index), index, viewIndex); + } break; } break; diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarService.java b/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarService.java index fece5ce..ea54656 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarService.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarService.java @@ -82,7 +82,7 @@ import com.android.systemui.statusbar.policy.StatusBarPolicy; public class StatusBarService extends Service implements CommandQueue.Callbacks { static final String TAG = "StatusBarService"; - static final boolean SPEW_ICONS = true; + static final boolean SPEW_ICONS = false; static final boolean SPEW = false; public static final String ACTION_STATUSBAR_START diff --git a/tests/StatusBar/src/com/android/statusbartest/StatusBarTest.java b/tests/StatusBar/src/com/android/statusbartest/StatusBarTest.java index 1078701..438a060 100644 --- a/tests/StatusBar/src/com/android/statusbartest/StatusBarTest.java +++ b/tests/StatusBar/src/com/android/statusbartest/StatusBarTest.java @@ -60,6 +60,27 @@ public class StatusBarTest extends TestActivity } private Test[] mTests = new Test[] { + new Test("Double Remove") { + public void run() { + Log.d(TAG, "set 0"); + mStatusBarManager.setIcon("speakerphone", R.drawable.stat_sys_phone, 0); + Log.d(TAG, "remove 1"); + mStatusBarManager.removeIcon("tty"); + + SystemClock.sleep(1000); + + Log.d(TAG, "set 1"); + mStatusBarManager.setIcon("tty", R.drawable.stat_sys_phone, 0); + if (false) { + Log.d(TAG, "set 2"); + mStatusBarManager.setIcon("tty", R.drawable.stat_sys_phone, 0); + } + Log.d(TAG, "remove 2"); + mStatusBarManager.removeIcon("tty"); + Log.d(TAG, "set 3"); + mStatusBarManager.setIcon("speakerphone", R.drawable.stat_sys_phone, 0); + } + }, new Test("Hide") { public void run() { Window win = getWindow(); |
