Merge "Make sure that we update SurfaceView's window with display lists. Bug #3395487" into honeycomb
This commit is contained in:
@@ -164,6 +164,17 @@ public class SurfaceView extends View {
|
|||||||
boolean mReportDrawNeeded;
|
boolean mReportDrawNeeded;
|
||||||
private Translator mTranslator;
|
private Translator mTranslator;
|
||||||
|
|
||||||
|
private final ViewTreeObserver.OnPreDrawListener mDrawListener =
|
||||||
|
new ViewTreeObserver.OnPreDrawListener() {
|
||||||
|
@Override
|
||||||
|
public boolean onPreDraw() {
|
||||||
|
// reposition ourselves where the surface is
|
||||||
|
mHaveFrame = true;
|
||||||
|
updateWindow(false, false);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
public SurfaceView(Context context) {
|
public SurfaceView(Context context) {
|
||||||
super(context);
|
super(context);
|
||||||
init();
|
init();
|
||||||
@@ -201,7 +212,9 @@ public class SurfaceView extends View {
|
|||||||
mLayout.token = getWindowToken();
|
mLayout.token = getWindowToken();
|
||||||
mLayout.setTitle("SurfaceView");
|
mLayout.setTitle("SurfaceView");
|
||||||
mViewVisibility = getVisibility() == VISIBLE;
|
mViewVisibility = getVisibility() == VISIBLE;
|
||||||
getViewTreeObserver().addOnScrollChangedListener(mScrollChangedListener);
|
ViewTreeObserver observer = getViewTreeObserver();
|
||||||
|
observer.addOnScrollChangedListener(mScrollChangedListener);
|
||||||
|
observer.addOnPreDrawListener(mDrawListener);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -262,7 +275,9 @@ public class SurfaceView extends View {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onDetachedFromWindow() {
|
protected void onDetachedFromWindow() {
|
||||||
getViewTreeObserver().removeOnScrollChangedListener(mScrollChangedListener);
|
ViewTreeObserver observer = getViewTreeObserver();
|
||||||
|
observer.removeOnScrollChangedListener(mScrollChangedListener);
|
||||||
|
observer.removeOnPreDrawListener(mDrawListener);
|
||||||
mRequestedVisible = false;
|
mRequestedVisible = false;
|
||||||
updateWindow(false, false);
|
updateWindow(false, false);
|
||||||
mHaveFrame = false;
|
mHaveFrame = false;
|
||||||
@@ -346,9 +361,6 @@ public class SurfaceView extends View {
|
|||||||
canvas.drawColor(0, PorterDuff.Mode.CLEAR);
|
canvas.drawColor(0, PorterDuff.Mode.CLEAR);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// reposition ourselves where the surface is
|
|
||||||
mHaveFrame = true;
|
|
||||||
updateWindow(false, false);
|
|
||||||
super.dispatchDraw(canvas);
|
super.dispatchDraw(canvas);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user