Loading services/core/java/com/android/server/display/DisplayControl.java 0 → 100644 +55 −0 Original line number Diff line number Diff line /* * Copyright (C) 2022 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.server.display; import android.os.IBinder; import java.util.Objects; /** * Calls into SurfaceFlinger for Display creation and deletion. */ public class DisplayControl { private static native IBinder nativeCreateDisplay(String name, boolean secure); private static native void nativeDestroyDisplay(IBinder displayToken); /** * Create a display in SurfaceFlinger. * * @param name The name of the display * @param secure Whether this display is secure. * @return The token reference for the display in SurfaceFlinger. */ public static IBinder createDisplay(String name, boolean secure) { Objects.requireNonNull(name, "name must not be null"); return nativeCreateDisplay(name, secure); } /** * Destroy a display in SurfaceFlinger. * * @param displayToken The display token for the display to be destroyed. */ public static void destroyDisplay(IBinder displayToken) { if (displayToken == null) { throw new IllegalArgumentException("displayToken must not be null"); } nativeDestroyDisplay(displayToken); } } services/core/java/com/android/server/display/OverlayDisplayAdapter.java +2 −2 Original line number Diff line number Diff line Loading @@ -305,7 +305,7 @@ final class OverlayDisplayAdapter extends DisplayAdapter { mSurface.release(); mSurface = null; } SurfaceControl.destroyDisplay(getDisplayTokenLocked()); DisplayControl.destroyDisplay(getDisplayTokenLocked()); } @Override Loading Loading @@ -460,7 +460,7 @@ final class OverlayDisplayAdapter extends DisplayAdapter { public void onWindowCreated(SurfaceTexture surfaceTexture, float refreshRate, long presentationDeadlineNanos, int state) { synchronized (getSyncRoot()) { IBinder displayToken = SurfaceControl.createDisplay(mName, mFlags.mSecure); IBinder displayToken = DisplayControl.createDisplay(mName, mFlags.mSecure); mDevice = new OverlayDisplayDevice(displayToken, mName, mModes, mActiveMode, DEFAULT_MODE_INDEX, refreshRate, presentationDeadlineNanos, mFlags, state, surfaceTexture, mNumber) { Loading services/core/java/com/android/server/display/VirtualDisplayAdapter.java +2 −3 Original line number Diff line number Diff line Loading @@ -82,8 +82,7 @@ public class VirtualDisplayAdapter extends DisplayAdapter { // Called with SyncRoot lock held. public VirtualDisplayAdapter(DisplayManagerService.SyncRoot syncRoot, Context context, Handler handler, Listener listener) { this(syncRoot, context, handler, listener, (String name, boolean secure) -> SurfaceControl.createDisplay(name, secure)); this(syncRoot, context, handler, listener, DisplayControl::createDisplay); } @VisibleForTesting Loading Loading @@ -296,7 +295,7 @@ public class VirtualDisplayAdapter extends DisplayAdapter { mSurface.release(); mSurface = null; } SurfaceControl.destroyDisplay(getDisplayTokenLocked()); DisplayControl.destroyDisplay(getDisplayTokenLocked()); if (mProjection != null && mMediaProjectionCallback != null) { try { mProjection.unregisterCallback(mMediaProjectionCallback); Loading services/core/java/com/android/server/display/WifiDisplayAdapter.java +2 −2 Original line number Diff line number Diff line Loading @@ -388,7 +388,7 @@ final class WifiDisplayAdapter extends DisplayAdapter { String name = display.getFriendlyDisplayName(); String address = display.getDeviceAddress(); IBinder displayToken = SurfaceControl.createDisplay(name, secure); IBinder displayToken = DisplayControl.createDisplay(name, secure); mDisplayDevice = new WifiDisplayDevice(displayToken, name, width, height, refreshRate, deviceFlags, address, surface); sendDisplayDeviceEventLocked(mDisplayDevice, DISPLAY_DEVICE_EVENT_ADDED); Loading Loading @@ -621,7 +621,7 @@ final class WifiDisplayAdapter extends DisplayAdapter { mSurface.release(); mSurface = null; } SurfaceControl.destroyDisplay(getDisplayTokenLocked()); DisplayControl.destroyDisplay(getDisplayTokenLocked()); } public void setNameLocked(String name) { Loading services/core/jni/Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -37,6 +37,7 @@ cc_library_static { "com_android_server_ConsumerIrService.cpp", "com_android_server_companion_virtual_InputController.cpp", "com_android_server_devicepolicy_CryptoTestHelper.cpp", "com_android_server_display_DisplayControl.cpp", "com_android_server_connectivity_Vpn.cpp", "com_android_server_gpu_GpuService.cpp", "com_android_server_HardwarePropertiesManagerService.cpp", Loading Loading
services/core/java/com/android/server/display/DisplayControl.java 0 → 100644 +55 −0 Original line number Diff line number Diff line /* * Copyright (C) 2022 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.server.display; import android.os.IBinder; import java.util.Objects; /** * Calls into SurfaceFlinger for Display creation and deletion. */ public class DisplayControl { private static native IBinder nativeCreateDisplay(String name, boolean secure); private static native void nativeDestroyDisplay(IBinder displayToken); /** * Create a display in SurfaceFlinger. * * @param name The name of the display * @param secure Whether this display is secure. * @return The token reference for the display in SurfaceFlinger. */ public static IBinder createDisplay(String name, boolean secure) { Objects.requireNonNull(name, "name must not be null"); return nativeCreateDisplay(name, secure); } /** * Destroy a display in SurfaceFlinger. * * @param displayToken The display token for the display to be destroyed. */ public static void destroyDisplay(IBinder displayToken) { if (displayToken == null) { throw new IllegalArgumentException("displayToken must not be null"); } nativeDestroyDisplay(displayToken); } }
services/core/java/com/android/server/display/OverlayDisplayAdapter.java +2 −2 Original line number Diff line number Diff line Loading @@ -305,7 +305,7 @@ final class OverlayDisplayAdapter extends DisplayAdapter { mSurface.release(); mSurface = null; } SurfaceControl.destroyDisplay(getDisplayTokenLocked()); DisplayControl.destroyDisplay(getDisplayTokenLocked()); } @Override Loading Loading @@ -460,7 +460,7 @@ final class OverlayDisplayAdapter extends DisplayAdapter { public void onWindowCreated(SurfaceTexture surfaceTexture, float refreshRate, long presentationDeadlineNanos, int state) { synchronized (getSyncRoot()) { IBinder displayToken = SurfaceControl.createDisplay(mName, mFlags.mSecure); IBinder displayToken = DisplayControl.createDisplay(mName, mFlags.mSecure); mDevice = new OverlayDisplayDevice(displayToken, mName, mModes, mActiveMode, DEFAULT_MODE_INDEX, refreshRate, presentationDeadlineNanos, mFlags, state, surfaceTexture, mNumber) { Loading
services/core/java/com/android/server/display/VirtualDisplayAdapter.java +2 −3 Original line number Diff line number Diff line Loading @@ -82,8 +82,7 @@ public class VirtualDisplayAdapter extends DisplayAdapter { // Called with SyncRoot lock held. public VirtualDisplayAdapter(DisplayManagerService.SyncRoot syncRoot, Context context, Handler handler, Listener listener) { this(syncRoot, context, handler, listener, (String name, boolean secure) -> SurfaceControl.createDisplay(name, secure)); this(syncRoot, context, handler, listener, DisplayControl::createDisplay); } @VisibleForTesting Loading Loading @@ -296,7 +295,7 @@ public class VirtualDisplayAdapter extends DisplayAdapter { mSurface.release(); mSurface = null; } SurfaceControl.destroyDisplay(getDisplayTokenLocked()); DisplayControl.destroyDisplay(getDisplayTokenLocked()); if (mProjection != null && mMediaProjectionCallback != null) { try { mProjection.unregisterCallback(mMediaProjectionCallback); Loading
services/core/java/com/android/server/display/WifiDisplayAdapter.java +2 −2 Original line number Diff line number Diff line Loading @@ -388,7 +388,7 @@ final class WifiDisplayAdapter extends DisplayAdapter { String name = display.getFriendlyDisplayName(); String address = display.getDeviceAddress(); IBinder displayToken = SurfaceControl.createDisplay(name, secure); IBinder displayToken = DisplayControl.createDisplay(name, secure); mDisplayDevice = new WifiDisplayDevice(displayToken, name, width, height, refreshRate, deviceFlags, address, surface); sendDisplayDeviceEventLocked(mDisplayDevice, DISPLAY_DEVICE_EVENT_ADDED); Loading Loading @@ -621,7 +621,7 @@ final class WifiDisplayAdapter extends DisplayAdapter { mSurface.release(); mSurface = null; } SurfaceControl.destroyDisplay(getDisplayTokenLocked()); DisplayControl.destroyDisplay(getDisplayTokenLocked()); } public void setNameLocked(String name) { Loading
services/core/jni/Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -37,6 +37,7 @@ cc_library_static { "com_android_server_ConsumerIrService.cpp", "com_android_server_companion_virtual_InputController.cpp", "com_android_server_devicepolicy_CryptoTestHelper.cpp", "com_android_server_display_DisplayControl.cpp", "com_android_server_connectivity_Vpn.cpp", "com_android_server_gpu_GpuService.cpp", "com_android_server_HardwarePropertiesManagerService.cpp", Loading