Loading core/java/android/view/ViewRootImpl.java +16 −1 Original line number Diff line number Diff line Loading @@ -604,6 +604,7 @@ public final class ViewRootImpl implements ViewParent, int mSyncSeqId = 0; int mLastSyncSeqId = 0; private boolean mUpdateSurfaceNeeded; boolean mFullRedrawNeeded; boolean mNewSurfaceNeeded; boolean mForceNextWindowRelayout; Loading Loading @@ -3001,6 +3002,8 @@ public final class ViewRootImpl implements ViewParent, !mFirst, INVALID_DISPLAY /* same display */); updatedConfiguration = true; } final boolean updateSurfaceNeeded = mUpdateSurfaceNeeded; mUpdateSurfaceNeeded = false; surfaceSizeChanged = false; if (!mLastSurfaceSize.equals(mSurfaceSize)) { Loading Loading @@ -3079,7 +3082,7 @@ public final class ViewRootImpl implements ViewParent, if (isHardwareEnabled()) { mAttachInfo.mThreadedRenderer.destroy(); } } else if ((surfaceReplaced || surfaceSizeChanged) } else if ((surfaceReplaced || surfaceSizeChanged || updateSurfaceNeeded) && mSurfaceHolder == null && mAttachInfo.mThreadedRenderer != null && mSurface.isValid()) { Loading Loading @@ -5221,6 +5224,18 @@ public final class ViewRootImpl implements ViewParent, throw new IllegalArgumentException("No merged config provided."); } final int lastRotation = mLastReportedMergedConfiguration.getMergedConfiguration() .windowConfiguration.getRotation(); final int newRotation = mergedConfiguration.getMergedConfiguration() .windowConfiguration.getRotation(); if (lastRotation != newRotation) { // Trigger ThreadedRenderer#updateSurface() if the surface control doesn't change. // Because even if the actual surface size is not changed, e.g. flip 180 degrees, // the buffers may still have content in previous rotation. And the next draw may // not update all regions, that causes some afterimages to flicker. mUpdateSurfaceNeeded = true; } Configuration globalConfig = mergedConfiguration.getGlobalConfiguration(); final Configuration overrideConfig = mergedConfiguration.getOverrideConfiguration(); if (DEBUG_CONFIGURATION) Log.v(mTag, Loading Loading
core/java/android/view/ViewRootImpl.java +16 −1 Original line number Diff line number Diff line Loading @@ -604,6 +604,7 @@ public final class ViewRootImpl implements ViewParent, int mSyncSeqId = 0; int mLastSyncSeqId = 0; private boolean mUpdateSurfaceNeeded; boolean mFullRedrawNeeded; boolean mNewSurfaceNeeded; boolean mForceNextWindowRelayout; Loading Loading @@ -3001,6 +3002,8 @@ public final class ViewRootImpl implements ViewParent, !mFirst, INVALID_DISPLAY /* same display */); updatedConfiguration = true; } final boolean updateSurfaceNeeded = mUpdateSurfaceNeeded; mUpdateSurfaceNeeded = false; surfaceSizeChanged = false; if (!mLastSurfaceSize.equals(mSurfaceSize)) { Loading Loading @@ -3079,7 +3082,7 @@ public final class ViewRootImpl implements ViewParent, if (isHardwareEnabled()) { mAttachInfo.mThreadedRenderer.destroy(); } } else if ((surfaceReplaced || surfaceSizeChanged) } else if ((surfaceReplaced || surfaceSizeChanged || updateSurfaceNeeded) && mSurfaceHolder == null && mAttachInfo.mThreadedRenderer != null && mSurface.isValid()) { Loading Loading @@ -5221,6 +5224,18 @@ public final class ViewRootImpl implements ViewParent, throw new IllegalArgumentException("No merged config provided."); } final int lastRotation = mLastReportedMergedConfiguration.getMergedConfiguration() .windowConfiguration.getRotation(); final int newRotation = mergedConfiguration.getMergedConfiguration() .windowConfiguration.getRotation(); if (lastRotation != newRotation) { // Trigger ThreadedRenderer#updateSurface() if the surface control doesn't change. // Because even if the actual surface size is not changed, e.g. flip 180 degrees, // the buffers may still have content in previous rotation. And the next draw may // not update all regions, that causes some afterimages to flicker. mUpdateSurfaceNeeded = true; } Configuration globalConfig = mergedConfiguration.getGlobalConfiguration(); final Configuration overrideConfig = mergedConfiguration.getOverrideConfiguration(); if (DEBUG_CONFIGURATION) Log.v(mTag, Loading