summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Craig Mautner <cmautner@google.com> 2013-07-01 12:57:51 -0700
committer Craig Mautner <cmautner@google.com> 2013-07-01 13:03:19 -0700
commit9b40728fdcbfa8a56af36618d165de4526637c85 (patch)
tree48898fbd56c478034e12216dfad9712f0a0316b3
parentbae861437690f1373cb78c33442534d746409f2d (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.java13
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;