aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteve Kondik <steve@cyngn.com>2015-08-21 16:41:29 -0700
committerSteve Kondik <steve@cyngn.com>2015-08-21 17:54:08 -0700
commit7ae413125139615beead641e2c57801a8994c451 (patch)
tree6a61a24062df6ab360d26053e0dea65000b7fe3d
parent589b201753a6de65abdc4e1feb6737f5dc908efa (diff)
msm8916: Add DisplayModeControl support
Change-Id: I43a60c094823ef73d9cba4edb5183761b2d95f9d
-rw-r--r--cmhw/src/org/cyanogenmod/hardware/DisplayModeControl.java111
-rw-r--r--sepolicy/system_server.te2
2 files changed, 113 insertions, 0 deletions
diff --git a/cmhw/src/org/cyanogenmod/hardware/DisplayModeControl.java b/cmhw/src/org/cyanogenmod/hardware/DisplayModeControl.java
new file mode 100644
index 0000000..800818f
--- /dev/null
+++ b/cmhw/src/org/cyanogenmod/hardware/DisplayModeControl.java
@@ -0,0 +1,111 @@
+/*
+ * Copyright (C) 2015 The CyanogenMod 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 org.cyanogenmod.hardware;
+
+import android.util.Log;
+
+import cyanogenmod.hardware.DisplayMode;
+
+/*
+ * Display Modes API
+ *
+ * A device may implement a list of preset display modes for different
+ * viewing intents, such as movies, photos, or extra vibrance. These
+ * modes may have multiple components such as gamma correction, white
+ * point adjustment, etc, but are activated by a single control point.
+ *
+ * This API provides support for enumerating and selecting the
+ * modes supported by the hardware.
+ */
+
+public class DisplayModeControl {
+
+ private static boolean sNativeLibraryLoaded;
+
+ static {
+ try {
+ System.loadLibrary("jni_livedisplay_qdcm");
+ sNativeLibraryLoaded = true;
+ } catch (Throwable t) {
+ sNativeLibraryLoaded = false;
+ Log.w("CMHW", "Display mode support unavailable.");
+ }
+ }
+
+ private static native boolean native_isSupported();
+ private static native DisplayMode[] native_getDisplayModes();
+ private static native DisplayMode native_getCurrentDisplayMode();
+ private static native DisplayMode native_getDefaultDisplayMode();
+ private static native boolean native_setDisplayMode(DisplayMode mode, boolean makeDefault);
+
+ /*
+ * All HAF classes should export this boolean.
+ * Real implementations must, of course, return true
+ */
+ public static boolean isSupported() {
+ return sNativeLibraryLoaded && native_isSupported();
+ }
+
+ /*
+ * Get the list of available modes. A mode has an integer
+ * identifier and a string name.
+ *
+ * It is the responsibility of the upper layers to
+ * map the name to a human-readable format or perform translation.
+ */
+ public static DisplayMode[] getAvailableModes() {
+ if (!sNativeLibraryLoaded) {
+ return new DisplayMode[0];
+ }
+ return native_getDisplayModes();
+ }
+
+ /*
+ * Get the name of the currently selected mode. This can return
+ * null if no mode is selected.
+ */
+ public static DisplayMode getCurrentMode() {
+ if (!sNativeLibraryLoaded) {
+ return null;
+ }
+ return native_getCurrentDisplayMode();
+ }
+
+ /*
+ * Selects a mode from the list of available modes by it's
+ * string identifier. Returns true on success, false for
+ * failure. It is up to the implementation to determine
+ * if this mode is valid.
+ */
+ public static boolean setMode(DisplayMode mode, boolean makeDefault) {
+ if (!sNativeLibraryLoaded) {
+ return false;
+ }
+ return native_setDisplayMode(mode, makeDefault);
+ }
+
+ /*
+ * Gets the preferred default mode for this device by it's
+ * string identifier. Can return null if there is no default.
+ */
+ public static DisplayMode getDefaultMode() {
+ if (!sNativeLibraryLoaded) {
+ return null;
+ }
+ return native_getDefaultDisplayMode();
+ }
+}
diff --git a/sepolicy/system_server.te b/sepolicy/system_server.te
index f17b695..349fed4 100644
--- a/sepolicy/system_server.te
+++ b/sepolicy/system_server.te
@@ -1,3 +1,5 @@
allow system_server time_daemon:unix_stream_socket connectto;
# CmHardwareService access to Color Calibration
allow system_server display_sysfs:file rw_file_perms;
+allow system_server pps_socket:sock_file rw_file_perms;
+allow system_server mm-pp-daemon:unix_stream_socket connectto;