summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Chavi Weingarten <chaviw@google.com> 2019-02-21 23:33:44 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2019-02-21 23:33:44 +0000
commit263a4d08e4d63e8ca93600d125933695119e3c97 (patch)
tree56ecb9178452e0d236d4b53079134b475c4facdb
parenta2c5d1a7f36c53c06d1df8364e3036ea986855a4 (diff)
parent319cd078608cd7964fbdcf7c7fb407de8050ce0d (diff)
Merge "Add synchronous transaction to wait for setInputWindow to complete (5/n)"
-rw-r--r--core/java/android/view/SurfaceControl.java12
-rw-r--r--core/jni/android_view_SurfaceControl.cpp9
2 files changed, 20 insertions, 1 deletions
diff --git a/core/java/android/view/SurfaceControl.java b/core/java/android/view/SurfaceControl.java
index e5db44eca684..aaf85aff2e8f 100644
--- a/core/java/android/view/SurfaceControl.java
+++ b/core/java/android/view/SurfaceControl.java
@@ -189,6 +189,7 @@ public final class SurfaceControl implements Parcelable {
IBinder toToken);
private static native boolean nativeGetProtectedContentSupport();
private static native void nativeSetMetadata(long transactionObj, int key, Parcel data);
+ private static native void nativeSyncInputWindows(long transactionObj);
private final CloseGuard mCloseGuard = CloseGuard.get();
private String mName;
@@ -2109,6 +2110,17 @@ public final class SurfaceControl implements Parcelable {
}
/**
+ * Waits until any changes to input windows have been sent from SurfaceFlinger to
+ * InputFlinger before returning.
+ *
+ * @hide
+ */
+ public Transaction syncInputWindows() {
+ nativeSyncInputWindows(mNativeObject);
+ return this;
+ }
+
+ /**
* Specify how the buffer assosciated with this Surface is mapped in to the
* parent coordinate space. The source frame will be scaled to fit the destination
* frame, after being rotated according to the orientation parameter.
diff --git a/core/jni/android_view_SurfaceControl.cpp b/core/jni/android_view_SurfaceControl.cpp
index 6b8d8b1bb91f..003ee37995af 100644
--- a/core/jni/android_view_SurfaceControl.cpp
+++ b/core/jni/android_view_SurfaceControl.cpp
@@ -406,6 +406,11 @@ static void nativeTransferTouchFocus(JNIEnv* env, jclass clazz, jlong transactio
transaction->transferTouchFocus(fromToken, toToken);
}
+static void nativeSyncInputWindows(JNIEnv* env, jclass clazz, jlong transactionObj) {
+ auto transaction = reinterpret_cast<SurfaceComposerClient::Transaction*>(transactionObj);
+ transaction->syncInputWindows();
+}
+
static void nativeSetMetadata(JNIEnv* env, jclass clazz, jlong transactionObj,
jlong nativeObject, jint id, jobject parcelObj) {
Parcel* parcel = parcelForJavaObject(env, parcelObj);
@@ -1246,7 +1251,9 @@ static const JNINativeMethod sSurfaceControlMethods[] = {
"(Landroid/os/IBinder;JJ)Landroid/hardware/display/DisplayedContentSample;",
(void*)nativeGetDisplayedContentSample },
{"nativeSetGeometry", "(JJLandroid/graphics/Rect;Landroid/graphics/Rect;J)V",
- (void*)nativeSetGeometry }
+ (void*)nativeSetGeometry },
+ {"nativeSyncInputWindows", "(J)V",
+ (void*)nativeSyncInputWindows }
};
int register_android_view_SurfaceControl(JNIEnv* env)