diff options
| author | 2019-02-21 23:33:44 +0000 | |
|---|---|---|
| committer | 2019-02-21 23:33:44 +0000 | |
| commit | 263a4d08e4d63e8ca93600d125933695119e3c97 (patch) | |
| tree | 56ecb9178452e0d236d4b53079134b475c4facdb | |
| parent | a2c5d1a7f36c53c06d1df8364e3036ea986855a4 (diff) | |
| parent | 319cd078608cd7964fbdcf7c7fb407de8050ce0d (diff) | |
Merge "Add synchronous transaction to wait for setInputWindow to complete (5/n)"
| -rw-r--r-- | core/java/android/view/SurfaceControl.java | 12 | ||||
| -rw-r--r-- | core/jni/android_view_SurfaceControl.cpp | 9 |
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) |