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

Commit 8990cb57 authored by Chet Haase's avatar Chet Haase Committed by Android (Google) Code Review
Browse files

Merge "Fix flashing wifi dialog after rotating back from landscape." into ics-mr1

parents 500afb87 08837c24
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -218,6 +218,13 @@ public abstract class HardwareRenderer {
     */
    abstract int getHeight();

    /**
     * Gets the current canvas associated with this HardwareRenderer.
     *
     * @return the current HardwareCanvas
     */
    abstract HardwareCanvas getCanvas();

    /**
     * Sets the directory to use as a persistent storage for hardware rendering
     * resources.
@@ -783,6 +790,11 @@ public abstract class HardwareRenderer {
            return mHeight;
        }

        @Override
        HardwareCanvas getCanvas() {
            return mCanvas;
        }

        boolean canDraw() {
            return mGl != null && mCanvas != null;
        }        
+14 −13
Original line number Diff line number Diff line
@@ -1216,7 +1216,8 @@ public final class ViewRootImpl extends Handler implements ViewParent,
                        disposeResizeBuffer();

                        boolean completed = false;
                        HardwareCanvas canvas = null;
                        HardwareCanvas hwRendererCanvas = mAttachInfo.mHardwareRenderer.getCanvas();
                        HardwareCanvas layerCanvas = null;
                        try {
                            if (mResizeBuffer == null) {
                                mResizeBuffer = mAttachInfo.mHardwareRenderer.createHardwareLayer(
@@ -1225,12 +1226,12 @@ public final class ViewRootImpl extends Handler implements ViewParent,
                                    mResizeBuffer.getHeight() != mHeight) {
                                mResizeBuffer.resize(mWidth, mHeight);
                            }
                            canvas = mResizeBuffer.start(mAttachInfo.mHardwareCanvas);
                            canvas.setViewport(mWidth, mHeight);
                            canvas.onPreDraw(null);
                            final int restoreCount = canvas.save();
                            layerCanvas = mResizeBuffer.start(hwRendererCanvas);
                            layerCanvas.setViewport(mWidth, mHeight);
                            layerCanvas.onPreDraw(null);
                            final int restoreCount = layerCanvas.save();
                            
                            canvas.drawColor(0xff000000, PorterDuff.Mode.SRC);
                            layerCanvas.drawColor(0xff000000, PorterDuff.Mode.SRC);

                            int yoff;
                            final boolean scrolling = mScroller != null
@@ -1242,27 +1243,27 @@ public final class ViewRootImpl extends Handler implements ViewParent,
                                yoff = mScrollY;
                            }

                            canvas.translate(0, -yoff);
                            layerCanvas.translate(0, -yoff);
                            if (mTranslator != null) {
                                mTranslator.translateCanvas(canvas);
                                mTranslator.translateCanvas(layerCanvas);
                            }

                            mView.draw(canvas);
                            mView.draw(layerCanvas);

                            mResizeBufferStartTime = SystemClock.uptimeMillis();
                            mResizeBufferDuration = mView.getResources().getInteger(
                                    com.android.internal.R.integer.config_mediumAnimTime);
                            completed = true;

                            canvas.restoreToCount(restoreCount);
                            layerCanvas.restoreToCount(restoreCount);
                        } catch (OutOfMemoryError e) {
                            Log.w(TAG, "Not enough memory for content change anim buffer", e);
                        } finally {
                            if (canvas != null) {
                                canvas.onPostDraw();
                            if (layerCanvas != null) {
                                layerCanvas.onPostDraw();
                            }
                            if (mResizeBuffer != null) {
                                mResizeBuffer.end(mAttachInfo.mHardwareCanvas);
                                mResizeBuffer.end(hwRendererCanvas);
                                if (!completed) {
                                    mResizeBuffer.destroy();
                                    mResizeBuffer = null;
+4 −2
Original line number Diff line number Diff line
@@ -201,14 +201,16 @@ void OpenGLRenderer::interrupt() {
}

void OpenGLRenderer::resume() {
    glViewport(0, 0, mSnapshot->viewport.getWidth(), mSnapshot->viewport.getHeight());
    sp<Snapshot> snapshot = (mSnapshot != NULL) ? mSnapshot : mFirstSnapshot;

    glViewport(0, 0, snapshot->viewport.getWidth(), snapshot->viewport.getHeight());

    glEnable(GL_SCISSOR_TEST);
    dirtyClip();

    glDisable(GL_DITHER);

    glBindFramebuffer(GL_FRAMEBUFFER, mSnapshot->fbo);
    glBindFramebuffer(GL_FRAMEBUFFER, snapshot->fbo);
    glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);

    mCaches.blend = true;