diff --git a/core/java/android/view/SurfaceControl.java b/core/java/android/view/SurfaceControl.java index 89a0c05e0e3f1..277b90cc04bce 100644 --- a/core/java/android/view/SurfaceControl.java +++ b/core/java/android/view/SurfaceControl.java @@ -187,8 +187,8 @@ public final class SurfaceControl implements Parcelable { int L, int T, int R, int B); private static native void nativeSetDisplaySize(long transactionObj, IBinder displayToken, int width, int height); - private static native StaticDisplayInfo nativeGetStaticDisplayInfo(IBinder displayToken); - private static native DynamicDisplayInfo nativeGetDynamicDisplayInfo(IBinder displayToken); + private static native StaticDisplayInfo nativeGetStaticDisplayInfo(long displayId); + private static native DynamicDisplayInfo nativeGetDynamicDisplayInfo(long displayId); private static native DisplayedContentSamplingAttributes nativeGetDisplayedContentSamplingAttributes(IBinder displayToken); private static native boolean nativeSetDisplayedContentSamplingEnabled(IBinder displayToken, @@ -1627,21 +1627,15 @@ public final class SurfaceControl implements Parcelable { /** * @hide */ - public static StaticDisplayInfo getStaticDisplayInfo(IBinder displayToken) { - if (displayToken == null) { - throw new IllegalArgumentException("displayToken must not be null"); - } - return nativeGetStaticDisplayInfo(displayToken); + public static StaticDisplayInfo getStaticDisplayInfo(long displayId) { + return nativeGetStaticDisplayInfo(displayId); } /** * @hide */ - public static DynamicDisplayInfo getDynamicDisplayInfo(IBinder displayToken) { - if (displayToken == null) { - throw new IllegalArgumentException("displayToken must not be null"); - } - return nativeGetDynamicDisplayInfo(displayToken); + public static DynamicDisplayInfo getDynamicDisplayInfo(long displayId) { + return nativeGetDynamicDisplayInfo(displayId); } /** diff --git a/core/jni/android_view_SurfaceControl.cpp b/core/jni/android_view_SurfaceControl.cpp index 1ed355577a3fa..593482c9deacc 100644 --- a/core/jni/android_view_SurfaceControl.cpp +++ b/core/jni/android_view_SurfaceControl.cpp @@ -1099,10 +1099,9 @@ static jobject convertDeviceProductInfoToJavaObject( connectionToSinkType); } -static jobject nativeGetStaticDisplayInfo(JNIEnv* env, jclass clazz, jobject tokenObj) { +static jobject nativeGetStaticDisplayInfo(JNIEnv* env, jclass clazz, jlong id) { ui::StaticDisplayInfo info; - if (const auto token = ibinderForJavaObject(env, tokenObj); - !token || SurfaceComposerClient::getStaticDisplayInfo(token, &info) != NO_ERROR) { + if (SurfaceComposerClient::getStaticDisplayInfo(id, &info) != NO_ERROR) { return nullptr; } @@ -1160,10 +1159,9 @@ jobject convertHdrCapabilitiesToJavaObject(JNIEnv* env, const HdrCapabilities& c capabilities.getDesiredMinLuminance()); } -static jobject nativeGetDynamicDisplayInfo(JNIEnv* env, jclass clazz, jobject tokenObj) { +static jobject nativeGetDynamicDisplayInfo(JNIEnv* env, jclass clazz, jlong displayId) { ui::DynamicDisplayInfo info; - if (const auto token = ibinderForJavaObject(env, tokenObj); - !token || SurfaceComposerClient::getDynamicDisplayInfo(token, &info) != NO_ERROR) { + if (SurfaceComposerClient::getDynamicDisplayInfoFromId(displayId, &info) != NO_ERROR) { return nullptr; } @@ -2020,10 +2018,10 @@ static const JNINativeMethod sSurfaceControlMethods[] = { {"nativeSetDisplaySize", "(JLandroid/os/IBinder;II)V", (void*)nativeSetDisplaySize }, {"nativeGetStaticDisplayInfo", - "(Landroid/os/IBinder;)Landroid/view/SurfaceControl$StaticDisplayInfo;", + "(J)Landroid/view/SurfaceControl$StaticDisplayInfo;", (void*)nativeGetStaticDisplayInfo }, {"nativeGetDynamicDisplayInfo", - "(Landroid/os/IBinder;)Landroid/view/SurfaceControl$DynamicDisplayInfo;", + "(J)Landroid/view/SurfaceControl$DynamicDisplayInfo;", (void*)nativeGetDynamicDisplayInfo }, {"nativeSetDesiredDisplayModeSpecs", "(Landroid/os/IBinder;Landroid/view/SurfaceControl$DesiredDisplayModeSpecs;)Z", diff --git a/libs/hwui/tests/common/TestContext.cpp b/libs/hwui/tests/common/TestContext.cpp index 0faa8f4f6cc98..fd596d998dfd2 100644 --- a/libs/hwui/tests/common/TestContext.cpp +++ b/libs/hwui/tests/common/TestContext.cpp @@ -31,10 +31,8 @@ const ui::StaticDisplayInfo& getDisplayInfo() { const std::vector ids = SurfaceComposerClient::getPhysicalDisplayIds(); LOG_ALWAYS_FATAL_IF(ids.empty(), "%s: No displays", __FUNCTION__); - const sp token = SurfaceComposerClient::getPhysicalDisplayToken(ids.front()); - LOG_ALWAYS_FATAL_IF(!token, "%s: No internal display", __FUNCTION__); - - const status_t status = SurfaceComposerClient::getStaticDisplayInfo(token, &info); + const status_t status = + SurfaceComposerClient::getStaticDisplayInfo(ids.front().value, &info); LOG_ALWAYS_FATAL_IF(status, "%s: Failed to get display info", __FUNCTION__); #endif return info; diff --git a/services/core/java/com/android/server/display/LocalDisplayAdapter.java b/services/core/java/com/android/server/display/LocalDisplayAdapter.java index ee53b60871436..be5980bdfffd7 100644 --- a/services/core/java/com/android/server/display/LocalDisplayAdapter.java +++ b/services/core/java/com/android/server/display/LocalDisplayAdapter.java @@ -112,13 +112,13 @@ final class LocalDisplayAdapter extends DisplayAdapter { mSurfaceControlProxy.getPhysicalDisplayToken(physicalDisplayId); if (displayToken != null) { SurfaceControl.StaticDisplayInfo staticInfo = - mSurfaceControlProxy.getStaticDisplayInfo(displayToken); + mSurfaceControlProxy.getStaticDisplayInfo(physicalDisplayId); if (staticInfo == null) { Slog.w(TAG, "No valid static info found for display device " + physicalDisplayId); return; } SurfaceControl.DynamicDisplayInfo dynamicInfo = - mSurfaceControlProxy.getDynamicDisplayInfo(displayToken); + mSurfaceControlProxy.getDynamicDisplayInfo(physicalDisplayId); if (dynamicInfo == null) { Slog.w(TAG, "No valid dynamic info found for display device " + physicalDisplayId); return; @@ -1402,8 +1402,8 @@ final class LocalDisplayAdapter extends DisplayAdapter { @VisibleForTesting public static class SurfaceControlProxy { - public SurfaceControl.DynamicDisplayInfo getDynamicDisplayInfo(IBinder token) { - return SurfaceControl.getDynamicDisplayInfo(token); + public SurfaceControl.DynamicDisplayInfo getDynamicDisplayInfo(long displayId) { + return SurfaceControl.getDynamicDisplayInfo(displayId); } public long[] getPhysicalDisplayIds() { @@ -1414,8 +1414,8 @@ final class LocalDisplayAdapter extends DisplayAdapter { return DisplayControl.getPhysicalDisplayToken(physicalDisplayId); } - public SurfaceControl.StaticDisplayInfo getStaticDisplayInfo(IBinder displayToken) { - return SurfaceControl.getStaticDisplayInfo(displayToken); + public SurfaceControl.StaticDisplayInfo getStaticDisplayInfo(long displayId) { + return SurfaceControl.getStaticDisplayInfo(displayId); } public SurfaceControl.DesiredDisplayModeSpecs getDesiredDisplayModeSpecs( diff --git a/services/tests/mockingservicestests/src/com/android/server/display/LocalDisplayAdapterTest.java b/services/tests/mockingservicestests/src/com/android/server/display/LocalDisplayAdapterTest.java index f10597114a5e8..5e5cbdc22a23b 100644 --- a/services/tests/mockingservicestests/src/com/android/server/display/LocalDisplayAdapterTest.java +++ b/services/tests/mockingservicestests/src/com/android/server/display/LocalDisplayAdapterTest.java @@ -1046,9 +1046,9 @@ public class LocalDisplayAdapterTest { mAddresses.add(display.address); when(mSurfaceControlProxy.getPhysicalDisplayToken(display.address.getPhysicalDisplayId())) .thenReturn(display.token); - when(mSurfaceControlProxy.getStaticDisplayInfo(display.token)) + when(mSurfaceControlProxy.getStaticDisplayInfo(display.address.getPhysicalDisplayId())) .thenReturn(display.info); - when(mSurfaceControlProxy.getDynamicDisplayInfo(display.token)) + when(mSurfaceControlProxy.getDynamicDisplayInfo(display.address.getPhysicalDisplayId())) .thenReturn(display.dynamicInfo); when(mSurfaceControlProxy.getDesiredDisplayModeSpecs(display.token)) .thenReturn(display.desiredDisplayModeSpecs); diff --git a/services/tests/servicestests/src/com/android/server/display/DisplayManagerServiceTest.java b/services/tests/servicestests/src/com/android/server/display/DisplayManagerServiceTest.java index ca8e45a79bc4c..f676a3f84c0f0 100644 --- a/services/tests/servicestests/src/com/android/server/display/DisplayManagerServiceTest.java +++ b/services/tests/servicestests/src/com/android/server/display/DisplayManagerServiceTest.java @@ -214,7 +214,7 @@ public class DisplayManagerServiceTest { .thenReturn(mMockDisplayToken); SurfaceControl.StaticDisplayInfo staticDisplayInfo = new SurfaceControl.StaticDisplayInfo(); staticDisplayInfo.isInternal = true; - when(mSurfaceControlProxy.getStaticDisplayInfo(mMockDisplayToken)) + when(mSurfaceControlProxy.getStaticDisplayInfo(anyLong())) .thenReturn(staticDisplayInfo); SurfaceControl.DynamicDisplayInfo dynamicDisplayMode = new SurfaceControl.DynamicDisplayInfo(); @@ -223,7 +223,7 @@ public class DisplayManagerServiceTest { displayMode.height = 200; displayMode.supportedHdrTypes = new int[]{1, 2}; dynamicDisplayMode.supportedDisplayModes = new SurfaceControl.DisplayMode[] {displayMode}; - when(mSurfaceControlProxy.getDynamicDisplayInfo(mMockDisplayToken)) + when(mSurfaceControlProxy.getDynamicDisplayInfo(anyLong())) .thenReturn(dynamicDisplayMode); when(mSurfaceControlProxy.getDesiredDisplayModeSpecs(mMockDisplayToken)) .thenReturn(new SurfaceControl.DesiredDisplayModeSpecs());