diff options
| author | 2013-07-01 12:57:51 -0700 | |
|---|---|---|
| committer | 2013-07-01 13:03:19 -0700 | |
| commit | 9b40728fdcbfa8a56af36618d165de4526637c85 (patch) | |
| tree | 48898fbd56c478034e12216dfad9712f0a0316b3 | |
| parent | bae861437690f1373cb78c33442534d746409f2d (diff) | |
Change order of setting isOpen
Because the WindowManager.addView() method can indirectly call
PhoneWindow.closePanel() it is critical to set isOpen after the
addView call returns in PhoneWindow.openPanel. Otherwise when
closePanel sets isOpen to false PhoneWindow will be in to an
inconsistent state.
Fixes bug 9404689.
Change-Id: If0129a0859546b35445df0f4be2f422c4807fba7
| -rw-r--r-- | policy/src/com/android/internal/policy/impl/PhoneWindow.java | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/policy/src/com/android/internal/policy/impl/PhoneWindow.java b/policy/src/com/android/internal/policy/impl/PhoneWindow.java index 71855b2fa911..5a95f4c8dc5b 100644 --- a/policy/src/com/android/internal/policy/impl/PhoneWindow.java +++ b/policy/src/com/android/internal/policy/impl/PhoneWindow.java @@ -646,9 +646,6 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback { } } - Slog.d(TAG, "openPanel: b9404689 setting isOpen true, st=" + st + " decorView=" - + st.decorView); - st.isOpen = true; st.isHandled = false; WindowManager.LayoutParams lp = new WindowManager.LayoutParams( @@ -666,8 +663,11 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback { } lp.windowAnimations = st.windowAnimations; - + wm.addView(st.decorView, lp); + Slog.d(TAG, "openPanel: b9404689 setting isOpen true, st=" + st + " decorView=" + + st.decorView); + st.isOpen = true; // Log.v(TAG, "Adding main menu to window manager."); } @@ -696,7 +696,8 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback { */ public final void closePanel(PanelFeatureState st, boolean doCallback) { // System.out.println("Close panel: isOpen=" + st.isOpen); - Slog.d(TAG, "closePanel: b9404689 entry, st=" + st + " decorView=" + st.decorView); + Slog.d(TAG, "closePanel: b9404689 entry, st=" + st + " isOpen=" + st.isOpen + + " decorView=" + st.decorView + " Callers=" + Debug.getCallers(4)); if (doCallback && st.featureId == FEATURE_OPTIONS_PANEL && mActionBar != null && mActionBar.isOverflowMenuShowing()) { checkCloseActionMenu(st.menu); @@ -717,6 +718,8 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback { if (doCallback) { callOnPanelClosed(st.featureId, st, null); } + } else { + Slog.d(TAG, "closePanel: b9404689 not removing wm=" + wm); } st.isPrepared = false; |