Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f44ed5ad authored by Romain Guy's avatar Romain Guy Committed by Android (Google) Code Review
Browse files

Merge "Don't clobber the local dirty rect after rendering a layer. Bug...

Merge "Don't clobber the local dirty rect after rendering a layer. Bug #3417254 Bug #3413433" into honeycomb
parents 6bc710f7 62687ec1
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -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();
            }
        }

+2 −4
Original line number Diff line number Diff line
@@ -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);
+1 −1

File changed.

Contains only whitespace changes.