diff options
-rw-r--r-- | core/java/android/view/HardwareRenderer.java | 2 | ||||
-rw-r--r-- | core/java/android/view/View.java | 4 | ||||
-rw-r--r-- | libs/hwui/LayerRenderer.cpp | 6 |
3 files changed, 6 insertions, 6 deletions
diff --git a/core/java/android/view/HardwareRenderer.java b/core/java/android/view/HardwareRenderer.java index 48f40c3..71d55f7 100644 --- a/core/java/android/view/HardwareRenderer.java +++ b/core/java/android/view/HardwareRenderer.java @@ -547,7 +547,7 @@ public abstract class HardwareRenderer { } onPreDraw(dirty); - + HardwareCanvas canvas = mCanvas; attachInfo.mHardwareCanvas = canvas; diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java index 393412f..9db43a1 100644 --- a/core/java/android/view/View.java +++ b/core/java/android/view/View.java @@ -8221,8 +8221,10 @@ public class View implements Drawable.Callback, KeyEvent.Callback, Accessibility if (mHardwareLayer == null) { mHardwareLayer = mAttachInfo.mHardwareRenderer.createHardwareLayer( width, height, isOpaque()); + mLocalDirtyRect.setEmpty(); } else if (mHardwareLayer.getWidth() != width || mHardwareLayer.getHeight() != height) { mHardwareLayer.resize(width, height); + mLocalDirtyRect.setEmpty(); } Canvas currentCanvas = mAttachInfo.mHardwareCanvas; @@ -8231,6 +8233,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback, Accessibility try { canvas.setViewport(width, height); canvas.onPreDraw(mLocalDirtyRect); + mLocalDirtyRect.setEmpty(); final int restoreCount = canvas.save(); @@ -8252,7 +8255,6 @@ public class View implements Drawable.Callback, KeyEvent.Callback, Accessibility canvas.onPostDraw(); mHardwareLayer.end(currentCanvas); mAttachInfo.mHardwareCanvas = currentCanvas; - mLocalDirtyRect.setEmpty(); } } diff --git a/libs/hwui/LayerRenderer.cpp b/libs/hwui/LayerRenderer.cpp index 7379b63..60ff0bf 100644 --- a/libs/hwui/LayerRenderer.cpp +++ b/libs/hwui/LayerRenderer.cpp @@ -32,6 +32,8 @@ namespace uirenderer { void LayerRenderer::prepareDirty(float left, float top, float right, float bottom, bool opaque) { LAYER_RENDERER_LOGD("Rendering into layer, fbo = %d", mLayer->fbo); + glBindFramebuffer(GL_FRAMEBUFFER, mLayer->fbo); + #if RENDER_LAYERS_AS_REGIONS Rect dirty(left, top, right, bottom); if (dirty.isEmpty() || (dirty.left <= 0 && dirty.top <= 0 && @@ -43,11 +45,7 @@ void LayerRenderer::prepareDirty(float left, float top, float right, float botto android::Rect r(dirty.left, dirty.top, dirty.right, dirty.bottom); mLayer->region.subtractSelf(r); } -#endif - glBindFramebuffer(GL_FRAMEBUFFER, mLayer->fbo); - -#if RENDER_LAYERS_AS_REGIONS OpenGLRenderer::prepareDirty(dirty.left, dirty.top, dirty.right, dirty.bottom, opaque); #else OpenGLRenderer::prepareDirty(0.0f, 0.0f, mLayer->width, mLayer->height, opaque); |