From 0fe32ae50bcbf6d2a281bdc407ce56f3d05632c5 Mon Sep 17 00:00:00 2001 From: Ruchi Kandoi Date: Fri, 11 Jul 2014 10:55:05 -0700 Subject: [PATCH] PowerManager: Adds a call to reduce refresh rate while device is in BatterySaverMode. Adds a binder call to the surface flinger to change the refresh rate while the device is in BatterySaverMode. Change-Id: I9b5fdcc279757ceb4b9917cb0445643b50133a04 --- .../server/power/PowerManagerService.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/services/core/java/com/android/server/power/PowerManagerService.java b/services/core/java/com/android/server/power/PowerManagerService.java index a69dd30bc0dc1..ebad4224199af 100644 --- a/services/core/java/com/android/server/power/PowerManagerService.java +++ b/services/core/java/com/android/server/power/PowerManagerService.java @@ -58,6 +58,8 @@ import android.os.SystemProperties; import android.os.SystemService; import android.os.UserHandle; import android.os.WorkSource; +import android.os.Parcel; +import android.os.ServiceManager; import android.provider.Settings; import android.service.dreams.DreamManagerInternal; import android.util.EventLog; @@ -659,6 +661,7 @@ public final class PowerManagerService extends com.android.server.SystemService if (mLowPowerModeEnabled != lowPowerModeEnabled) { mLowPowerModeEnabled = lowPowerModeEnabled; powerHintInternal(POWER_HINT_LOW_POWER_MODE, lowPowerModeEnabled ? 1 : 0); + setSurfaceFlingerLowPowerMode(lowPowerModeEnabled ? 1 : 0); mLowPowerModeEnabled = lowPowerModeEnabled; BackgroundThread.getHandler().post(new Runnable() { @Override @@ -2094,6 +2097,21 @@ public final class PowerManagerService extends com.android.server.SystemService nativeSendPowerHint(hintId, data); } + private static void setSurfaceFlingerLowPowerMode(int enabled) { + try { + final IBinder flinger = ServiceManager.getService("SurfaceFlinger"); + if (flinger != null) { + final Parcel data = Parcel.obtain(); + data.writeInterfaceToken("android.ui.ISurfaceComposer"); + data.writeInt(enabled); + flinger.transact(1016, data, null, 0); + data.recycle(); + } + } catch (RemoteException ex) { + Slog.e(TAG, "Failed to reduce refresh rate", ex); + } + } + /** * Low-level function turn the device off immediately, without trying * to be clean. Most people should use {@link ShutdownThread} for a clean shutdown.