final int N = mWindows.size();
for (int i=0; i<N; i++) {
WindowState w = (WindowState)mWindows.get(i);
- if (w.isVisibleLw() && !w.mObscured && !w.isDrawnLw()) {
+ if (w.isVisibleLw() && !w.mObscured
+ && (w.mOrientationChanging || !w.isDrawnLw())) {
return;
}
}
final AppWindowToken atoken = mAppToken;
return mSurface != null && !mAttachedHidden
&& (atoken == null ? mPolicyVisibility : !atoken.hiddenRequested)
- && !mDrawPending && !mCommitDrawPending
+ && (mOrientationChanging || (!mDrawPending && !mCommitDrawPending))
&& !mExiting && !mDestroying;
}
/**
* Returns true if the window has a surface that it has drawn a
- * complete UI in to.
+ * complete UI in to. Note that this returns true if the orientation
+ * is changing even if the window hasn't redrawn because we don't want
+ * to stop things from executing during that time.
*/
public boolean isDrawnLw() {
final AppWindowToken atoken = mAppToken;
return mSurface != null && !mDestroying
- && !mDrawPending && !mCommitDrawPending;
+ && (mOrientationChanging || (!mDrawPending && !mCommitDrawPending));
}
public boolean fillsScreenLw(int screenWidth, int screenHeight,
if (w.mAttachedHidden || !w.isReadyForDisplay()) {
if (!w.mLastHidden) {
//dump();
+ if (DEBUG_CONFIGURATION) Slog.v(TAG, "Window hiding: waitingToShow="
+ + w.mRootToken.waitingToShow + " polvis="
+ + w.mPolicyVisibility + " atthid="
+ + w.mAttachedHidden + " tokhid="
+ + w.mRootToken.hidden + " vis="
+ + w.mViewVisibility);
w.mLastHidden = true;
if (SHOW_TRANSACTIONS) logSurface(w,
"HIDE (performLayout)", null);