summaryrefslogtreecommitdiff
path: root/services/java/com/android/server/display/VirtualDisplayAdapter.java
diff options
context:
space:
mode:
Diffstat (limited to 'services/java/com/android/server/display/VirtualDisplayAdapter.java')
-rw-r--r--services/java/com/android/server/display/VirtualDisplayAdapter.java26
1 files changed, 20 insertions, 6 deletions
diff --git a/services/java/com/android/server/display/VirtualDisplayAdapter.java b/services/java/com/android/server/display/VirtualDisplayAdapter.java
index 634fba7fcf19..3a71361949fe 100644
--- a/services/java/com/android/server/display/VirtualDisplayAdapter.java
+++ b/services/java/com/android/server/display/VirtualDisplayAdapter.java
@@ -17,6 +17,7 @@
package com.android.server.display;
import android.content.Context;
+import android.hardware.display.DisplayManager;
import android.os.Handler;
import android.os.IBinder;
import android.os.IBinder.DeathRecipient;
@@ -46,12 +47,13 @@ final class VirtualDisplayAdapter extends DisplayAdapter {
super(syncRoot, context, handler, listener, TAG);
}
- public DisplayDevice createPrivateVirtualDisplayLocked(IBinder appToken,
+ public DisplayDevice createVirtualDisplayLocked(IBinder appToken,
int ownerUid, String ownerPackageName,
- String name, int width, int height, int densityDpi, Surface surface) {
- IBinder displayToken = SurfaceControl.createDisplay(name, false /*secure*/);
+ String name, int width, int height, int densityDpi, Surface surface, int flags) {
+ boolean secure = (flags & DisplayManager.VIRTUAL_DISPLAY_FLAG_SECURE) != 0;
+ IBinder displayToken = SurfaceControl.createDisplay(name, secure);
VirtualDisplayDevice device = new VirtualDisplayDevice(displayToken, appToken,
- ownerUid, ownerPackageName, name, width, height, densityDpi, surface);
+ ownerUid, ownerPackageName, name, width, height, densityDpi, surface, flags);
try {
appToken.linkToDeath(device, 0);
@@ -96,6 +98,7 @@ final class VirtualDisplayAdapter extends DisplayAdapter {
private final int mWidth;
private final int mHeight;
private final int mDensityDpi;
+ private final int mFlags;
private boolean mReleased;
private Surface mSurface;
@@ -103,7 +106,7 @@ final class VirtualDisplayAdapter extends DisplayAdapter {
public VirtualDisplayDevice(IBinder displayToken,
IBinder appToken, int ownerUid, String ownerPackageName,
- String name, int width, int height, int densityDpi, Surface surface) {
+ String name, int width, int height, int densityDpi, Surface surface, int flags) {
super(VirtualDisplayAdapter.this, displayToken);
mAppToken = appToken;
mOwnerUid = ownerUid;
@@ -113,6 +116,7 @@ final class VirtualDisplayAdapter extends DisplayAdapter {
mHeight = height;
mDensityDpi = densityDpi;
mSurface = surface;
+ mFlags = flags;
}
@Override
@@ -149,7 +153,17 @@ final class VirtualDisplayAdapter extends DisplayAdapter {
mInfo.densityDpi = mDensityDpi;
mInfo.xDpi = mDensityDpi;
mInfo.yDpi = mDensityDpi;
- mInfo.flags = DisplayDeviceInfo.FLAG_PRIVATE | DisplayDeviceInfo.FLAG_NEVER_BLANK;
+ mInfo.flags = 0;
+ if ((mFlags & DisplayManager.VIRTUAL_DISPLAY_FLAG_PUBLIC) == 0) {
+ mInfo.flags |= DisplayDeviceInfo.FLAG_PRIVATE |
+ DisplayDeviceInfo.FLAG_NEVER_BLANK;
+ }
+ if ((mFlags & DisplayManager.VIRTUAL_DISPLAY_FLAG_SECURE) != 0) {
+ mInfo.flags |= DisplayDeviceInfo.FLAG_SECURE;
+ }
+ if ((mFlags & DisplayManager.VIRTUAL_DISPLAY_FLAG_PRESENTATION) != 0) {
+ mInfo.flags |= DisplayDeviceInfo.FLAG_PRESENTATION;
+ }
mInfo.type = Display.TYPE_VIRTUAL;
mInfo.touch = DisplayDeviceInfo.TOUCH_NONE;
mInfo.ownerUid = mOwnerUid;