livedisplay: Fix endless loop for devices that don't support outdoor
mode. There was a logic mistake that caused _all_ modes to be skipped if outdoor mode isn't supported. In order to avoid such mistakes in the future, also simplify the logic and make it more easily understandable. Change-Id: I5fe8edbb3c4d2dd05fc4b4a7f94ca05d4ecd408b
This commit is contained in:
parent
7cd7f79c75
commit
842344a358
|
@ -235,24 +235,31 @@ public class LiveDisplayService extends SystemService {
|
||||||
next = 0;
|
next = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int nextMode = 0;
|
int nextMode;
|
||||||
|
|
||||||
while (true) {
|
while (true) {
|
||||||
nextMode = Integer.valueOf(mTileValues[next]);
|
nextMode = Integer.valueOf(mTileValues[next]);
|
||||||
// Skip outdoor mode if it's unsupported, and skip the day setting
|
if (nextMode == MODE_OUTDOOR) {
|
||||||
// if it's the same as the off setting
|
// Only accept outdoor mode if it's supported by the hardware
|
||||||
if (((!mConfig.hasFeature(MODE_OUTDOOR) ||
|
if (mConfig.hasFeature(MODE_OUTDOOR)
|
||||||
mConfig.hasFeature(FEATURE_MANAGED_OUTDOOR_MODE)
|
&& !mConfig.hasFeature(FEATURE_MANAGED_OUTDOOR_MODE)) {
|
||||||
&& nextMode == MODE_OUTDOOR)) ||
|
break;
|
||||||
(mCTC.getDayColorTemperature() == mConfig.getDefaultDayTemperature()
|
}
|
||||||
&& nextMode == MODE_DAY)) {
|
} else if (nextMode == MODE_DAY) {
|
||||||
next++;
|
// Skip the day setting if it's the same as the off setting
|
||||||
if (next >= mTileValues.length) {
|
if (mCTC.getDayColorTemperature() != mConfig.getDefaultDayTemperature()) {
|
||||||
next = 0;
|
break;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
// every other mode doesn't have any preconstraints
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// If we come here, we decided to skip the mode
|
||||||
|
next++;
|
||||||
|
if (next >= mTileValues.length) {
|
||||||
|
next = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return nextMode;
|
return nextMode;
|
||||||
|
|
Loading…
Reference in New Issue