summaryrefslogtreecommitdiffstats
path: root/core/java/android/view/View.java
diff options
context:
space:
mode:
authorRomain Guy <romainguy@google.com>2011-11-10 19:23:58 -0800
committerRomain Guy <romainguy@google.com>2011-11-10 19:23:58 -0800
commitda96f8ac2c1c35a54f3f36e6d776cb386a251d03 (patch)
tree646abfdfeee4346b422943924182162f4a3cdf84 /core/java/android/view/View.java
parent50a66f0e9c5a85a6af4a99eb66656a69eba24572 (diff)
downloadframeworks_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.java19
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;