diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java index 7eae7395e9194..b9e0fe8b6f1b6 100644 --- a/core/java/android/view/ViewRootImpl.java +++ b/core/java/android/view/ViewRootImpl.java @@ -425,20 +425,17 @@ public final class ViewRootImpl extends Handler implements ViewParent, } } + CompatibilityInfo compatibilityInfo = mCompatibilityInfo.get(); + mTranslator = compatibilityInfo.getTranslator(); + // If the application owns the surface, don't enable hardware acceleration if (mSurfaceHolder == null) { enableHardwareAcceleration(attrs); } - CompatibilityInfo compatibilityInfo = mCompatibilityInfo.get(); - mTranslator = compatibilityInfo.getTranslator(); - - if (mTranslator != null) { - mSurface.setCompatibilityTranslator(mTranslator); - } - boolean restore = false; if (mTranslator != null) { + mSurface.setCompatibilityTranslator(mTranslator); restore = true; attrs.backup(); mTranslator.translateWindowLayout(attrs); @@ -590,6 +587,9 @@ public final class ViewRootImpl extends Handler implements ViewParent, mAttachInfo.mHardwareAccelerated = false; mAttachInfo.mHardwareAccelerationRequested = false; + // Don't enable hardware acceleration when the application is in compatibility mode + if (mTranslator != null) return; + // Try to enable hardware acceleration if requested final boolean hardwareAccelerated = (attrs.flags & WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED) != 0;