Flag window animation transactions as animations.
This change makes WindowManager use the new eAnimation flag when animating windows. This prevents some of the window updates from being combined with updates from prior animation frames. Bug: 7353840 Change-Id: I5a9f8fa2c1a2f5f08363a45cd9f28bb97cd77080
This commit is contained in:
@@ -245,6 +245,7 @@ public class Surface implements Parcelable {
|
||||
|
||||
private static native void nativeOpenTransaction();
|
||||
private static native void nativeCloseTransaction();
|
||||
private static native void nativeSetAnimationTransaction();
|
||||
|
||||
private native void nativeSetLayer(int zorder);
|
||||
private native void nativeSetPosition(float x, float y);
|
||||
@@ -525,6 +526,11 @@ public class Surface implements Parcelable {
|
||||
nativeCloseTransaction();
|
||||
}
|
||||
|
||||
/** flag the transaction as an animation @hide */
|
||||
public static void setAnimationTransaction() {
|
||||
nativeSetAnimationTransaction();
|
||||
}
|
||||
|
||||
/** @hide */
|
||||
public void setLayer(int zorder) {
|
||||
nativeSetLayer(zorder);
|
||||
|
||||
@@ -526,6 +526,10 @@ static void nativeCloseTransaction(JNIEnv* env, jclass clazz) {
|
||||
SurfaceComposerClient::closeGlobalTransaction();
|
||||
}
|
||||
|
||||
static void nativeSetAnimationTransaction(JNIEnv* env, jclass clazz) {
|
||||
SurfaceComposerClient::setAnimationTransaction();
|
||||
}
|
||||
|
||||
static void nativeSetLayer(JNIEnv* env, jobject surfaceObj, jint zorder) {
|
||||
sp<SurfaceControl> surface(getSurfaceControl(env, surfaceObj));
|
||||
if (surface == NULL) return;
|
||||
@@ -819,6 +823,8 @@ static JNINativeMethod gSurfaceMethods[] = {
|
||||
(void*)nativeOpenTransaction },
|
||||
{"nativeCloseTransaction", "()V",
|
||||
(void*)nativeCloseTransaction },
|
||||
{"nativeSetAnimationTransaction", "()V",
|
||||
(void*)nativeSetAnimationTransaction },
|
||||
{"nativeSetLayer", "(I)V",
|
||||
(void*)nativeSetLayer },
|
||||
{"nativeSetPosition", "(FF)V",
|
||||
|
||||
@@ -618,6 +618,7 @@ public class WindowAnimator {
|
||||
if (WindowManagerService.SHOW_TRANSACTIONS) Slog.i(
|
||||
TAG, ">>> OPEN TRANSACTION animateLocked");
|
||||
Surface.openTransaction();
|
||||
Surface.setAnimationTransaction();
|
||||
try {
|
||||
updateAppWindowsLocked();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user