diff options
author | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2022-04-06 23:07:22 +0000 |
---|---|---|
committer | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2022-04-06 23:07:22 +0000 |
commit | 8ac258eacb5ed5ab6b0764a94aac5151689d567c (patch) | |
tree | 35723c65da3e7c7346b0bd011dee58efdbaef40c | |
parent | 4ccc1b83f7787207ec09493ea210ed0e8b76acaf (diff) | |
parent | 5cccc67c1efad87d5fe24d6fa535cb36f2b2a750 (diff) | |
download | base-8ac258eacb5ed5ab6b0764a94aac5151689d567c.tar.gz |
Snap for 8412755 from 5cccc67c1efad87d5fe24d6fa535cb36f2b2a750 to sc-qpr3-release
Change-Id: I884c706e98c693a5496ffeb15c7ad1229d5665a0
4 files changed, 23 insertions, 1 deletions
diff --git a/core/java/android/view/SurfaceControl.java b/core/java/android/view/SurfaceControl.java index 960d23d7afb0..a686cbf257ef 100644 --- a/core/java/android/view/SurfaceControl.java +++ b/core/java/android/view/SurfaceControl.java @@ -245,6 +245,7 @@ public final class SurfaceControl implements Parcelable { @SurfaceControl.BufferTransform int transformHint); private static native int nativeGetTransformHint(long nativeObject); private static native int nativeGetLayerId(long nativeObject); + private static native void nativeSanitize(long transactionObject); /** * Transforms that can be applied to buffers as they are displayed to a window. @@ -3544,6 +3545,13 @@ public final class SurfaceControl implements Parcelable { } /** + * @hide + */ + public void sanitize() { + nativeSanitize(mNativeObject); + } + + /** * Merge the other transaction into this transaction, clearing the * other transaction as if it had been applied. * diff --git a/core/jni/android_view_SurfaceControl.cpp b/core/jni/android_view_SurfaceControl.cpp index 1452c67ae3c6..33fc92d60d62 100644 --- a/core/jni/android_view_SurfaceControl.cpp +++ b/core/jni/android_view_SurfaceControl.cpp @@ -877,6 +877,11 @@ static void nativeSetDropInputMode(JNIEnv* env, jclass clazz, jlong transactionO transaction->setDropInputMode(ctrl, static_cast<gui::DropInputMode>(mode)); } +static void nativeSanitize(JNIEnv* env, jclass clazz, jlong transactionObj) { + auto transaction = reinterpret_cast<SurfaceComposerClient::Transaction*>(transactionObj); + transaction->sanitize(); +} + static jlongArray nativeGetPhysicalDisplayIds(JNIEnv* env, jclass clazz) { const auto displayIds = SurfaceComposerClient::getPhysicalDisplayIds(); jlongArray array = env->NewLongArray(displayIds.size()); @@ -2030,6 +2035,8 @@ static const JNINativeMethod sSurfaceControlMethods[] = { (void*)nativeSetDropInputMode }, {"nativeGetLayerId", "(J)I", (void*)nativeGetLayerId }, + {"nativeSanitize", "(J)V", + (void*) nativeSanitize } // clang-format on }; diff --git a/services/core/java/com/android/server/pm/PackageInstallerService.java b/services/core/java/com/android/server/pm/PackageInstallerService.java index 2f1fa2221e98..708b2129ad29 100644 --- a/services/core/java/com/android/server/pm/PackageInstallerService.java +++ b/services/core/java/com/android/server/pm/PackageInstallerService.java @@ -390,7 +390,10 @@ public class PackageInstallerService extends IPackageInstaller.Stub implements // Their staging dirs will be removed too PackageInstallerSession root = !session.hasParentSessionId() ? session : mSessions.get(session.getParentSessionId()); - if (!root.isDestroyed()) { + if (root == null) { + Slog.e(TAG, "freeStageDirs: found an orphaned session: " + + session.sessionId + " parent=" + session.getParentSessionId()); + } else if (!root.isDestroyed()) { root.abandon(); } } else { diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index 8839fbac26a1..ec3d96150257 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -2676,6 +2676,10 @@ public class WindowManagerService extends IWindowManager.Stub void finishDrawingWindow(Session session, IWindow client, @Nullable SurfaceControl.Transaction postDrawTransaction) { + if (postDrawTransaction != null) { + postDrawTransaction.sanitize(); + } + final long origId = Binder.clearCallingIdentity(); try { synchronized (mGlobalLock) { |