From be69476bc5f29b84247d4e8eeb30e872782ce730 Mon Sep 17 00:00:00 2001 From: Sakar Khattar Date: Wed, 3 Feb 2021 19:18:05 +0000 Subject: [PATCH] Copy SurfaceControl object for inprocess calls from WindowlessWindowManager to WindowManager Test: Manually tested on device via SurfaceControlViewHost.setView()->WindowlessWindowManager.addToDisplay() Bug: b/171914211 (for original change on rvc-wear-dev) Change-Id: I474949b53c570e01ba678e088a5001618ff0b26e (cherry picked from commit 9eec64f031a1a1992461251ed3451fc48fd59224) --- .../android/view/WindowlessWindowManager.java | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/core/java/android/view/WindowlessWindowManager.java b/core/java/android/view/WindowlessWindowManager.java index 7cc2db1c0dab8..72d403e1f8675 100644 --- a/core/java/android/view/WindowlessWindowManager.java +++ b/core/java/android/view/WindowlessWindowManager.java @@ -149,8 +149,15 @@ public class WindowlessWindowManager implements IWindowSession { if (((attrs.inputFeatures & WindowManager.LayoutParams.INPUT_FEATURE_NO_INPUT_CHANNEL) == 0)) { try { - mRealWm.grantInputChannel(displayId, sc, window, mHostInputToken, attrs.flags, + if(mRealWm instanceof IWindowSession.Stub) { + mRealWm.grantInputChannel(displayId, + new SurfaceControl(sc, "WindowlessWindowManager.addToDisplay"), + window, mHostInputToken, attrs.flags, attrs.privateFlags, attrs.type, + outInputChannel); + } else { + mRealWm.grantInputChannel(displayId, sc, window, mHostInputToken, attrs.flags, attrs.privateFlags, attrs.type, outInputChannel); + } } catch (RemoteException e) { Log.e(TAG, "Failed to grant input to surface: ", e); } @@ -293,8 +300,14 @@ public class WindowlessWindowManager implements IWindowSession { if ((attrChanges & WindowManager.LayoutParams.FLAGS_CHANGED) != 0 && state.mInputChannelToken != null) { try { - mRealWm.updateInputChannel(state.mInputChannelToken, state.mDisplayId, sc, - attrs.flags, attrs.privateFlags, state.mInputRegion); + if(mRealWm instanceof IWindowSession.Stub) { + mRealWm.updateInputChannel(state.mInputChannelToken, state.mDisplayId, + new SurfaceControl(sc, "WindowlessWindowManager.relayout"), + attrs.flags, attrs.privateFlags, state.mInputRegion); + } else { + mRealWm.updateInputChannel(state.mInputChannelToken, state.mDisplayId, sc, + attrs.flags, attrs.privateFlags, state.mInputRegion); + } } catch (RemoteException e) { Log.e(TAG, "Failed to update surface input channel: ", e); }