Merge "Fix flashing wifi dialog after rotating back from landscape." into ics-mr1
This commit is contained in:
@@ -218,6 +218,13 @@ public abstract class HardwareRenderer {
|
|||||||
*/
|
*/
|
||||||
abstract int getHeight();
|
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
|
* Sets the directory to use as a persistent storage for hardware rendering
|
||||||
* resources.
|
* resources.
|
||||||
@@ -783,6 +790,11 @@ public abstract class HardwareRenderer {
|
|||||||
return mHeight;
|
return mHeight;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
HardwareCanvas getCanvas() {
|
||||||
|
return mCanvas;
|
||||||
|
}
|
||||||
|
|
||||||
boolean canDraw() {
|
boolean canDraw() {
|
||||||
return mGl != null && mCanvas != null;
|
return mGl != null && mCanvas != null;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1216,7 +1216,8 @@ public final class ViewRootImpl extends Handler implements ViewParent,
|
|||||||
disposeResizeBuffer();
|
disposeResizeBuffer();
|
||||||
|
|
||||||
boolean completed = false;
|
boolean completed = false;
|
||||||
HardwareCanvas canvas = null;
|
HardwareCanvas hwRendererCanvas = mAttachInfo.mHardwareRenderer.getCanvas();
|
||||||
|
HardwareCanvas layerCanvas = null;
|
||||||
try {
|
try {
|
||||||
if (mResizeBuffer == null) {
|
if (mResizeBuffer == null) {
|
||||||
mResizeBuffer = mAttachInfo.mHardwareRenderer.createHardwareLayer(
|
mResizeBuffer = mAttachInfo.mHardwareRenderer.createHardwareLayer(
|
||||||
@@ -1225,12 +1226,12 @@ public final class ViewRootImpl extends Handler implements ViewParent,
|
|||||||
mResizeBuffer.getHeight() != mHeight) {
|
mResizeBuffer.getHeight() != mHeight) {
|
||||||
mResizeBuffer.resize(mWidth, mHeight);
|
mResizeBuffer.resize(mWidth, mHeight);
|
||||||
}
|
}
|
||||||
canvas = mResizeBuffer.start(mAttachInfo.mHardwareCanvas);
|
layerCanvas = mResizeBuffer.start(hwRendererCanvas);
|
||||||
canvas.setViewport(mWidth, mHeight);
|
layerCanvas.setViewport(mWidth, mHeight);
|
||||||
canvas.onPreDraw(null);
|
layerCanvas.onPreDraw(null);
|
||||||
final int restoreCount = canvas.save();
|
final int restoreCount = layerCanvas.save();
|
||||||
|
|
||||||
canvas.drawColor(0xff000000, PorterDuff.Mode.SRC);
|
layerCanvas.drawColor(0xff000000, PorterDuff.Mode.SRC);
|
||||||
|
|
||||||
int yoff;
|
int yoff;
|
||||||
final boolean scrolling = mScroller != null
|
final boolean scrolling = mScroller != null
|
||||||
@@ -1242,27 +1243,27 @@ public final class ViewRootImpl extends Handler implements ViewParent,
|
|||||||
yoff = mScrollY;
|
yoff = mScrollY;
|
||||||
}
|
}
|
||||||
|
|
||||||
canvas.translate(0, -yoff);
|
layerCanvas.translate(0, -yoff);
|
||||||
if (mTranslator != null) {
|
if (mTranslator != null) {
|
||||||
mTranslator.translateCanvas(canvas);
|
mTranslator.translateCanvas(layerCanvas);
|
||||||
}
|
}
|
||||||
|
|
||||||
mView.draw(canvas);
|
mView.draw(layerCanvas);
|
||||||
|
|
||||||
mResizeBufferStartTime = SystemClock.uptimeMillis();
|
mResizeBufferStartTime = SystemClock.uptimeMillis();
|
||||||
mResizeBufferDuration = mView.getResources().getInteger(
|
mResizeBufferDuration = mView.getResources().getInteger(
|
||||||
com.android.internal.R.integer.config_mediumAnimTime);
|
com.android.internal.R.integer.config_mediumAnimTime);
|
||||||
completed = true;
|
completed = true;
|
||||||
|
|
||||||
canvas.restoreToCount(restoreCount);
|
layerCanvas.restoreToCount(restoreCount);
|
||||||
} catch (OutOfMemoryError e) {
|
} catch (OutOfMemoryError e) {
|
||||||
Log.w(TAG, "Not enough memory for content change anim buffer", e);
|
Log.w(TAG, "Not enough memory for content change anim buffer", e);
|
||||||
} finally {
|
} finally {
|
||||||
if (canvas != null) {
|
if (layerCanvas != null) {
|
||||||
canvas.onPostDraw();
|
layerCanvas.onPostDraw();
|
||||||
}
|
}
|
||||||
if (mResizeBuffer != null) {
|
if (mResizeBuffer != null) {
|
||||||
mResizeBuffer.end(mAttachInfo.mHardwareCanvas);
|
mResizeBuffer.end(hwRendererCanvas);
|
||||||
if (!completed) {
|
if (!completed) {
|
||||||
mResizeBuffer.destroy();
|
mResizeBuffer.destroy();
|
||||||
mResizeBuffer = null;
|
mResizeBuffer = null;
|
||||||
|
|||||||
@@ -201,14 +201,16 @@ void OpenGLRenderer::interrupt() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void OpenGLRenderer::resume() {
|
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);
|
glEnable(GL_SCISSOR_TEST);
|
||||||
dirtyClip();
|
dirtyClip();
|
||||||
|
|
||||||
glDisable(GL_DITHER);
|
glDisable(GL_DITHER);
|
||||||
|
|
||||||
glBindFramebuffer(GL_FRAMEBUFFER, mSnapshot->fbo);
|
glBindFramebuffer(GL_FRAMEBUFFER, snapshot->fbo);
|
||||||
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
|
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
|
||||||
|
|
||||||
mCaches.blend = true;
|
mCaches.blend = true;
|
||||||
|
|||||||
Reference in New Issue
Block a user