summaryrefslogtreecommitdiffstats
path: root/core/java/android
diff options
context:
space:
mode:
authorRomain Guy <romainguy@google.com>2012-05-15 19:19:41 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2012-05-15 19:19:41 -0700
commitd44a16864d549e08506d0f80198031f05a03bd15 (patch)
tree5887cf8b117826f36b4f5b2c86a56e00c96ab803 /core/java/android
parent67d10a5867ac26155117f2ffda84f9d2a21dbcf0 (diff)
parent413baf8a03db180607efaca0bb60c15a153c4322 (diff)
downloadframeworks_base-d44a16864d549e08506d0f80198031f05a03bd15.zip
frameworks_base-d44a16864d549e08506d0f80198031f05a03bd15.tar.gz
frameworks_base-d44a16864d549e08506d0f80198031f05a03bd15.tar.bz2
Merge "Don't draw onto a hw surface using the software renderer Bug #6485955" into jb-dev
Diffstat (limited to 'core/java/android')
-rw-r--r--core/java/android/view/ViewRootImpl.java12
1 files changed, 12 insertions, 0 deletions
diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java
index 41cd887..bcd336d 100644
--- a/core/java/android/view/ViewRootImpl.java
+++ b/core/java/android/view/ViewRootImpl.java
@@ -2183,6 +2183,18 @@ public final class ViewRootImpl implements ViewParent,
private boolean drawSoftware(Surface surface, AttachInfo attachInfo, int yoff,
boolean scalingRequired, Rect dirty) {
+ // If we get here with a disabled & requested hardware renderer, something went
+ // wrong (an invalidate posted right before we destroyed the hardware surface
+ // for instance) so we should just bail out. Locking the surface with software
+ // rendering at this point would lock it forever and prevent hardware renderer
+ // from doing its job when it comes back.
+ if (attachInfo.mHardwareRenderer != null && !attachInfo.mHardwareRenderer.isEnabled() &&
+ attachInfo.mHardwareRenderer.isRequested()) {
+ mFullRedrawNeeded = true;
+ scheduleTraversals();
+ return false;
+ }
+
// Draw with software renderer.
Canvas canvas;
try {