diff --git a/core/java/android/view/SurfaceControl.java b/core/java/android/view/SurfaceControl.java index 06851de95f82f..dd33895e7eb52 100644 --- a/core/java/android/view/SurfaceControl.java +++ b/core/java/android/view/SurfaceControl.java @@ -186,8 +186,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, @@ -1619,21 +1619,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 eaec58bee646f..3cd0386214d31 100644 --- a/core/jni/android_view_SurfaceControl.cpp +++ b/core/jni/android_view_SurfaceControl.cpp @@ -1096,10 +1096,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; } @@ -1147,10 +1146,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; } @@ -1997,10 +1995,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 2c2075d33bb91..479b3dde12179 100644 --- a/services/core/java/com/android/server/display/LocalDisplayAdapter.java +++ b/services/core/java/com/android/server/display/LocalDisplayAdapter.java @@ -111,13 +111,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; @@ -1383,8 +1383,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() { @@ -1395,8 +1395,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 d41ac7021077d..40faf53e17372 100644 --- a/services/tests/mockingservicestests/src/com/android/server/display/LocalDisplayAdapterTest.java +++ b/services/tests/mockingservicestests/src/com/android/server/display/LocalDisplayAdapterTest.java @@ -961,9 +961,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 062bde8f080ba..bded8e8a1a229 100644 --- a/services/tests/servicestests/src/com/android/server/display/DisplayManagerServiceTest.java +++ b/services/tests/servicestests/src/com/android/server/display/DisplayManagerServiceTest.java @@ -228,7 +228,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(); @@ -236,7 +236,7 @@ public class DisplayManagerServiceTest { displayMode.width = 100; displayMode.height = 200; dynamicDisplayMode.supportedDisplayModes = new SurfaceControl.DisplayMode[] {displayMode}; - when(mSurfaceControlProxy.getDynamicDisplayInfo(mMockDisplayToken)) + when(mSurfaceControlProxy.getDynamicDisplayInfo(anyLong())) .thenReturn(dynamicDisplayMode); when(mSurfaceControlProxy.getDesiredDisplayModeSpecs(mMockDisplayToken)) .thenReturn(new SurfaceControl.DesiredDisplayModeSpecs());