diff options
author | Romain Guy <romainguy@google.com> | 2011-11-10 19:23:58 -0800 |
---|---|---|
committer | Romain Guy <romainguy@google.com> | 2011-11-10 19:23:58 -0800 |
commit | da96f8ac2c1c35a54f3f36e6d776cb386a251d03 (patch) | |
tree | 646abfdfeee4346b422943924182162f4a3cdf84 /core/java/android/view/View.java | |
parent | 50a66f0e9c5a85a6af4a99eb66656a69eba24572 (diff) | |
download | frameworks_base-da96f8ac2c1c35a54f3f36e6d776cb386a251d03.zip frameworks_base-da96f8ac2c1c35a54f3f36e6d776cb386a251d03.tar.gz frameworks_base-da96f8ac2c1c35a54f3f36e6d776cb386a251d03.tar.bz2 |
Discard framebuffer rendering queues when discarding layers
Bug #5581817
Change-Id: If612846ec5f7793710fc4df152791fb32c506551
Diffstat (limited to 'core/java/android/view/View.java')
-rw-r--r-- | core/java/android/view/View.java | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java index dc46d42..3bddeef 100644 --- a/core/java/android/view/View.java +++ b/core/java/android/view/View.java @@ -10146,6 +10146,12 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal break; } } + + void flushLayer() { + if (mLayerType == LAYER_TYPE_HARDWARE && mHardwareLayer != null) { + mHardwareLayer.flush(); + } + } /** * <p>Returns a hardware layer that can be used to draw this view again @@ -10158,6 +10164,9 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal !mAttachInfo.mHardwareRenderer.isEnabled()) { return null; } + + if (!mAttachInfo.mHardwareRenderer.validate()) return null; + final int width = mRight - mLeft; final int height = mBottom - mTop; @@ -10232,8 +10241,14 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal */ boolean destroyLayer() { if (mHardwareLayer != null) { - mHardwareLayer.destroy(); - mHardwareLayer = null; + AttachInfo info = mAttachInfo; + if (info != null && info.mHardwareRenderer != null && + info.mHardwareRenderer.isEnabled()) { + if (!info.mHardwareRenderer.validate()) { + mHardwareLayer.destroy(); + mHardwareLayer = null; + } + } return true; } return false; |