Loading core/java/android/view/HardwareRenderer.java +2 −1 Original line number Diff line number Diff line Loading @@ -339,7 +339,8 @@ public abstract class HardwareRenderer { * @param attachInfo AttachInfo tied to the specified view. * @param callbacks Callbacks invoked when drawing happens. */ abstract void draw(View view, View.AttachInfo attachInfo, HardwareDrawCallbacks callbacks); abstract void draw(View view, View.AttachInfo attachInfo, HardwareDrawCallbacks callbacks, boolean isStartingWindow); /** * Creates a new hardware layer. A hardware layer built by calling this Loading core/java/android/view/ThreadedRenderer.java +12 −3 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package android.view; import android.graphics.Color; import com.android.internal.R; import android.content.Context; Loading Loading @@ -267,7 +268,8 @@ public class ThreadedRenderer extends HardwareRenderer { view.mRecreateDisplayList = false; } private void updateRootDisplayList(View view, HardwareDrawCallbacks callbacks) { private void updateRootDisplayList(View view, HardwareDrawCallbacks callbacks, boolean isStartingWindow) { Trace.traceBegin(Trace.TRACE_TAG_VIEW, "getDisplayList"); updateViewTreeDisplayList(view); Loading @@ -279,6 +281,12 @@ public class ThreadedRenderer extends HardwareRenderer { callbacks.onHardwarePreDraw(canvas); canvas.insertReorderBarrier(); if (isStartingWindow) { // Compensate for some situations in which a hw-accelerated surface // will not be filled with anything by default; this is equivalent // to the old behavior when the system process was not hw-accelerated canvas.drawColor(Color.BLACK); } canvas.drawRenderNode(view.getDisplayList()); canvas.insertInorderBarrier(); Loading @@ -298,7 +306,8 @@ public class ThreadedRenderer extends HardwareRenderer { } @Override void draw(View view, AttachInfo attachInfo, HardwareDrawCallbacks callbacks) { void draw(View view, AttachInfo attachInfo, HardwareDrawCallbacks callbacks, boolean isStartingWindow) { attachInfo.mIgnoreDirtyState = true; long frameTimeNanos = mChoreographer.getFrameTimeNanos(); attachInfo.mDrawingTime = frameTimeNanos / TimeUtils.NANOS_PER_MS; Loading @@ -308,7 +317,7 @@ public class ThreadedRenderer extends HardwareRenderer { recordDuration = System.nanoTime(); } updateRootDisplayList(view, callbacks); updateRootDisplayList(view, callbacks, isStartingWindow); if (mProfilingEnabled) { recordDuration = System.nanoTime() - recordDuration; Loading core/java/android/view/ViewRootImpl.java +3 −9 Original line number Diff line number Diff line Loading @@ -711,17 +711,10 @@ public final class ViewRootImpl implements ViewParent, // can be used by code on the system process to escape that and enable // HW accelerated drawing. (This is basically for the lock screen.) final boolean fakeHwAccelerated = (attrs.privateFlags & WindowManager.LayoutParams.PRIVATE_FLAG_FAKE_HARDWARE_ACCELERATED) != 0; final boolean forceHwAccelerated = (attrs.privateFlags & WindowManager.LayoutParams.PRIVATE_FLAG_FORCE_HARDWARE_ACCELERATED) != 0; if (fakeHwAccelerated) { // This is exclusively for the preview windows the window manager // shows for launching applications, so they will look more like // the app being launched. mAttachInfo.mHardwareAccelerationRequested = true; } else if (!HardwareRenderer.sRendererDisabled if (!HardwareRenderer.sRendererDisabled || (HardwareRenderer.sSystemRendererDisabled && forceHwAccelerated)) { if (mAttachInfo.mHardwareRenderer != null) { mAttachInfo.mHardwareRenderer.destroy(); Loading Loading @@ -2486,7 +2479,8 @@ public final class ViewRootImpl implements ViewParent, dirty.setEmpty(); mBlockResizeBuffer = false; mAttachInfo.mHardwareRenderer.draw(mView, mAttachInfo, this); mAttachInfo.mHardwareRenderer.draw(mView, mAttachInfo, this, params.type == WindowManager.LayoutParams.TYPE_APPLICATION_STARTING); } else { // If we get here with a disabled & requested hardware renderer, something went // wrong (an invalidate posted right before we destroyed the hardware surface Loading core/java/android/view/WindowManager.java +0 −20 Original line number Diff line number Diff line Loading @@ -1023,26 +1023,6 @@ public interface WindowManager extends ViewManager { }, formatToHexString = true) public int flags; /** * If the window has requested hardware acceleration, but this is not * allowed in the process it is in, then still render it as if it is * hardware accelerated. This is used for the starting preview windows * in the system process, which don't need to have the overhead of * hardware acceleration (they are just a static rendering), but should * be rendered as such to match the actual window of the app even if it * is hardware accelerated. * Even if the window isn't hardware accelerated, still do its rendering * as if it was. * Like {@link #FLAG_HARDWARE_ACCELERATED} except for trusted system windows * that need hardware acceleration (e.g. LockScreen), where hardware acceleration * is generally disabled. This flag must be specified in addition to * {@link #FLAG_HARDWARE_ACCELERATED} to enable hardware acceleration for system * windows. * * @hide */ public static final int PRIVATE_FLAG_FAKE_HARDWARE_ACCELERATED = 0x00000001; /** * In the system process, we globally do not use hardware acceleration * because there are many threads doing UI there and they conflict. Loading policy/src/com/android/internal/policy/impl/PhoneWindowManager.java +0 −2 Original line number Diff line number Diff line Loading @@ -1826,8 +1826,6 @@ public class PhoneWindowManager implements WindowManagerPolicy { params.packageName = packageName; params.windowAnimations = win.getWindowStyle().getResourceId( com.android.internal.R.styleable.Window_windowAnimationStyle, 0); params.privateFlags |= WindowManager.LayoutParams.PRIVATE_FLAG_FAKE_HARDWARE_ACCELERATED; params.privateFlags |= WindowManager.LayoutParams.PRIVATE_FLAG_SHOW_FOR_ALL_USERS; if (!compatInfo.supportsScreen()) { Loading Loading
core/java/android/view/HardwareRenderer.java +2 −1 Original line number Diff line number Diff line Loading @@ -339,7 +339,8 @@ public abstract class HardwareRenderer { * @param attachInfo AttachInfo tied to the specified view. * @param callbacks Callbacks invoked when drawing happens. */ abstract void draw(View view, View.AttachInfo attachInfo, HardwareDrawCallbacks callbacks); abstract void draw(View view, View.AttachInfo attachInfo, HardwareDrawCallbacks callbacks, boolean isStartingWindow); /** * Creates a new hardware layer. A hardware layer built by calling this Loading
core/java/android/view/ThreadedRenderer.java +12 −3 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package android.view; import android.graphics.Color; import com.android.internal.R; import android.content.Context; Loading Loading @@ -267,7 +268,8 @@ public class ThreadedRenderer extends HardwareRenderer { view.mRecreateDisplayList = false; } private void updateRootDisplayList(View view, HardwareDrawCallbacks callbacks) { private void updateRootDisplayList(View view, HardwareDrawCallbacks callbacks, boolean isStartingWindow) { Trace.traceBegin(Trace.TRACE_TAG_VIEW, "getDisplayList"); updateViewTreeDisplayList(view); Loading @@ -279,6 +281,12 @@ public class ThreadedRenderer extends HardwareRenderer { callbacks.onHardwarePreDraw(canvas); canvas.insertReorderBarrier(); if (isStartingWindow) { // Compensate for some situations in which a hw-accelerated surface // will not be filled with anything by default; this is equivalent // to the old behavior when the system process was not hw-accelerated canvas.drawColor(Color.BLACK); } canvas.drawRenderNode(view.getDisplayList()); canvas.insertInorderBarrier(); Loading @@ -298,7 +306,8 @@ public class ThreadedRenderer extends HardwareRenderer { } @Override void draw(View view, AttachInfo attachInfo, HardwareDrawCallbacks callbacks) { void draw(View view, AttachInfo attachInfo, HardwareDrawCallbacks callbacks, boolean isStartingWindow) { attachInfo.mIgnoreDirtyState = true; long frameTimeNanos = mChoreographer.getFrameTimeNanos(); attachInfo.mDrawingTime = frameTimeNanos / TimeUtils.NANOS_PER_MS; Loading @@ -308,7 +317,7 @@ public class ThreadedRenderer extends HardwareRenderer { recordDuration = System.nanoTime(); } updateRootDisplayList(view, callbacks); updateRootDisplayList(view, callbacks, isStartingWindow); if (mProfilingEnabled) { recordDuration = System.nanoTime() - recordDuration; Loading
core/java/android/view/ViewRootImpl.java +3 −9 Original line number Diff line number Diff line Loading @@ -711,17 +711,10 @@ public final class ViewRootImpl implements ViewParent, // can be used by code on the system process to escape that and enable // HW accelerated drawing. (This is basically for the lock screen.) final boolean fakeHwAccelerated = (attrs.privateFlags & WindowManager.LayoutParams.PRIVATE_FLAG_FAKE_HARDWARE_ACCELERATED) != 0; final boolean forceHwAccelerated = (attrs.privateFlags & WindowManager.LayoutParams.PRIVATE_FLAG_FORCE_HARDWARE_ACCELERATED) != 0; if (fakeHwAccelerated) { // This is exclusively for the preview windows the window manager // shows for launching applications, so they will look more like // the app being launched. mAttachInfo.mHardwareAccelerationRequested = true; } else if (!HardwareRenderer.sRendererDisabled if (!HardwareRenderer.sRendererDisabled || (HardwareRenderer.sSystemRendererDisabled && forceHwAccelerated)) { if (mAttachInfo.mHardwareRenderer != null) { mAttachInfo.mHardwareRenderer.destroy(); Loading Loading @@ -2486,7 +2479,8 @@ public final class ViewRootImpl implements ViewParent, dirty.setEmpty(); mBlockResizeBuffer = false; mAttachInfo.mHardwareRenderer.draw(mView, mAttachInfo, this); mAttachInfo.mHardwareRenderer.draw(mView, mAttachInfo, this, params.type == WindowManager.LayoutParams.TYPE_APPLICATION_STARTING); } else { // If we get here with a disabled & requested hardware renderer, something went // wrong (an invalidate posted right before we destroyed the hardware surface Loading
core/java/android/view/WindowManager.java +0 −20 Original line number Diff line number Diff line Loading @@ -1023,26 +1023,6 @@ public interface WindowManager extends ViewManager { }, formatToHexString = true) public int flags; /** * If the window has requested hardware acceleration, but this is not * allowed in the process it is in, then still render it as if it is * hardware accelerated. This is used for the starting preview windows * in the system process, which don't need to have the overhead of * hardware acceleration (they are just a static rendering), but should * be rendered as such to match the actual window of the app even if it * is hardware accelerated. * Even if the window isn't hardware accelerated, still do its rendering * as if it was. * Like {@link #FLAG_HARDWARE_ACCELERATED} except for trusted system windows * that need hardware acceleration (e.g. LockScreen), where hardware acceleration * is generally disabled. This flag must be specified in addition to * {@link #FLAG_HARDWARE_ACCELERATED} to enable hardware acceleration for system * windows. * * @hide */ public static final int PRIVATE_FLAG_FAKE_HARDWARE_ACCELERATED = 0x00000001; /** * In the system process, we globally do not use hardware acceleration * because there are many threads doing UI there and they conflict. Loading
policy/src/com/android/internal/policy/impl/PhoneWindowManager.java +0 −2 Original line number Diff line number Diff line Loading @@ -1826,8 +1826,6 @@ public class PhoneWindowManager implements WindowManagerPolicy { params.packageName = packageName; params.windowAnimations = win.getWindowStyle().getResourceId( com.android.internal.R.styleable.Window_windowAnimationStyle, 0); params.privateFlags |= WindowManager.LayoutParams.PRIVATE_FLAG_FAKE_HARDWARE_ACCELERATED; params.privateFlags |= WindowManager.LayoutParams.PRIVATE_FLAG_SHOW_FOR_ALL_USERS; if (!compatInfo.supportsScreen()) { Loading