diff options
author | Romain Guy <romainguy@google.com> | 2011-12-09 12:28:46 -0800 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2011-12-09 12:28:46 -0800 |
commit | 3f7be830f053265699f3b8cb18d709f84aa5d546 (patch) | |
tree | 3f4734ef0bba8c069d03bbb138a413bbe0160536 /core/java | |
parent | 5aa2136ddfcccab853381316b1940efb1eb6679c (diff) | |
parent | 9477c6e6581ce97976250951f33e1297604ac777 (diff) | |
download | frameworks_base-3f7be830f053265699f3b8cb18d709f84aa5d546.zip frameworks_base-3f7be830f053265699f3b8cb18d709f84aa5d546.tar.gz frameworks_base-3f7be830f053265699f3b8cb18d709f84aa5d546.tar.bz2 |
Merge "Enable dirty regions on newly created EGL surfaces"
Diffstat (limited to 'core/java')
-rw-r--r-- | core/java/android/view/HardwareRenderer.java | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/core/java/android/view/HardwareRenderer.java b/core/java/android/view/HardwareRenderer.java index 443acf6..3f793bb 100644 --- a/core/java/android/view/HardwareRenderer.java +++ b/core/java/android/view/HardwareRenderer.java @@ -441,6 +441,8 @@ public abstract class HardwareRenderer { } boolean mDirtyRegionsEnabled; + boolean mUpdateDirtyRegions; + final boolean mVsyncDisabled; final int mGlVersion; @@ -675,6 +677,12 @@ public abstract class HardwareRenderer { initCaches(); + enableDirtyRegions(); + + return mEglContext.getGL(); + } + + private void enableDirtyRegions() { // If mDirtyRegions is set, this means we have an EGL configuration // with EGL_SWAP_BEHAVIOR_PRESERVED_BIT set if (sDirtyRegions) { @@ -690,8 +698,6 @@ public abstract class HardwareRenderer { // configuration (see RENDER_DIRTY_REGIONS) mDirtyRegionsEnabled = GLES20Canvas.isBackBufferPreserved(); } - - return mEglContext.getGL(); } abstract void initCaches(); @@ -745,6 +751,9 @@ public abstract class HardwareRenderer { if (!createSurface(holder)) { return; } + + mUpdateDirtyRegions = true; + if (mCanvas != null) { setEnabled(true); } @@ -943,6 +952,10 @@ public abstract class HardwareRenderer { fallback(true); return SURFACE_STATE_ERROR; } else { + if (mUpdateDirtyRegions) { + enableDirtyRegions(); + mUpdateDirtyRegions = false; + } return SURFACE_STATE_UPDATED; } } |