diff options
| author | 2019-02-14 11:00:23 -0800 | |
|---|---|---|
| committer | 2019-02-20 14:09:30 -0800 | |
| commit | 319cd078608cd7964fbdcf7c7fb407de8050ce0d (patch) | |
| tree | 68a16487df0c5c1a16579bd26ae6b3ec8ad18946 | |
| parent | b615f565cbbd599f7b39381b27ad55c61443346c (diff) | |
Add synchronous transaction to wait for setInputWindow to complete (5/n)
Added syncInputWindows method to JNI and SurfaceControl.Transaction
This enables the caller to request SF to wait until input windows have
been synced with InputDispatcher.
Bug: 123041491
Test: builds, runs
Change-Id: I2ddaa3f43eded2fb117cc2850ee7c8a20b2b63ec
| -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 1212df0c397a..5227875f40ce 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; @@ -2105,6 +2106,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) |