aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--api/cm_current.txt1
-rw-r--r--cm/lib/main/java/org/cyanogenmod/platform/internal/display/LiveDisplayService.java12
-rw-r--r--sdk/src/java/cyanogenmod/hardware/LiveDisplayConfig.java13
3 files changed, 21 insertions, 5 deletions
diff --git a/api/cm_current.txt b/api/cm_current.txt
index 5c1d080..5fcbbc6 100644
--- a/api/cm_current.txt
+++ b/api/cm_current.txt
@@ -540,6 +540,7 @@ package cyanogenmod.hardware {
method public int getDefaultMode();
method public int getDefaultNightTemperature();
method public boolean hasFeature(int);
+ method public boolean hasModeSupport();
method public boolean isAvailable();
method public void writeToParcel(android.os.Parcel, int);
}
diff --git a/cm/lib/main/java/org/cyanogenmod/platform/internal/display/LiveDisplayService.java b/cm/lib/main/java/org/cyanogenmod/platform/internal/display/LiveDisplayService.java
index e7f9388..a46d10a 100644
--- a/cm/lib/main/java/org/cyanogenmod/platform/internal/display/LiveDisplayService.java
+++ b/cm/lib/main/java/org/cyanogenmod/platform/internal/display/LiveDisplayService.java
@@ -194,12 +194,14 @@ public class LiveDisplayService extends SystemService {
updateDisplayState(mDisplayManager.getDisplay(Display.DEFAULT_DISPLAY).getState());
- mModeObserver = new ModeObserver(mHandler);
- mModeObserver.update();
+ if (mConfig.hasModeSupport()) {
+ mModeObserver = new ModeObserver(mHandler);
+ mModeObserver.update();
- mContext.registerReceiver(mNextModeReceiver,
- new IntentFilter(ACTION_NEXT_MODE));
- publishCustomTile();
+ mContext.registerReceiver(mNextModeReceiver,
+ new IntentFilter(ACTION_NEXT_MODE));
+ publishCustomTile();
+ }
mInitialized = true;
}
diff --git a/sdk/src/java/cyanogenmod/hardware/LiveDisplayConfig.java b/sdk/src/java/cyanogenmod/hardware/LiveDisplayConfig.java
index 0a569d3..9e499ce 100644
--- a/sdk/src/java/cyanogenmod/hardware/LiveDisplayConfig.java
+++ b/sdk/src/java/cyanogenmod/hardware/LiveDisplayConfig.java
@@ -39,6 +39,8 @@ import cyanogenmod.os.Concierge.ParcelInfo;
public class LiveDisplayConfig implements Parcelable {
private final BitSet mCapabilities;
+ private final BitSet mAllModes = new BitSet();
+
private final int mDefaultDayTemperature;
private final int mDefaultNightTemperature;
private final int mDefaultMode;
@@ -54,6 +56,7 @@ public class LiveDisplayConfig implements Parcelable {
boolean defaultCABC, boolean defaultColorEnhancement) {
super();
mCapabilities = (BitSet) capabilities.clone();
+ mAllModes.set(MODE_FIRST, MODE_LAST);
mDefaultMode = defaultMode;
mDefaultDayTemperature = defaultDayTemperature;
mDefaultNightTemperature = defaultNightTemperature;
@@ -91,6 +94,7 @@ public class LiveDisplayConfig implements Parcelable {
// set temps
mCapabilities = BitSet.valueOf(new long[] { capabilities });
+ mAllModes.set(MODE_FIRST, MODE_LAST);
mDefaultMode = defaultMode;
mDefaultDayTemperature = defaultDayTemperature;
mDefaultNightTemperature = defaultNightTemperature;
@@ -163,6 +167,15 @@ public class LiveDisplayConfig implements Parcelable {
}
/**
+ * Checks if LiveDisplay has support for adaptive modes.
+ *
+ * @return true if adaptive modes are available
+ */
+ public boolean hasModeSupport() {
+ return isAvailable() && mCapabilities.intersects(mAllModes);
+ }
+
+ /**
* Gets the default color temperature to use in the daytime. This is typically
* set to 6500K, however this may not be entirely accurate. Use this value for
* resetting controls to the default.