Enable per display brightness setting
Pass displayId through from brightnesscontroller to settemporarybrightness on the correct displaypowercontroller. Bug: 175286226 Test: atest frameworks/base/services/tests/servicestests/src/com/android/server/display Test: atest ColorModeControls Change-Id: Ibb65b8c5a70445702b711739551ffb9f727ef450
This commit is contained in:
@@ -854,8 +854,8 @@ public final class DisplayManager {
|
||||
*
|
||||
* @hide Requires signature permission.
|
||||
*/
|
||||
public void setTemporaryBrightness(float brightness) {
|
||||
mGlobal.setTemporaryBrightness(brightness);
|
||||
public void setTemporaryBrightness(int displayId, float brightness) {
|
||||
mGlobal.setTemporaryBrightness(displayId, brightness);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -636,13 +636,13 @@ public final class DisplayManagerGlobal {
|
||||
* Requires the {@link android.Manifest.permission#CONTROL_DISPLAY_BRIGHTNESS} permission.
|
||||
* </p>
|
||||
*
|
||||
* @param brightness The brightness value from 0 to 255.
|
||||
* @param brightness The brightness value from 0.0f to 1.0f.
|
||||
*
|
||||
* @hide Requires signature permission.
|
||||
*/
|
||||
public void setTemporaryBrightness(float brightness) {
|
||||
public void setTemporaryBrightness(int displayId, float brightness) {
|
||||
try {
|
||||
mDm.setTemporaryBrightness(brightness);
|
||||
mDm.setTemporaryBrightness(displayId, brightness);
|
||||
} catch (RemoteException ex) {
|
||||
throw ex.rethrowFromSystemServer();
|
||||
}
|
||||
|
||||
@@ -116,7 +116,7 @@ interface IDisplayManager {
|
||||
boolean isMinimalPostProcessingRequested(int displayId);
|
||||
|
||||
// Temporarily sets the display brightness.
|
||||
void setTemporaryBrightness(float brightness);
|
||||
void setTemporaryBrightness(int displayId, float brightness);
|
||||
|
||||
// Temporarily sets the auto brightness adjustment factor.
|
||||
void setTemporaryAutoBrightnessAdjustment(float adjustment);
|
||||
|
||||
@@ -42,7 +42,8 @@ public class BrightnessLimit extends Activity implements OnClickListener {
|
||||
|
||||
public void onClick(View v) {
|
||||
DisplayManager dm = getSystemService(DisplayManager.class);
|
||||
dm.setTemporaryBrightness(0.0f);
|
||||
final int displayId = getBaseContext().getDisplay().getDisplayId();
|
||||
dm.setTemporaryBrightness(displayId, 0.0f);
|
||||
Settings.System.putInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS, 0);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -79,6 +79,7 @@ public class BrightnessController implements ToggleSlider.Listener {
|
||||
private final float mMaximumBacklightForVr;
|
||||
private final float mDefaultBacklightForVr;
|
||||
|
||||
private final int mDisplayId;
|
||||
private final Context mContext;
|
||||
private final ToggleSlider mControl;
|
||||
private final boolean mAutomaticAvailable;
|
||||
@@ -311,6 +312,7 @@ public class BrightnessController implements ToggleSlider.Listener {
|
||||
};
|
||||
mBrightnessObserver = new BrightnessObserver(mHandler);
|
||||
|
||||
mDisplayId = mContext.getDisplayId();
|
||||
PowerManager pm = context.getSystemService(PowerManager.class);
|
||||
mMinimumBacklight = pm.getBrightnessConstraint(
|
||||
PowerManager.BRIGHTNESS_CONSTRAINT_TYPE_MINIMUM);
|
||||
@@ -420,7 +422,7 @@ public class BrightnessController implements ToggleSlider.Listener {
|
||||
}
|
||||
|
||||
private void setBrightness(float brightness) {
|
||||
mDisplayManager.setTemporaryBrightness(brightness);
|
||||
mDisplayManager.setTemporaryBrightness(mDisplayId, brightness);
|
||||
}
|
||||
|
||||
private void updateVrMode(boolean isEnabled) {
|
||||
|
||||
@@ -2527,14 +2527,14 @@ public final class DisplayManagerService extends SystemService {
|
||||
}
|
||||
|
||||
@Override // Binder call
|
||||
public void setTemporaryBrightness(float brightness) {
|
||||
public void setTemporaryBrightness(int displayId, float brightness) {
|
||||
mContext.enforceCallingOrSelfPermission(
|
||||
Manifest.permission.CONTROL_DISPLAY_BRIGHTNESS,
|
||||
"Permission required to set the display's brightness");
|
||||
final long token = Binder.clearCallingIdentity();
|
||||
try {
|
||||
synchronized (mSyncRoot) {
|
||||
mDisplayPowerControllers.get(Display.DEFAULT_DISPLAY)
|
||||
mDisplayPowerControllers.get(displayId)
|
||||
.setTemporaryBrightness(brightness);
|
||||
}
|
||||
} finally {
|
||||
|
||||
@@ -34,12 +34,14 @@ class ColorModeControls : LinearLayout, WindowObserver {
|
||||
constructor(context: Context) : this(context, null)
|
||||
constructor(context: Context, attrs: AttributeSet?) : super(context, attrs) {
|
||||
displayManager = context.getSystemService(DisplayManager::class.java)!!
|
||||
displayId = context.getDisplayId()
|
||||
}
|
||||
|
||||
private var window: Window? = null
|
||||
private var currentModeDisplay: TextView? = null
|
||||
private val displayManager: DisplayManager
|
||||
private var targetSdrWhitePointIndex = 0
|
||||
private var displayId: Int
|
||||
|
||||
private val whitePoint get() = SDR_WHITE_POINTS[targetSdrWhitePointIndex]
|
||||
|
||||
@@ -107,7 +109,7 @@ class ColorModeControls : LinearLayout, WindowObserver {
|
||||
// Imperfect, but close enough, synchronization by waiting for frame commit to set the value
|
||||
viewTreeObserver.registerFrameCommitCallback {
|
||||
try {
|
||||
displayManager.setTemporaryBrightness(level)
|
||||
displayManager.setTemporaryBrightness(displayId, level)
|
||||
} catch (ex: Exception) {
|
||||
// Ignore a permission denied rejection - it doesn't meaningfully change much
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user