summaryrefslogtreecommitdiffstats
path: root/core/java/android/view/ThreadedRenderer.java
diff options
context:
space:
mode:
authorJohn Reck <jreck@google.com>2014-11-07 22:45:33 +0000
committerAndroid Git Automerger <android-git-automerger@android.com>2014-11-07 22:45:33 +0000
commit8dda03a08603f45b3c2c90633491ce2c1fea266b (patch)
treeef89ce0a82b316b511e1a2a6419000e11d37e4bb /core/java/android/view/ThreadedRenderer.java
parent8c1cd7e61f050afd450cb05add633e2fbe0b195a (diff)
parentca93f69c96df85bd6bc72a2a47dae6c0d5336ab2 (diff)
downloadframeworks_base-8dda03a08603f45b3c2c90633491ce2c1fea266b.zip
frameworks_base-8dda03a08603f45b3c2c90633491ce2c1fea266b.tar.gz
frameworks_base-8dda03a08603f45b3c2c90633491ce2c1fea266b.tar.bz2
am ca93f69c: Merge "Have an actual fallback if the surface is lost" into lmp-mr1-dev
* commit 'ca93f69c96df85bd6bc72a2a47dae6c0d5336ab2': Have an actual fallback if the surface is lost
Diffstat (limited to 'core/java/android/view/ThreadedRenderer.java')
-rw-r--r--core/java/android/view/ThreadedRenderer.java8
1 files changed, 8 insertions, 0 deletions
diff --git a/core/java/android/view/ThreadedRenderer.java b/core/java/android/view/ThreadedRenderer.java
index 00a8884..5579c13 100644
--- a/core/java/android/view/ThreadedRenderer.java
+++ b/core/java/android/view/ThreadedRenderer.java
@@ -66,6 +66,8 @@ public class ThreadedRenderer extends HardwareRenderer {
private static final int SYNC_OK = 0;
// Needs a ViewRoot invalidate
private static final int SYNC_INVALIDATE_REQUIRED = 1 << 0;
+ // Spoiler: the reward is GPU-accelerated drawing, better find that Surface!
+ private static final int SYNC_LOST_SURFACE_REWARD_IF_FOUND = 1 << 1;
private static final String[] VISUALIZERS = {
PROFILE_PROPERTY_VISUALIZE_BARS,
@@ -336,6 +338,12 @@ public class ThreadedRenderer extends HardwareRenderer {
int syncResult = nSyncAndDrawFrame(mNativeProxy, frameTimeNanos,
recordDuration, view.getResources().getDisplayMetrics().density);
+ if ((syncResult & SYNC_LOST_SURFACE_REWARD_IF_FOUND) != 0) {
+ setEnabled(false);
+ // Invalidate since we failed to draw. This should fetch a Surface
+ // if it is still needed or do nothing if we are no longer drawing
+ attachInfo.mViewRootImpl.invalidate();
+ }
if ((syncResult & SYNC_INVALIDATE_REQUIRED) != 0) {
attachInfo.mViewRootImpl.invalidate();
}