am 38928899: am 8990cb57: Merge "Fix flashing wifi dialog after rotating back from landscape." into ics-mr1
* commit '3892889952b0ad3fa0b095c96d8ae2ae110585e2': Fix flashing wifi dialog after rotating back from landscape.
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
@@ -1217,7 +1217,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(
|
||||
@@ -1226,12 +1227,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
|
||||
@@ -1243,27 +1244,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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user