summaryrefslogtreecommitdiffstats
path: root/services/core/java
diff options
context:
space:
mode:
authorJeff Brown <jeffbrown@google.com>2014-01-09 02:14:56 +0000
committerAndroid Git Automerger <android-git-automerger@android.com>2014-01-09 02:14:56 +0000
commit7fa44e90ed11cd35764f7f9efa587203c241fb27 (patch)
treefa47a17c522bd7473ffce6ca186ad2cd9c394ecf /services/core/java
parentc619b6e58b5851b050d2b5b4a55ecd8343adf052 (diff)
parentb6d9eb875a0bf1bb655a90c88457689342eb0991 (diff)
downloadframeworks_base-7fa44e90ed11cd35764f7f9efa587203c241fb27.zip
frameworks_base-7fa44e90ed11cd35764f7f9efa587203c241fb27.tar.gz
frameworks_base-7fa44e90ed11cd35764f7f9efa587203c241fb27.tar.bz2
am b6d9eb87: Merge "Add flag to force public virtual display to show own content." into klp-modular-dev
* commit 'b6d9eb875a0bf1bb655a90c88457689342eb0991': Add flag to force public virtual display to show own content.
Diffstat (limited to 'services/core/java')
-rw-r--r--services/core/java/com/android/server/display/DisplayDeviceInfo.java10
-rw-r--r--services/core/java/com/android/server/display/DisplayManagerService.java8
-rw-r--r--services/core/java/com/android/server/display/VirtualDisplayAdapter.java7
3 files changed, 19 insertions, 6 deletions
diff --git a/services/core/java/com/android/server/display/DisplayDeviceInfo.java b/services/core/java/com/android/server/display/DisplayDeviceInfo.java
index 11c5d87..11aecdd 100644
--- a/services/core/java/com/android/server/display/DisplayDeviceInfo.java
+++ b/services/core/java/com/android/server/display/DisplayDeviceInfo.java
@@ -63,6 +63,7 @@ final class DisplayDeviceInfo {
/**
* Flag: Indicates that the display device is owned by a particular application
* and that no other application should be able to interact with it.
+ * Should typically be used together with {@link #FLAG_OWN_CONTENT_ONLY}.
*/
public static final int FLAG_PRIVATE = 1 << 4;
@@ -78,6 +79,12 @@ final class DisplayDeviceInfo {
public static final int FLAG_PRESENTATION = 1 << 6;
/**
+ * Flag: Only show this display's own content; do not mirror
+ * the content of another display.
+ */
+ public static final int FLAG_OWN_CONTENT_ONLY = 1 << 7;
+
+ /**
* Touch attachment: Display does not receive touch.
*/
public static final int TOUCH_NONE = 0;
@@ -297,6 +304,9 @@ final class DisplayDeviceInfo {
if ((flags & FLAG_PRESENTATION) != 0) {
msg.append(", FLAG_PRESENTATION");
}
+ if ((flags & FLAG_OWN_CONTENT_ONLY) != 0) {
+ msg.append(", FLAG_OWN_CONTENT_ONLY");
+ }
return msg.toString();
}
}
diff --git a/services/core/java/com/android/server/display/DisplayManagerService.java b/services/core/java/com/android/server/display/DisplayManagerService.java
index 73040d5..073e24a 100644
--- a/services/core/java/com/android/server/display/DisplayManagerService.java
+++ b/services/core/java/com/android/server/display/DisplayManagerService.java
@@ -1024,13 +1024,13 @@ public final class DisplayManagerService extends IDisplayManager.Stub {
}
private void configureDisplayInTransactionLocked(DisplayDevice device) {
- DisplayDeviceInfo info = device.getDisplayDeviceInfoLocked();
- boolean isPrivate = (info.flags & DisplayDeviceInfo.FLAG_PRIVATE) != 0;
+ final DisplayDeviceInfo info = device.getDisplayDeviceInfoLocked();
+ final boolean ownContent = (info.flags & DisplayDeviceInfo.FLAG_OWN_CONTENT_ONLY) != 0;
// Find the logical display that the display device is showing.
- // Private displays never mirror other displays.
+ // Certain displays only ever show their own content.
LogicalDisplay display = findLogicalDisplayForDeviceLocked(device);
- if (!isPrivate) {
+ if (!ownContent) {
if (display != null && !display.hasContentLocked()) {
// If the display does not have any content of its own, then
// automatically mirror the default logical display contents.
diff --git a/services/core/java/com/android/server/display/VirtualDisplayAdapter.java b/services/core/java/com/android/server/display/VirtualDisplayAdapter.java
index 46d473c..95ca0d2 100644
--- a/services/core/java/com/android/server/display/VirtualDisplayAdapter.java
+++ b/services/core/java/com/android/server/display/VirtualDisplayAdapter.java
@@ -157,8 +157,11 @@ final class VirtualDisplayAdapter extends DisplayAdapter {
mInfo.yDpi = mDensityDpi;
mInfo.flags = 0;
if ((mFlags & DisplayManager.VIRTUAL_DISPLAY_FLAG_PUBLIC) == 0) {
- mInfo.flags |= DisplayDeviceInfo.FLAG_PRIVATE |
- DisplayDeviceInfo.FLAG_NEVER_BLANK;
+ mInfo.flags |= DisplayDeviceInfo.FLAG_PRIVATE
+ | DisplayDeviceInfo.FLAG_NEVER_BLANK
+ | DisplayDeviceInfo.FLAG_OWN_CONTENT_ONLY;
+ } else if ((mFlags & DisplayManager.VIRTUAL_DISPLAY_FLAG_OWN_CONTENT_ONLY) != 0) {
+ mInfo.flags |= DisplayDeviceInfo.FLAG_OWN_CONTENT_ONLY;
}
if ((mFlags & DisplayManager.VIRTUAL_DISPLAY_FLAG_SECURE) != 0) {
mInfo.flags |= DisplayDeviceInfo.FLAG_SECURE;