frapeti

PowerManagerService.java

Feb 26th, 2013
853
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 232.77 KB | None | 0 0
  1. package com.android.server;
  2.  
  3. import android.app.ActivityManager;
  4. import android.app.ActivityManager.RunningTaskInfo;
  5. import android.app.ActivityManagerNative;
  6. import android.app.AlarmManager;
  7. import android.app.IActivityManager;
  8. import android.app.PendingIntent;
  9. import android.app.admin.DevicePolicyManager;
  10. import android.content.BroadcastReceiver;
  11. import android.content.ComponentName;
  12. import android.content.ContentQueryMap;
  13. import android.content.ContentResolver;
  14. import android.content.ContentValues;
  15. import android.content.Context;
  16. import android.content.Intent;
  17. import android.content.IntentFilter;
  18. import android.content.res.Resources;
  19. import android.database.ContentObserver;
  20. import android.hardware.Sensor;
  21. import android.hardware.SensorEvent;
  22. import android.hardware.SensorEventListener;
  23. import android.hardware.SensorManager;
  24. import android.net.LocalSocket;
  25. import android.net.LocalSocketAddress;
  26. import android.net.LocalSocketAddress.Namespace;
  27. import android.os.Binder;
  28. import android.os.Handler;
  29. import android.os.HandlerThread;
  30. import android.os.IBinder;
  31. import android.os.IBinder.DeathRecipient;
  32. import android.os.IPowerManager.Stub;
  33. import android.os.LocalPowerManager;
  34. import android.os.Message;
  35. import android.os.Process;
  36. import android.os.RemoteException;
  37. import android.os.SystemClock;
  38. import android.os.SystemProperties;
  39. import android.os.WorkSource;
  40. import android.provider.Settings.Secure;
  41. import android.provider.Settings.System;
  42. import android.util.EventLog;
  43. import android.util.Log;
  44. import android.util.Slog;
  45. import android.view.WindowManagerPolicy;
  46. import android.view.WindowManagerPolicy.ScreenOnListener;
  47. import com.android.internal.app.IBatteryStats;
  48. import com.android.server.am.BatteryStatsService;
  49. import com.android.server.pm.ShutdownThread;
  50. import com.sec.android.app.CscFeature;
  51. import com.sec.android.facedetection.FaceDetectionManager;
  52. import com.sec.android.facedetection.SecFace;
  53. import java.io.FileDescriptor;
  54. import java.io.IOException;
  55. import java.io.InputStream;
  56. import java.io.OutputStream;
  57. import java.io.PrintWriter;
  58. import java.util.ArrayList;
  59. import java.util.Collection;
  60. import java.util.HashMap;
  61. import java.util.Iterator;
  62. import java.util.List;
  63. import java.util.Observable;
  64. import java.util.Observer;
  65. import java.util.regex.Matcher;
  66. import java.util.regex.Pattern;
  67.  
  68. public class PowerManagerService extends IPowerManager.Stub
  69.   implements LocalPowerManager, Watchdog.Monitor
  70. {
  71.   private static final String ACTION_AUTO_POWER_OFF = "com.android.server.PowerManagerService.action.AUTO_POWER_OFF";
  72.   private static final String ACTION_BROADCAST_BEFORE_DIM = "com.android.server.PowerManagerService.action.FAILED_TO_DETECT_FACE_BEFORE_DIM";
  73.   private static final String ACTION_PROXIMITY_CP = "android.intent.action.PROXIMITY_CP";
  74.   private static final int ALL_BRIGHT = 15;
  75.   private static final int ALL_LIGHTS_OFF = 0;
  76.   private static final int ANIM_SETTING_OFF = 16;
  77.   private static final int ANIM_SETTING_ON = 1;
  78.   static final int ANIM_STEPS = 10;
  79.   static final int AUTOBRIGHTNESS_ANIM_STEPS = 20;
  80.   static final int AUTODIMNESS_ANIM_STEPS = 1342177;
  81.   private static final int AUTO_POWER_OFF_REQUEST = 0;
  82.   private static final int BATTERY_LOW_BIT = 16;
  83.   private static final int BUTTON_BRIGHT_BIT = 4;
  84.   private static final String CABL_TAG = "PMSCabl";
  85.   private static final String DAEMON_SOCKET = "pps";
  86.   static final boolean DEBUG_SCREEN_ON = false;
  87.   private static final int DEFAULT_SCREEN_BRIGHTNESS = 192;
  88.   private static final int DEFAULT_SCREEN_OFF_TIMEOUT = 15000;
  89.   private static final String EXTRA_PROXIMITY_CP = "cmd";
  90.   private static final int FULL_WAKE_LOCK_ID = 2;
  91.   static final int IMMEDIATE_ANIM_STEPS = 4;
  92.   static final int INITIAL_BUTTON_BRIGHTNESS = 0;
  93.   static final int INITIAL_KEYBOARD_BRIGHTNESS = 0;
  94.   static final int INITIAL_SCREEN_BRIGHTNESS = 255;
  95.   public static final String IS_VISIBLE_WINDOW = "AxT9IME.isVisibleWindow";
  96.   private static final int KEYBOARD_BRIGHT_BIT = 8;
  97.   private static final int LIGHTS_MASK = 14;
  98.   private static final int LIGHT_SENSOR_DELAY = 3000;
  99.   private static final int LIGHT_SENSOR_OFFSET_SCALE = 8;
  100.   private static final int LIGHT_SENSOR_RANGE_EXPANSION = 20;
  101.   private static final int LIGHT_SENSOR_RATE = 1000000;
  102.   private static final int LOCK_MASK = 63;
  103.   private static final boolean LOG_PARTIAL_WL = true;
  104.   private static final boolean LOG_TOUCH_DOWNS = true;
  105.   private static final int LONG_DIM_TIME = 7000;
  106.   private static final int LONG_KEYLIGHT_DELAY = 6000;
  107.   private static final int LOW_BATTERY_THRESHOLD = 5;
  108.   private static final int MAX_CMD_LEN = 100;
  109.   private static final int MEDIUM_KEYLIGHT_DELAY = 15000;
  110.   private static final int NOMINAL_FRAME_TIME_MS = 16;
  111.   static final String PARTIAL_NAME = "PowerManagerService";
  112.   private static final int PARTIAL_WAKE_LOCK_ID = 1;
  113.   static int POWERSAVEMODE_BRIGHTNESS_OFFSET = 0;
  114.   private static final int PROXIMITY_SENSOR_DELAY = 1000;
  115.   private static final float PROXIMITY_THRESHOLD = 5.0F;
  116.   public static final String RESPONSE_AXT9INFO = "ResponseAxT9Info";
  117.   private static final int SAMSUNG_PHONECALL_DIM_DELAY = 4000;
  118.   private static final int SAMSUNG_PHONECALL_KEYLIGHT_DELAY = 6000;
  119.   private static final int SAMSUNG_PHONECALL_SCREENOFF_DELAY = 20000;
  120.   private static final int SCREEN_BRIGHT = 3;
  121.   private static final int SCREEN_BRIGHT_BIT = 2;
  122.   private static final int SCREEN_BUTTON_BRIGHT = 7;
  123.   private static final int SCREEN_DIM = 1;
  124.   private static final int SCREEN_KEYBOARD_BRIGHT = 11;
  125.   private static final int SCREEN_OFF = 0;
  126.   private static final int SCREEN_ON_BIT = 1;
  127.   private static final int SHORT_KEYLIGHT_DELAY_DEFAULT = 6000;
  128.   private static final String TAG = "PowerManagerService";
  129.   private static LocalSocket daemonSock;
  130.   private static InputStream in;
  131.   private static boolean isCabcDaemonConnected = false;
  132.   private static boolean isCabcDaemonOff = false;
  133.   private static final boolean mAutoBrightnessWithTiltEnabled = true;
  134.   private static final boolean mDebugDVFSLock = false;
  135.   private static final boolean mDebugLightAnimation = false;
  136.   private static final boolean mDebugLightSensor = true;
  137.   private static final boolean mDebugProximitySensor = true;
  138.   private static FaceDetectionManager mFaceDetectionManager = null;
  139.   private static final boolean mIsNorthAmericaSalesCode;
  140.   private static final String mSalesCode = SystemProperties.get("ro.csc.sales_code", "NONE").trim().toUpperCase();
  141.   private static final boolean mSpew;
  142.   private static String mStrAutoBrightnessHysteresisLevels;
  143.   private static String mStrAutoBrightnessLevels;
  144.   private static String mStrBrightnessValuePoints;
  145.   private static String mStrHighHysteresisPoints;
  146.   private static String mStrLcdBacklightValues;
  147.   private static String mStrLowHysteresisPoints;
  148.   private static String mStrMinimumExpressiveBrightnessValues;
  149.   private static OutputStream out;
  150.   private final int MY_PID;
  151.   private final int MY_UID;
  152.   private UnsynchronizedDVFSLock mAMOLEDAnimationDVFSLock = null;
  153.   private IActivityManager mActivityService;
  154.   private AlarmManager mAlarmManager;
  155.   boolean mAnimateScreenLights = true;
  156.   private int mAnimationSetting = 16;
  157.   private LightsService.Light mAttentionLight;
  158.   private boolean mAutoBrightessEnabled;
  159.   private int[] mAutoBrightnessHysteresisLevels = null;
  160.   private int[] mAutoBrightnessLevels;
  161.   private Runnable mAutoBrightnessTask = new Runnable()
  162.   {
  163.     public void run()
  164.     {
  165.       synchronized (PowerManagerService.this.mLocks)
  166.       {
  167.         if ((PowerManagerService.this.mLightSensorPendingDecrease) || (PowerManagerService.this.mLightSensorPendingIncrease))
  168.         {
  169.           int i = (int)PowerManagerService.this.mLightSensorPendingValue;
  170.           PowerManagerService.access$9202(PowerManagerService.this, false);
  171.           PowerManagerService.access$9302(PowerManagerService.this, false);
  172.           PowerManagerService.this.lightSensorChangedLocked(i, false);
  173.         }
  174.         return;
  175.       }
  176.     }
  177.   };
  178.   private final int mAutoPowerOffDelay = 1000;
  179.   private UnsynchronizedWakeLock mAutoPowerOffPartialLock;
  180.   private PendingIntent mAutoPowerOffPendingIntent;
  181.   private long mAutoPowerOffTimeMillis = 0L;
  182.   private int mAutoPowerOffTimeoutSetting = -1;
  183.   private BatteryService mBatteryService;
  184.   private IBatteryStats mBatteryStats;
  185.   private boolean mBoolProximityCP = false;
  186.   private boolean mBootCompleted = false;
  187.   private int[] mBrightnessLevels;
  188.   private double[] mBrightnessValueSlope;
  189.   private int[] mBrightnessValues;
  190.   private int[] mBrightnessValuesOrg;
  191.   private final int[] mBroadcastQueue = { -1, -1, -1 };
  192.   private UnsynchronizedWakeLock mBroadcastWakeLock;
  193.   private final int[] mBroadcastWhy = new int[3];
  194.   private int[] mButtonBacklightValues;
  195.   private int mButtonBrightnessOverride = -1;
  196.   private LightsService.Light mButtonLight;
  197.   private int mButtonOffTimeoutSetting;
  198.   private Runnable mCablTask = new Runnable()
  199.   {
  200.     public void run()
  201.     {
  202.       if (PowerManagerService.this.mIsTablet);
  203.     }
  204.   };
  205.   private Context mContext;
  206.   private DVFSLock mCurrentDVFSMaxLock = null;
  207.   private DVFSLock mCurrentDVFSMinLock = null;
  208.   private DevicePolicyManager mDPM = null;
  209.   private final DVFSLockList mDVFSLocks = new DVFSLockList(null);
  210.   private int mDeviceLockTimeoutSetting = -1;
  211.   private int mDimDelay;
  212.   private boolean mDimScreen = true;
  213.   private boolean mDoneBooting = false;
  214.   private boolean mDynamicAutoBrightnessEnabled = false;
  215.   private float mDynamicAutoBrightnessRatio = 0.0F;
  216.   private int mDynamicAutoBrightnessRatioValueSetting = -1;
  217.   private int mDynamicAutoBrightnessValue = 255;
  218.   private boolean mFaceDetected = false;
  219.   private boolean mForceDisableWakeLock = false;
  220.   private Runnable mForceReenableScreenTask = new Runnable()
  221.   {
  222.     public void run()
  223.     {
  224.       PowerManagerService.this.forceReenableScreen();
  225.     }
  226.   };
  227.   private Handler mHandler;
  228.   private HandlerThread mHandlerThread;
  229.   private boolean mHeadless = false;
  230.   private int[] mHighHysteresisLevels;
  231.   private int mHighHysteresisLux = -1;
  232.   private double[] mHighHysteresisSlope;
  233.   private int[] mHighHysteresisValues;
  234.   private int[] mHighHysteresisValuesOrg;
  235.   private int mHighestLightSensorValue = -1;
  236.   private volatile boolean mInitComplete = false;
  237.   private boolean mInitialAnimation = true;
  238.   private boolean mInitialized = false;
  239.   private boolean mIsDeviceLockTime = false;
  240.   private boolean mIsDocked = false;
  241.   boolean mIsFakeOff = false;
  242.   private boolean mIsLockZone = false;
  243.   private boolean mIsPowered = false;
  244.   private int mIsSecuredLock = 0;
  245.   public boolean mIsSipVisible = false;
  246.   private boolean mIsTablet = false;
  247.   private int[] mKeyboardBacklightValues;
  248.   private LightsService.Light mKeyboardLight;
  249.   private boolean mKeyboardVisible = false;
  250.   private int mKeylightDelay;
  251.   private int mLastAutoBrightnessLevel = -1;
  252.   private long mLastEventTime = 0L;
  253.   private long mLastProximityEventTime;
  254.   private long mLastScreenOnTime;
  255.   private long mLastTouchDown;
  256.   private int[] mLcdBacklightValues;
  257.   private LightsService.Light mLcdLight;
  258.   SensorEventListener mLightListener = new SensorEventListener()
  259.   {
  260.     public void onAccuracyChanged(Sensor paramAnonymousSensor, int paramAnonymousInt)
  261.     {
  262.     }
  263.  
  264.     public void onSensorChanged(SensorEvent paramAnonymousSensorEvent)
  265.     {
  266.       synchronized (PowerManagerService.this.mLocks)
  267.       {
  268.         if (PowerManagerService.this.isScreenTurningOffLocked())
  269.         {
  270.           Slog.d("PowerManagerService", "Light onSensorChanged : return, isScreenTurningOffLocked : " + PowerManagerService.this.isScreenTurningOffLocked());
  271.           return;
  272.         }
  273.         PowerManagerService.this.handleLightSensorValue((int)paramAnonymousSensorEvent.values[0], PowerManagerService.this.mWaitingForFirstLightSensor);
  274.         if ((PowerManagerService.this.mWaitingForFirstLightSensor) && (!PowerManagerService.this.mPreparingForScreenOn))
  275.           PowerManagerService.access$10302(PowerManagerService.this, false);
  276.         return;
  277.       }
  278.     }
  279.   };
  280.   private Sensor mLightSensor;
  281.   private float mLightSensorAdjustSetting = 0.0F;
  282.   private int mLightSensorButtonBrightness = -1;
  283.   private boolean mLightSensorEnabled;
  284.   private int mLightSensorKeyboardBrightness = -1;
  285.   private boolean mLightSensorPendingDecrease = false;
  286.   private boolean mLightSensorPendingIncrease = false;
  287.   private float mLightSensorPendingValue = -1.0F;
  288.   private int mLightSensorScreenBrightness = -1;
  289.   private int mLightSensorScreenBrightnessLowerLimit = -1;
  290.   private int mLightSensorScreenBrightnessUpperLimit = -1;
  291.   private float mLightSensorValue = -1.0F;
  292.   private int mLightSensorWarmupTime;
  293.   private LightsService mLightsService;
  294.   private final LockList mLocks = new LockList(null);
  295.   private int[] mLowHysteresisLevels;
  296.   private int mLowHysteresisLux = -1;
  297.   private double[] mLowHysteresisSlope;
  298.   private int[] mLowHysteresisValues;
  299.   private int[] mLowHysteresisValuesOrg;
  300.   private int mLowLimitAtHighestAutoBrightnessLevel = 250;
  301.   private final HashMap<Integer, IBinder> mMapPersistentDVFSLock = new HashMap();
  302.   private final HashMap<Integer, Integer> mMapPreventAutoPowerOff = new HashMap();
  303.   private int mMaxBrightness = -1;
  304.   private int mMaximumScreenOffTimeout = 2147483647;
  305.   private int[] mMinimumExpressiveBrightnessValues;
  306.   private long mNextTimeout;
  307.   private Runnable mNotificationTask = new Runnable()
  308.   {
  309.     public void run()
  310.     {
  311.       while (true)
  312.       {
  313.         int i;
  314.         int j;
  315.         WindowManagerPolicy localWindowManagerPolicy;
  316.         synchronized (PowerManagerService.this.mLocks)
  317.         {
  318.           i = PowerManagerService.this.mBroadcastQueue[0];
  319.           j = PowerManagerService.this.mBroadcastWhy[0];
  320.           int k = 0;
  321.           if (k < 2)
  322.           {
  323.             PowerManagerService.this.mBroadcastQueue[k] = PowerManagerService.this.mBroadcastQueue[(k + 1)];
  324.             PowerManagerService.this.mBroadcastWhy[k] = PowerManagerService.this.mBroadcastWhy[(k + 1)];
  325.             k++;
  326.             continue;
  327.           }
  328.           localWindowManagerPolicy = PowerManagerService.this.getPolicyLocked();
  329.           if ((i == 1) && (!PowerManagerService.this.mPreparingForScreenOn))
  330.           {
  331.             PowerManagerService.access$5802(PowerManagerService.this, true);
  332.             PowerManagerService.this.mBroadcastWakeLock.acquire();
  333.             EventLog.writeEvent(2725, PowerManagerService.this.mBroadcastWakeLock.mCount);
  334.           }
  335.           if (i == 1)
  336.           {
  337.             PowerManagerService.this.mScreenOnStart = SystemClock.uptimeMillis();
  338.             Slog.d("PowerManagerService", "mNotificationTask : on");
  339.             localWindowManagerPolicy.screenTurningOn(PowerManagerService.this.mScreenOnListener);
  340.           }
  341.         }
  342.         try
  343.         {
  344.           ActivityManagerNative.getDefault().wakingUp();
  345.           label197: if ((PowerManagerService.this.mContext != null) && (ActivityManagerNative.isSystemReady()))
  346.           {
  347.             PowerManagerService.this.mContext.sendOrderedBroadcast(PowerManagerService.this.mScreenOnIntent, null, PowerManagerService.this.mScreenOnBroadcastDone, PowerManagerService.this.mHandler, 0, null, null);
  348.             continue;
  349.             localObject1 = finally;
  350.             throw localObject1;
  351.           }
  352.           synchronized (PowerManagerService.this.mLocks)
  353.           {
  354.             Object[] arrayOfObject2 = new Object[2];
  355.             arrayOfObject2[0] = Integer.valueOf(2);
  356.             arrayOfObject2[1] = Integer.valueOf(PowerManagerService.this.mBroadcastWakeLock.mCount);
  357.             EventLog.writeEvent(2727, arrayOfObject2);
  358.             PowerManagerService.this.mBroadcastWakeLock.release();
  359.           }
  360.           if (i == 0)
  361.           {
  362.             PowerManagerService.this.mScreenOffStart = SystemClock.uptimeMillis();
  363.             Slog.d("PowerManagerService", "mNotificationTask : off");
  364.             localWindowManagerPolicy.screenTurnedOff(j);
  365.           }
  366.           try
  367.           {
  368.             ActivityManagerNative.getDefault().goingToSleep();
  369.             label371: if ((PowerManagerService.this.mContext != null) && (ActivityManagerNative.isSystemReady()))
  370.             {
  371.               PowerManagerService.this.mContext.sendOrderedBroadcast(PowerManagerService.this.mScreenOffIntent, null, PowerManagerService.this.mScreenOffBroadcastDone, PowerManagerService.this.mHandler, 0, null, null);
  372.               continue;
  373.             }
  374.             synchronized (PowerManagerService.this.mLocks)
  375.             {
  376.               Object[] arrayOfObject1 = new Object[2];
  377.               arrayOfObject1[0] = Integer.valueOf(3);
  378.               arrayOfObject1[1] = Integer.valueOf(PowerManagerService.this.mBroadcastWakeLock.mCount);
  379.               EventLog.writeEvent(2727, arrayOfObject1);
  380.               PowerManagerService.this.updateLightsLocked(PowerManagerService.this.mPowerState, 1);
  381.               PowerManagerService.this.mBroadcastWakeLock.release();
  382.             }
  383.             return;
  384.           }
  385.           catch (RemoteException localRemoteException1)
  386.           {
  387.             break label371;
  388.           }
  389.         }
  390.         catch (RemoteException localRemoteException2)
  391.         {
  392.           break label197;
  393.         }
  394.       }
  395.     }
  396.   };
  397.   private HashMap<String, ArrayList<Pattern>> mPackagesNeedIS = new HashMap();
  398.   private int mPartialCount = 0;
  399.   private volatile int mPersistentDVFSLocksInfo = 0;
  400.   private volatile boolean mPokeAwakeOnSet = false;
  401.   private final HashMap<IBinder, PokeLock> mPokeLocks = new HashMap();
  402.   private volatile int mPokey = 0;
  403.   private volatile WindowManagerPolicy mPolicy;
  404.   private boolean mPowerIsChanged = false;
  405.   private int mPowerState;
  406.   private boolean mPreparingForScreenOn = false;
  407.   private boolean mPreventScreenOn;
  408.   private UnsynchronizedWakeLock mPreventScreenOnPartialLock;
  409.   private boolean mProxIgnoredBecauseScreenTurnedOff = false;
  410.   SensorEventListener mProximityListener = new SensorEventListener()
  411.   {
  412.     public void onAccuracyChanged(Sensor paramAnonymousSensor, int paramAnonymousInt)
  413.     {
  414.     }
  415.  
  416.     public void onSensorChanged(SensorEvent paramAnonymousSensorEvent)
  417.     {
  418.       long l1 = SystemClock.elapsedRealtime();
  419.       while (true)
  420.       {
  421.         boolean bool1;
  422.         int i;
  423.         int j;
  424.         boolean bool2;
  425.         synchronized (PowerManagerService.this.mLocks)
  426.         {
  427.           float f = paramAnonymousSensorEvent.values[0];
  428.           long l2 = l1 - PowerManagerService.this.mLastProximityEventTime;
  429.           PowerManagerService.access$10002(PowerManagerService.this, l1);
  430.           PowerManagerService.this.mHandler.removeCallbacks(PowerManagerService.this.mProximityTask);
  431.           if ((f < 0.0D) || (f >= 5.0F) || (f >= PowerManagerService.this.mProximitySensor.getMaximumRange()))
  432.             break label271;
  433.           bool1 = true;
  434.           Slog.d("PowerManagerService", "mProximityListener.onSensorChanged active: " + bool1);
  435.           if (l2 < 1000L)
  436.           {
  437.             PowerManagerService localPowerManagerService = PowerManagerService.this;
  438.             if (!bool1)
  439.               break label277;
  440.             i = 1;
  441.             PowerManagerService.access$8902(localPowerManagerService, i);
  442.             PowerManagerService.this.mHandler.postDelayed(PowerManagerService.this.mProximityTask, 1000L - l2);
  443.             j = 1;
  444.             bool2 = PowerManagerService.this.mProximityPartialLock.isHeld();
  445.             if ((!bool2) && (j != 0))
  446.               PowerManagerService.this.mProximityPartialLock.acquire();
  447.           }
  448.           else
  449.           {
  450.             PowerManagerService.access$8902(PowerManagerService.this, -1);
  451.             PowerManagerService.this.proximityChangedLocked(bool1);
  452.             j = 0;
  453.           }
  454.         }
  455.         if ((bool2) && (j == 0))
  456.         {
  457.           PowerManagerService.this.mProximityPartialLock.release();
  458.           continue;
  459.           label271: bool1 = false;
  460.           continue;
  461.           label277: i = 0;
  462.         }
  463.       }
  464.     }
  465.   };
  466.   SensorEventListener mProximityListenerForDataCall = new SensorEventListener()
  467.   {
  468.     public void onAccuracyChanged(Sensor paramAnonymousSensor, int paramAnonymousInt)
  469.     {
  470.     }
  471.  
  472.     public void onSensorChanged(SensorEvent paramAnonymousSensorEvent)
  473.     {
  474.     }
  475.   };
  476.   private UnsynchronizedWakeLock mProximityPartialLock;
  477.   private int mProximityPendingValue = -1;
  478.   private Sensor mProximitySensor;
  479.   private boolean mProximitySensorActive = false;
  480.   private boolean mProximitySensorEnabled = false;
  481.   private Runnable mProximityTask = new Runnable()
  482.   {
  483.     public void run()
  484.     {
  485.       int j;
  486.       for (int i = 1; ; j = 0)
  487.         synchronized (PowerManagerService.this.mLocks)
  488.         {
  489.           if (PowerManagerService.this.mProximityPendingValue != -1)
  490.           {
  491.             PowerManagerService localPowerManagerService = PowerManagerService.this;
  492.             if (PowerManagerService.this.mProximityPendingValue == i)
  493.             {
  494.               localPowerManagerService.proximityChangedLocked(i);
  495.               PowerManagerService.access$8902(PowerManagerService.this, -1);
  496.             }
  497.           }
  498.           else
  499.           {
  500.             if (PowerManagerService.this.mProximityPartialLock.isHeld())
  501.               PowerManagerService.this.mProximityPartialLock.release();
  502.             return;
  503.           }
  504.         }
  505.     }
  506.   };
  507.   private int mProximityWakeLockCount = 0;
  508.   private ScreenBrightnessAnimator mScreenBrightnessAnimator;
  509.   private int mScreenBrightnessDim;
  510.   private Handler mScreenBrightnessHandler;
  511.   private int mScreenBrightnessOverride = -1;
  512.   private int mScreenBrightnessSetting = 192;
  513.   private BroadcastReceiver mScreenOffBroadcastDone = new BroadcastReceiver()
  514.   {
  515.     public void onReceive(Context paramAnonymousContext, Intent paramAnonymousIntent)
  516.     {
  517.       synchronized (PowerManagerService.this.mLocks)
  518.       {
  519.         Object[] arrayOfObject = new Object[3];
  520.         arrayOfObject[0] = Integer.valueOf(0);
  521.         arrayOfObject[1] = Long.valueOf(SystemClock.uptimeMillis() - PowerManagerService.this.mScreenOffStart);
  522.         arrayOfObject[2] = Integer.valueOf(PowerManagerService.this.mBroadcastWakeLock.mCount);
  523.         EventLog.writeEvent(2726, arrayOfObject);
  524.         PowerManagerService.this.mBroadcastWakeLock.release();
  525.         return;
  526.       }
  527.     }
  528.   };
  529.   private int mScreenOffDelay;
  530.   private Handler mScreenOffHandler;
  531.   private Intent mScreenOffIntent;
  532.   private int mScreenOffReason;
  533.   long mScreenOffStart;
  534.   private long mScreenOffTime;
  535.   private int mScreenOffTimeoutSetting;
  536.   private BroadcastReceiver mScreenOnBroadcastDone = new BroadcastReceiver()
  537.   {
  538.     public void onReceive(Context paramAnonymousContext, Intent paramAnonymousIntent)
  539.     {
  540.       synchronized (PowerManagerService.this.mLocks)
  541.       {
  542.         Object[] arrayOfObject = new Object[3];
  543.         arrayOfObject[0] = Integer.valueOf(1);
  544.         arrayOfObject[1] = Long.valueOf(SystemClock.uptimeMillis() - PowerManagerService.this.mScreenOnStart);
  545.         arrayOfObject[2] = Integer.valueOf(PowerManagerService.this.mBroadcastWakeLock.mCount);
  546.         EventLog.writeEvent(2726, arrayOfObject);
  547.         PowerManagerService.this.mBroadcastWakeLock.release();
  548.         return;
  549.       }
  550.     }
  551.   };
  552.   private Intent mScreenOnIntent;
  553.   private WindowManagerPolicy.ScreenOnListener mScreenOnListener = new WindowManagerPolicy.ScreenOnListener()
  554.   {
  555.     public void onScreenOn()
  556.     {
  557.       synchronized (PowerManagerService.this.mLocks)
  558.       {
  559.         if (PowerManagerService.this.mPreparingForScreenOn)
  560.         {
  561.           PowerManagerService.access$5802(PowerManagerService.this, false);
  562.           PowerManagerService.this.updateLightsLocked(PowerManagerService.this.mPowerState, 1);
  563.           Object[] arrayOfObject = new Object[2];
  564.           arrayOfObject[0] = Integer.valueOf(4);
  565.           arrayOfObject[1] = Integer.valueOf(PowerManagerService.this.mBroadcastWakeLock.mCount);
  566.           EventLog.writeEvent(2727, arrayOfObject);
  567.           PowerManagerService.this.mBroadcastWakeLock.release();
  568.         }
  569.         return;
  570.       }
  571.     }
  572.   };
  573.   long mScreenOnStart;
  574.   private SensorManager mSensorManager;
  575.   private ContentQueryMap mSettings;
  576.   private int mShortKeylightDelay = 6000;
  577.   private float mSignedSettingsRatio = 0.0F;
  578.   private BroadcastReceiver mSipIntentReceiver = new BroadcastReceiver()
  579.   {
  580.     public void onReceive(Context paramAnonymousContext, Intent paramAnonymousIntent)
  581.     {
  582.       synchronized (PowerManagerService.this.mLocks)
  583.       {
  584.         if ("ResponseAxT9Info".equals(paramAnonymousIntent.getAction()))
  585.         {
  586.           PowerManagerService.this.mIsSipVisible = paramAnonymousIntent.getBooleanExtra("AxT9IME.isVisibleWindow", false);
  587.           Slog.d("PowerManagerService", "mIsSipVisible : " + PowerManagerService.this.mIsSipVisible);
  588.         }
  589.         return;
  590.       }
  591.     }
  592.   };
  593.   private boolean mSkippedScreenOn = false;
  594.   private int mSmartSleepDelay = 2000;
  595.   private boolean mSmartSleepEnabled = false;
  596.   private Handler mSmartSleepHandler;
  597.   private Intent mSmartSleepIntent;
  598.   private int mSmartSleepNotificationDelay = 6000;
  599.   private int mSmartSleepNotificationOffset = 4000;
  600.   private final SmartSleepNotificationTask mSmartSleepNotificationTask = new SmartSleepNotificationTask(null);
  601.   private final SmartSleepTask mSmartSleepTask = new SmartSleepTask(null);
  602.   private HandlerThread mSmartSleepThread;
  603.   private int mStayOnConditions = 0;
  604.   private UnsynchronizedWakeLock mStayOnWhilePluggedInPartialLock;
  605.   private UnsynchronizedWakeLock mStayOnWhilePluggedInScreenDimLock;
  606.   private boolean mStillNeedSleepNotification;
  607.   private int[] mSupportedFrequency = null;
  608.   private boolean mSystemPowerSaveModeEnabled = false;
  609.   private float mTiltAngle = -1.0F;
  610.   SensorEventListener mTiltListener = new SensorEventListener()
  611.   {
  612.     private static final int ACCELERATING_TIME_CONSTANT_MS = 2000;
  613.     private static final float MAX_DEVIATION_FROM_GRAVITY = 1.5F;
  614.     private static final float MIN_ABS_ACCELERATION = 1.5F;
  615.     private static final float RADIANS_TO_DEGREES = 57.29578F;
  616.     private static final int SAMPLING_PERIOD_MS = 200;
  617.     private int mAccelerationDistrust = 0;
  618.     private int mCnt = 5;
  619.     private int mTiltDistrust = 0;
  620.  
  621.     private void handleAccelerationDistrust(float paramAnonymousFloat)
  622.     {
  623.       if (paramAnonymousFloat > 1.5F)
  624.         if (this.mAccelerationDistrust < 5)
  625.           this.mAccelerationDistrust = (1 + this.mAccelerationDistrust);
  626.       while (this.mAccelerationDistrust <= 0)
  627.         return;
  628.       this.mAccelerationDistrust = (-1 + this.mAccelerationDistrust);
  629.     }
  630.  
  631.     private float lowpassFilter(float paramAnonymousFloat1, float paramAnonymousFloat2, float paramAnonymousFloat3)
  632.     {
  633.       return paramAnonymousFloat3 * paramAnonymousFloat1 + paramAnonymousFloat2 * (1.0F - paramAnonymousFloat3);
  634.     }
  635.  
  636.     private float tiltAngle(float paramAnonymousFloat1, float paramAnonymousFloat2)
  637.     {
  638.       return 57.29578F * (float)Math.asin(paramAnonymousFloat1 / paramAnonymousFloat2);
  639.     }
  640.  
  641.     private float vectorMagnitude(float paramAnonymousFloat1, float paramAnonymousFloat2, float paramAnonymousFloat3)
  642.     {
  643.       return (float)Math.sqrt(paramAnonymousFloat1 * paramAnonymousFloat1 + paramAnonymousFloat2 * paramAnonymousFloat2 + paramAnonymousFloat3 * paramAnonymousFloat3);
  644.     }
  645.  
  646.     public void onAccuracyChanged(Sensor paramAnonymousSensor, int paramAnonymousInt)
  647.     {
  648.     }
  649.  
  650.     public void onSensorChanged(SensorEvent paramAnonymousSensorEvent)
  651.     {
  652.       if (PowerManagerService.this.isScreenTurningOffLocked())
  653.         Slog.d("PowerManagerService", "Tilt onSensorChanged : return, isScreenTurningOffLocked : " + PowerManagerService.this.isScreenTurningOffLocked());
  654.       float f3;
  655.       float f4;
  656.       do
  657.       {
  658.         return;
  659.         float f1 = paramAnonymousSensorEvent.values[0];
  660.         float f2 = paramAnonymousSensorEvent.values[1];
  661.         f3 = paramAnonymousSensorEvent.values[2];
  662.         f4 = vectorMagnitude(f1, f2, f3);
  663.         handleAccelerationDistrust(Math.abs(f4 - 9.80665F));
  664.       }
  665.       while (f4 < 1.5F);
  666.       float f5 = 1.0F;
  667.       if (this.mAccelerationDistrust > 0)
  668.         f5 = 0.09090909F;
  669.       float f6 = tiltAngle(f3, f4);
  670.       PowerManagerService.access$10502(PowerManagerService.this, lowpassFilter(f6, PowerManagerService.this.mTiltAngle, f5));
  671.     }
  672.   };
  673.   private Sensor mTiltSensor;
  674.   private final TimeoutTask mTimeoutTask = new TimeoutTask(null);
  675.   private long mTotalTouchDownTime;
  676.   private int mTouchCycles;
  677.   boolean mUnplugTurnsOnScreen;
  678.   private Runnable mUpdateAutoPowerOffTimeTask = new Runnable()
  679.   {
  680.     public void run()
  681.     {
  682.       if (!ActivityManagerNative.isSystemReady())
  683.         return;
  684.       if (PowerManagerService.this.mAutoPowerOffTimeoutSetting < 0)
  685.       {
  686.         Slog.d("PowerManagerService", "updateAutoPowerOffTime :: mAutoPowerOffTimeoutSetting is not initialized.");
  687.         return;
  688.       }
  689.       if ((PowerManagerService.this.mAutoPowerOffTimeMillis > 0L) && ((PowerManagerService.this.mIsPowered) || (PowerManagerService.this.mAutoPowerOffTimeoutSetting == 0)))
  690.       {
  691.         PowerManagerService.this.mAlarmManager.cancel(PowerManagerService.this.mAutoPowerOffPendingIntent);
  692.         PowerManagerService.access$8602(PowerManagerService.this, 0L);
  693.         Slog.d("PowerManagerService", "updateAutoPowerOffTime :: mAlarmManager is canceled. mIsPowered = " + PowerManagerService.this.mIsPowered + ". mAutoPowerOffTimeoutSetting = " + PowerManagerService.this.mAutoPowerOffTimeoutSetting);
  694.       }
  695.       while (true)
  696.       {
  697.         synchronized (PowerManagerService.this.mLocks)
  698.         {
  699.           if (PowerManagerService.this.mAutoPowerOffPartialLock.isHeld())
  700.             PowerManagerService.this.mAutoPowerOffPartialLock.release();
  701.           return;
  702.         }
  703.         if ((!PowerManagerService.this.mIsPowered) && (PowerManagerService.this.mAutoPowerOffTimeoutSetting > 0))
  704.         {
  705.           PowerManagerService.access$8602(PowerManagerService.this, -1000 + 3600000 * PowerManagerService.this.mAutoPowerOffTimeoutSetting);
  706.           PowerManagerService.this.mAlarmManager.set(2, SystemClock.elapsedRealtime() + PowerManagerService.this.mAutoPowerOffTimeMillis, PowerManagerService.this.mAutoPowerOffPendingIntent);
  707.           Slog.d("PowerManagerService", "updateAutoPowerOffTime :: set the Power Off Time after " + PowerManagerService.this.mAutoPowerOffTimeMillis);
  708.         }
  709.       }
  710.     }
  711.   };
  712.   private boolean mUseSoftwareAutoBrightness;
  713.   private boolean mUserActivityAllowed = true;
  714.   private String mUserActivityReason = null;
  715.   private int mUserControlLevel = 0;
  716.   private int mUserState;
  717.   private int mValueOfVirtualZeroCandela;
  718.   private boolean mWaitingForFirstLightSensor = false;
  719.   private int mWakeLockState;
  720.   private int mWarningSpewThrottleCount;
  721.   private long mWarningSpewThrottleTime;
  722.   private float mWindowScaleAnimation;
  723.  
  724.   static
  725.   {
  726.     if (("VZW".equals(mSalesCode)) || ("ATT".equals(mSalesCode)) || ("TMB".equals(mSalesCode)) || ("SPR".equals(mSalesCode)) || ("VMU".equals(mSalesCode)) || ("MTR".equals(mSalesCode)) || ("USC".equals(mSalesCode)));
  727.     for (boolean bool = true; ; bool = false)
  728.     {
  729.       mIsNorthAmericaSalesCode = bool;
  730.       mStrLowHysteresisPoints = "mLowHysteresisPoints = ";
  731.       mStrBrightnessValuePoints = "mBrightnessValuePoints = ";
  732.       mStrHighHysteresisPoints = "mHighHysteresisPoints = ";
  733.       mStrMinimumExpressiveBrightnessValues = "mMinimumExpressiveBrightnessValues = ";
  734.       mStrAutoBrightnessLevels = "mAutoBrightnessLevels =         ";
  735.       mStrAutoBrightnessHysteresisLevels = "mAutoBrightnessHysteresisLevels = ";
  736.       mStrLcdBacklightValues = "mLcdBacklightValues =               ";
  737.       in = null;
  738.       out = null;
  739.       daemonSock = null;
  740.       isCabcDaemonConnected = false;
  741.       isCabcDaemonOff = false;
  742.       return;
  743.     }
  744.   }
  745.  
  746.   PowerManagerService()
  747.   {
  748.     long l = Binder.clearCallingIdentity();
  749.     this.MY_UID = Process.myUid();
  750.     this.MY_PID = Process.myPid();
  751.     Binder.restoreCallingIdentity(l);
  752.     this.mPowerState = 1;
  753.     this.mUserState = 1;
  754.     this.mIsDeviceLockTime = "DeviceLockTime".equals(CscFeature.getInstance().getString("CscFeature_Setting_ReplaceMenuLockAutoAs"));
  755.     Watchdog.getInstance().addMonitor(this);
  756.     nativeInit();
  757.   }
  758.  
  759.   private static void CabcDaemonConnect()
  760.   {
  761.     Log.i("PMSCabl", "CabcDaemonConnect ()");
  762.     try
  763.     {
  764.       daemonSock = new LocalSocket();
  765.       LocalSocketAddress localLocalSocketAddress = new LocalSocketAddress("pps", LocalSocketAddress.Namespace.RESERVED);
  766.       daemonSock.connect(localLocalSocketAddress);
  767.       in = daemonSock.getInputStream();
  768.       out = daemonSock.getOutputStream();
  769.       if ((in != null) && (out != null))
  770.       {
  771.         isCabcDaemonConnected = true;
  772.         return;
  773.       }
  774.       Log.i("PMSCabl", "CabcDaemonConnect () - error getting streams");
  775.       return;
  776.     }
  777.     catch (IOException localIOException)
  778.     {
  779.       localIOException.printStackTrace();
  780.     }
  781.   }
  782.  
  783.   private static void CablDaemonControl(String paramString)
  784.   {
  785.     if ((out != null) && (in != null))
  786.       try
  787.       {
  788.         Log.i("PMSCabl", "CablDaemonControl (" + paramString + ")");
  789.         byte[] arrayOfByte1 = paramString.getBytes();
  790.         out.write(arrayOfByte1);
  791.         out.flush();
  792.         byte[] arrayOfByte2 = new byte[100];
  793.         String str = new String(arrayOfByte2, 0, in.read(arrayOfByte2, 0, arrayOfByte2.length));
  794.         Log.i("PMSCabl", "CablDaemonControl (" + paramString + "): response = " + str);
  795.         return;
  796.       }
  797.       catch (IOException localIOException)
  798.       {
  799.         localIOException.printStackTrace();
  800.         return;
  801.       }
  802.     Log.e("PMSCabl", "CablDaemonControl: streams null");
  803.     isCabcDaemonConnected = false;
  804.   }
  805.  
  806.   private static String DVFSLockType(int paramInt)
  807.   {
  808.     switch (paramInt)
  809.     {
  810.     default:
  811.       return "???                           ";
  812.     case 1:
  813.       return "DVFS_MIN_LIMIT";
  814.     case 2:
  815.     }
  816.     return "DVFS_MAX_LIMIT";
  817.   }
  818.  
  819.   private static boolean IsCabcDaemonConnected()
  820.   {
  821.     Log.i("PMSCabl", "IsCabcDaemonConnected() = " + isCabcDaemonConnected);
  822.     return isCabcDaemonConnected;
  823.   }
  824.  
  825.   private void acquireDVFSLockLocked(int paramInt1, int paramInt2, IBinder paramIBinder, int paramInt3, int paramInt4, String paramString)
  826.   {
  827.     Slog.d("PowerManagerService", "acquireDVFSLockLocked : type : " + DVFSLockType(paramInt1) + "  frequency : " + paramInt2 + "  uid : " + paramInt3 + "  pid : " + paramInt4 + "  tag : " + paramString);
  828.     int i = this.mDVFSLocks.getIndex(paramIBinder);
  829.     DVFSLock localDVFSLock;
  830.     if (i < 0)
  831.     {
  832.       localDVFSLock = new DVFSLock(paramInt1, paramInt2, paramIBinder, paramString, paramInt3, paramInt4);
  833.       this.mDVFSLocks.addLock(localDVFSLock);
  834.       if (localDVFSLock.type != 2)
  835.         break label188;
  836.       if ((this.mCurrentDVFSMaxLock == null) || (localDVFSLock.frequency < this.mCurrentDVFSMaxLock.frequency))
  837.       {
  838.         nativeAcquireDVFSLock(2, localDVFSLock.frequency);
  839.         this.mCurrentDVFSMaxLock = localDVFSLock;
  840.       }
  841.     }
  842.     while (true)
  843.     {
  844.       localDVFSLock.acqTime = SystemClock.elapsedRealtime();
  845.       return;
  846.       localDVFSLock = (DVFSLock)this.mDVFSLocks.get(i);
  847.       break;
  848.       label188: if ((localDVFSLock.type == 1) && ((this.mCurrentDVFSMinLock == null) || (localDVFSLock.frequency > this.mCurrentDVFSMinLock.frequency)))
  849.       {
  850.         nativeAcquireDVFSLock(1, localDVFSLock.frequency);
  851.         this.mCurrentDVFSMinLock = localDVFSLock;
  852.       }
  853.     }
  854.   }
  855.  
  856.   private int applyButtonState(int paramInt)
  857.   {
  858.     int i = -1;
  859.     if ((paramInt & 0x10) != 0)
  860.       paramInt &= -5;
  861.     do
  862.     {
  863.       return paramInt;
  864.       if (this.mButtonBrightnessOverride >= 0)
  865.         i = this.mButtonBrightnessOverride;
  866.       while (i > 0)
  867.       {
  868.         return paramInt | 0x4;
  869.         if ((this.mLightSensorButtonBrightness >= 0) && (this.mButtonOffTimeoutSetting == -2))
  870.           i = this.mLightSensorButtonBrightness;
  871.         else if (this.mButtonOffTimeoutSetting != -3)
  872.           if (this.mButtonOffTimeoutSetting == -1)
  873.             i = 255;
  874.           else if (this.mButtonOffTimeoutSetting == 0)
  875.             i = 0;
  876.       }
  877.     }
  878.     while (i != 0);
  879.     return paramInt & 0xFFFFFFFB;
  880.   }
  881.  
  882.   private int applyKeyboardState(int paramInt)
  883.   {
  884.     int i = -1;
  885.     if ((paramInt & 0x10) != 0)
  886.       paramInt &= -9;
  887.     do
  888.     {
  889.       return paramInt;
  890.       if (!this.mKeyboardVisible)
  891.         i = 0;
  892.       while (i > 0)
  893.       {
  894.         return paramInt | 0x8;
  895.         if (this.mButtonBrightnessOverride >= 0)
  896.           i = this.mButtonBrightnessOverride;
  897.         else if ((this.mLightSensorKeyboardBrightness >= 0) && (this.mButtonOffTimeoutSetting == -2))
  898.           i = this.mLightSensorKeyboardBrightness;
  899.         else if (this.mButtonOffTimeoutSetting != -3)
  900.           if (this.mButtonOffTimeoutSetting == -1)
  901.             i = 255;
  902.           else if (this.mButtonOffTimeoutSetting == 0)
  903.             i = 0;
  904.       }
  905.     }
  906.     while (i != 0);
  907.     return paramInt & 0xFFFFFFF7;
  908.   }
  909.  
  910.   private boolean batteryIsLow()
  911.   {
  912.     return (!this.mIsPowered) && (this.mBatteryService.getBatteryLevel() <= 5);
  913.   }
  914.  
  915.   private void cancelTimerLocked()
  916.   {
  917.     this.mHandler.removeCallbacks(this.mTimeoutTask);
  918.     if (this.mAutoPowerOffPartialLock.isHeld())
  919.     {
  920.       this.mHandler.removeCallbacks(this.mUpdateAutoPowerOffTimeTask);
  921.       this.mHandler.post(this.mUpdateAutoPowerOffTimeTask);
  922.     }
  923.     this.mTimeoutTask.nextState = -1;
  924.   }
  925.  
  926.   private boolean checkIntelligentSleep()
  927.   {
  928.     Slog.d("PowerManagerService", "checkIntelligentSleep");
  929.     if (mFaceDetectionManager == null)
  930.     {
  931.       Slog.e("PowerManagerService", "checkIntelligentSleep : getFaceDetectionManager()");
  932.       mFaceDetectionManager = FaceDetectionManager.getFaceDetectionManager();
  933.     }
  934.     FaceDetectionManager localFaceDetectionManager = mFaceDetectionManager;
  935.     boolean bool = false;
  936.     if (localFaceDetectionManager != null)
  937.     {
  938.       mFaceDetectionManager.enable();
  939.       SecFace[] arrayOfSecFace = mFaceDetectionManager.getFaceInfo();
  940.       if ((arrayOfSecFace == null) || (arrayOfSecFace.length <= 0))
  941.         break label103;
  942.       Slog.d("PowerManagerService", "checkIntelligentSleep : SecFace length : " + arrayOfSecFace.length);
  943.     }
  944.     label103: for (bool = true; ; bool = false)
  945.     {
  946.       mFaceDetectionManager.disable();
  947.       return bool;
  948.     }
  949.   }
  950.  
  951.   private boolean checkPreventAutoPowerOff()
  952.   {
  953.     boolean bool = false;
  954.     int i = this.mMapPreventAutoPowerOff.size();
  955.     for (int j = 0; j < i; j++)
  956.     {
  957.       int k = ((Integer)this.mMapPreventAutoPowerOff.get(Integer.valueOf(j))).intValue();
  958.       Slog.d("PowerManagerService", "checkPreventAutoPowerOff : eachCount " + j + " : " + k);
  959.       if (k > 0)
  960.         bool = true;
  961.     }
  962.     Slog.d("PowerManagerService", "checkPreventAutoPowerOff : " + bool);
  963.     return bool;
  964.   }
  965.  
  966.   private float convertSettingsRatioToWeightedRatio(int paramInt)
  967.   {
  968.     this.mSignedSettingsRatio = (paramInt - 100);
  969.     if (this.mSignedSettingsRatio != 0.0F)
  970.     {
  971.       if (this.mSignedSettingsRatio > 0.0F);
  972.       for (int i = 1; ; i = -1)
  973.       {
  974.         float f = Math.abs(this.mSignedSettingsRatio / 20.0F);
  975.         this.mUserControlLevel = ((int)(f * i));
  976.         return (float)Math.pow(1.0F + 0.1F * i, f) - 1.0F;
  977.       }
  978.     }
  979.     this.mUserControlLevel = 0;
  980.     return 0.0F;
  981.   }
  982.  
  983.   private void disableProximityLockLocked()
  984.   {
  985.     Slog.d("PowerManagerService", "disableProximityLockLocked");
  986.     long l;
  987.     if (this.mProximitySensorEnabled)
  988.       l = Binder.clearCallingIdentity();
  989.     try
  990.     {
  991.       this.mSensorManager.unregisterListener(this.mProximityListener);
  992.       this.mHandler.removeCallbacks(this.mProximityTask);
  993.       if (this.mProximityPartialLock.isHeld())
  994.         this.mProximityPartialLock.release();
  995.       this.mProximitySensorEnabled = false;
  996.       Binder.restoreCallingIdentity(l);
  997.       if (this.mProximitySensorActive)
  998.       {
  999.         this.mProximitySensorActive = false;
  1000.         Slog.d("PowerManagerService", "disableProximityLockLocked mProxIgnoredBecauseScreenTurnedOff=" + this.mProxIgnoredBecauseScreenTurnedOff);
  1001.         if (!this.mProxIgnoredBecauseScreenTurnedOff)
  1002.         {
  1003.           this.mUserActivityReason = "disableProximityLockLocked";
  1004.           forceUserActivityLocked();
  1005.         }
  1006.       }
  1007.       return;
  1008.     }
  1009.     finally
  1010.     {
  1011.       Binder.restoreCallingIdentity(l);
  1012.     }
  1013.   }
  1014.  
  1015.   private void dockStateChanged(int paramInt)
  1016.   {
  1017.     LockList localLockList = this.mLocks;
  1018.     boolean bool = false;
  1019.     if (paramInt != 0)
  1020.       bool = true;
  1021.     try
  1022.     {
  1023.       this.mIsDocked = bool;
  1024.       if (this.mIsDocked)
  1025.         this.mHighestLightSensorValue = -1;
  1026.       if ((0x1 & this.mPowerState) != 0)
  1027.       {
  1028.         int i = (int)this.mLightSensorValue;
  1029.         this.mLightSensorValue = -1.0F;
  1030.         lightSensorChangedLocked(i, false);
  1031.       }
  1032.       return;
  1033.     }
  1034.     finally
  1035.     {
  1036.     }
  1037.   }
  1038.  
  1039.   private boolean doseTopMostNeedsIntelligentSleep()
  1040.   {
  1041.     Context localContext = this.mContext;
  1042.     List localList = ((ActivityManager)localContext.getSystemService("activity")).getRunningTasks(20);
  1043.     if (localList.isEmpty())
  1044.       return false;
  1045.     ActivityManager.RunningTaskInfo localRunningTaskInfo = (ActivityManager.RunningTaskInfo)localList.get(0);
  1046.     String str1 = localRunningTaskInfo.topActivity.getPackageName();
  1047.     String str2 = localRunningTaskInfo.topActivity.getClassName();
  1048.     if (this.mPackagesNeedIS.get(str1) != null)
  1049.     {
  1050.       Iterator localIterator = ((ArrayList)this.mPackagesNeedIS.get(str1)).iterator();
  1051.       while (localIterator.hasNext())
  1052.         if (((Pattern)localIterator.next()).matcher(str2).matches())
  1053.           return true;
  1054.     }
  1055.     return false;
  1056.   }
  1057.  
  1058.   private static String dumpPowerState(int paramInt)
  1059.   {
  1060.     StringBuilder localStringBuilder1 = new StringBuilder();
  1061.     String str1;
  1062.     String str2;
  1063.     label36: String str3;
  1064.     label55: StringBuilder localStringBuilder4;
  1065.     if ((paramInt & 0x8) != 0)
  1066.     {
  1067.       str1 = "KEYBOARD_BRIGHT_BIT ";
  1068.       StringBuilder localStringBuilder2 = localStringBuilder1.append(str1);
  1069.       if ((paramInt & 0x2) == 0)
  1070.         break label94;
  1071.       str2 = "SCREEN_BRIGHT_BIT ";
  1072.       StringBuilder localStringBuilder3 = localStringBuilder2.append(str2);
  1073.       if ((paramInt & 0x1) == 0)
  1074.         break label102;
  1075.       str3 = "SCREEN_ON_BIT ";
  1076.       localStringBuilder4 = localStringBuilder3.append(str3);
  1077.       if ((paramInt & 0x10) == 0)
  1078.         break label110;
  1079.     }
  1080.     label94: label102: label110: for (String str4 = "BATTERY_LOW_BIT "; ; str4 = "")
  1081.     {
  1082.       return str4;
  1083.       str1 = "";
  1084.       break;
  1085.       str2 = "";
  1086.       break label36;
  1087.       str3 = "";
  1088.       break label55;
  1089.     }
  1090.   }
  1091.  
  1092.   private void enableLightSensorLocked(boolean paramBoolean)
  1093.   {
  1094.     Slog.d("PowerManagerService", "enableLightSensorLocked enable=" + paramBoolean + " mLightSensorEnabled=" + this.mLightSensorEnabled + " mAutoBrightessEnabled=" + this.mAutoBrightessEnabled + " mWaitingForFirstLightSensor=" + this.mWaitingForFirstLightSensor);
  1095.     if (!this.mAutoBrightessEnabled)
  1096.       paramBoolean = false;
  1097.     long l;
  1098.     if ((this.mSensorManager != null) && (this.mLightSensorEnabled != paramBoolean))
  1099.     {
  1100.       this.mLightSensorEnabled = paramBoolean;
  1101.       l = Binder.clearCallingIdentity();
  1102.       if (!paramBoolean)
  1103.         break label187;
  1104.     }
  1105.     try
  1106.     {
  1107.       this.mLastAutoBrightnessLevel = -1;
  1108.       this.mLowHysteresisLux = -1;
  1109.       this.mHighHysteresisLux = -1;
  1110.       this.mHighestLightSensorValue = -1;
  1111.       int i = (int)this.mLightSensorValue;
  1112.       if (i >= 0)
  1113.       {
  1114.         this.mLightSensorValue = -1.0F;
  1115.         handleLightSensorValue(i, true);
  1116.       }
  1117.       this.mSensorManager.registerListener(this.mLightListener, this.mLightSensor, 3);
  1118.       this.mSensorManager.registerListener(this.mTiltListener, this.mTiltSensor, 3);
  1119.       while (true)
  1120.       {
  1121.         return;
  1122.         label187: this.mSensorManager.unregisterListener(this.mLightListener);
  1123.         this.mSensorManager.unregisterListener(this.mTiltListener);
  1124.         this.mHandler.removeCallbacks(this.mAutoBrightnessTask);
  1125.         this.mLightSensorPendingDecrease = false;
  1126.         this.mLightSensorPendingIncrease = false;
  1127.       }
  1128.     }
  1129.     finally
  1130.     {
  1131.       Binder.restoreCallingIdentity(l);
  1132.     }
  1133.   }
  1134.  
  1135.   private void enableProximityLockLocked()
  1136.   {
  1137.     Slog.d("PowerManagerService", "enableProximityLockLocked");
  1138.     long l;
  1139.     if (!this.mProximitySensorEnabled)
  1140.       l = Binder.clearCallingIdentity();
  1141.     try
  1142.     {
  1143.       this.mSensorManager.registerListener(this.mProximityListener, this.mProximitySensor, 3);
  1144.       this.mProximitySensorEnabled = true;
  1145.       return;
  1146.     }
  1147.     finally
  1148.     {
  1149.       Binder.restoreCallingIdentity(l);
  1150.     }
  1151.   }
  1152.  
  1153.   // ERROR //
  1154.   public static void fileWriteInt(String paramString, int paramInt)
  1155.   {
  1156.     // Byte code:
  1157.     //   0: aconst_null
  1158.     //   1: astore_2
  1159.     //   2: ldc 89
  1160.     //   4: new 831 java/lang/StringBuilder
  1161.     //   7: dup
  1162.     //   8: invokespecial 832   java/lang/StringBuilder:<init>  ()V
  1163.     //   11: ldc_w 1445
  1164.     //   14: invokevirtual 838  java/lang/StringBuilder:append  (Ljava/lang/String;)Ljava/lang/StringBuilder;
  1165.     //   17: aload_0
  1166.     //   18: invokevirtual 838  java/lang/StringBuilder:append  (Ljava/lang/String;)Ljava/lang/StringBuilder;
  1167.     //   21: ldc_w 1447
  1168.     //   24: invokevirtual 838  java/lang/StringBuilder:append  (Ljava/lang/String;)Ljava/lang/StringBuilder;
  1169.     //   27: iload_1
  1170.     //   28: invokevirtual 1203 java/lang/StringBuilder:append  (I)Ljava/lang/StringBuilder;
  1171.     //   31: invokevirtual 843  java/lang/StringBuilder:toString    ()Ljava/lang/String;
  1172.     //   34: invokestatic 1448  android/util/Slog:i (Ljava/lang/String;Ljava/lang/String;)I
  1173.     //   37: pop
  1174.     //   38: new 1450   java/io/FileOutputStream
  1175.     //   41: dup
  1176.     //   42: new 1452   java/io/File
  1177.     //   45: dup
  1178.     //   46: aload_0
  1179.     //   47: invokespecial 1454 java/io/File:<init> (Ljava/lang/String;)V
  1180.     //   50: invokespecial 1457 java/io/FileOutputStream:<init> (Ljava/io/File;)V
  1181.     //   53: astore 4
  1182.     //   55: aload 4
  1183.     //   57: iload_1
  1184.     //   58: invokestatic 1459  java/lang/Integer:toString  (I)Ljava/lang/String;
  1185.     //   61: invokevirtual 847  java/lang/String:getBytes   ()[B
  1186.     //   64: invokevirtual 1460 java/io/FileOutputStream:write  ([B)V
  1187.     //   67: aload 4
  1188.     //   69: invokevirtual 1463 java/io/FileOutputStream:close  ()V
  1189.     //   72: return
  1190.     //   73: astore 7
  1191.     //   75: ldc 89
  1192.     //   77: ldc_w 1465
  1193.     //   80: invokestatic 1214  android/util/Slog:d (Ljava/lang/String;Ljava/lang/String;)I
  1194.     //   83: pop
  1195.     //   84: return
  1196.     //   85: astore 5
  1197.     //   87: aload 5
  1198.     //   89: invokevirtual 827  java/io/IOException:printStackTrace ()V
  1199.     //   92: aload_2
  1200.     //   93: invokevirtual 1463 java/io/FileOutputStream:close  ()V
  1201.     //   96: return
  1202.     //   97: astore 6
  1203.     //   99: aload 6
  1204.     //   101: invokevirtual 1466    java/lang/Exception:printStackTrace ()V
  1205.     //   104: return
  1206.     //   105: astore 5
  1207.     //   107: aload 4
  1208.     //   109: astore_2
  1209.     //   110: goto -23 -> 87
  1210.     //
  1211.     // Exception table:
  1212.     //   from   to  target  type
  1213.     //   38 55  73  java/io/FileNotFoundException
  1214.     //   38 55  85  java/io/IOException
  1215.     //   75 84  85  java/io/IOException
  1216.     //   92 96  97  java/lang/Exception
  1217.     //   55 72  105 java/io/IOException
  1218.   }
  1219.  
  1220.   private void forceReenableScreen()
  1221.   {
  1222.     if (!this.mPreventScreenOn)
  1223.     {
  1224.       Slog.w("PowerManagerService", "forceReenableScreen: mPreventScreenOn is false, nothing to do");
  1225.       return;
  1226.     }
  1227.     Slog.w("PowerManagerService", "App called preventScreenOn(true) but didn't promptly reenable the screen! Forcing the screen back on...");
  1228.     preventScreenOn(false);
  1229.   }
  1230.  
  1231.   private void forceUserActivityLocked()
  1232.   {
  1233.     if (isScreenTurningOffLocked())
  1234.     {
  1235.       Slog.w("PowerManagerService", "forceUserActivityLocked  : isScreenTurningOffLocked : cancelAnimation");
  1236.       this.mScreenBrightnessAnimator.cancelAnimation();
  1237.     }
  1238.     boolean bool = this.mUserActivityAllowed;
  1239.     this.mUserActivityAllowed = true;
  1240.     userActivity(SystemClock.uptimeMillis(), false);
  1241.     this.mUserActivityAllowed = bool;
  1242.   }
  1243.  
  1244.   private int getAdjustedDynamicAutoBrightnessValue(int paramInt1, int paramInt2)
  1245.   {
  1246.     float f = (paramInt2 - this.mValueOfVirtualZeroCandela) * this.mDynamicAutoBrightnessRatio;
  1247.     int i = 5 * this.mUserControlLevel;
  1248.     if (((this.mDynamicAutoBrightnessRatio > 0.0F) && (f < i)) || ((this.mDynamicAutoBrightnessRatio < 0.0F) && (f > i)))
  1249.     {
  1250.       Slog.d("PowerManagerService", "getAdjustedDynamicAutoBrightnessValue : offset : " + f + " -> " + i);
  1251.       f = i;
  1252.     }
  1253.     int j = (int)(f + paramInt2);
  1254.     if ((paramInt1 >= 15000) && (j < this.mLowLimitAtHighestAutoBrightnessLevel))
  1255.     {
  1256.       Slog.d("PowerManagerService", "getAdjustedDynamicAutoBrightnessValue : minBrightness : " + j + " -> " + this.mLowLimitAtHighestAutoBrightnessLevel);
  1257.       j = this.mLowLimitAtHighestAutoBrightnessLevel;
  1258.     }
  1259.     int k = this.mBrightnessValuesOrg[0];
  1260.     if (j > 255)
  1261.       j = 255;
  1262.     while (j >= k)
  1263.       return j;
  1264.     return k;
  1265.   }
  1266.  
  1267.   private int getAutoBrightnessValue(int paramInt, int[] paramArrayOfInt)
  1268.   {
  1269.     try
  1270.     {
  1271.       if (this.mDynamicAutoBrightnessEnabled)
  1272.       {
  1273.         if ((this.mLowHysteresisLux < paramInt) && (paramInt <= this.mHighHysteresisLux))
  1274.           Slog.d("PowerManagerService", "getAutoBrightnessValue : in bound ( " + this.mLowHysteresisLux + " < " + paramInt + " <= " + this.mHighHysteresisLux + " )");
  1275.         while (true)
  1276.         {
  1277.           return this.mDynamicAutoBrightnessValue;
  1278.           int i3 = getDynamicAutoBrightnessValue(paramInt);
  1279.           this.mLowHysteresisLux = getDynamicAutoBrightnessLowHysteresis(i3);
  1280.           this.mHighHysteresisLux = getDynamicAutoBrightnessHighHysteresis(i3);
  1281.           this.mDynamicAutoBrightnessValue = getFinalDynamicAutoBrightnessValue(paramInt, i3);
  1282.           Slog.d("PowerManagerService", "getAutoBrightnessValue : mDynamicAutoBrightnessValue = " + this.mDynamicAutoBrightnessValue + "(" + i3 + ")  (( " + 10 * (this.mDynamicAutoBrightnessValue / 10) + "))  (" + this.mUserControlLevel + ")  ( " + this.mLowHysteresisLux + " < " + paramInt + " <= " + this.mHighHysteresisLux + " )");
  1283.         }
  1284.       }
  1285.     }
  1286.     catch (Exception localException)
  1287.     {
  1288.       Slog.e("PowerManagerService", "Values array must be non-empty and must be one element longer than the auto-brightness levels array.  Check config.xml.", localException);
  1289.       return 255;
  1290.     }
  1291.     int i = 0;
  1292.     if ((i >= this.mAutoBrightnessLevels.length) || (paramInt < this.mAutoBrightnessLevels[i]))
  1293.       if (i != -1 + this.mLastAutoBrightnessLevel);
  1294.     for (int j = 0; ; j++)
  1295.       if ((j >= this.mAutoBrightnessHysteresisLevels.length) || (paramInt <= this.mAutoBrightnessHysteresisLevels[j]))
  1296.       {
  1297.         this.mLastAutoBrightnessLevel = j;
  1298.         int k = this.mLastAutoBrightnessLevel;
  1299.         int m = paramArrayOfInt[0];
  1300.         int n = paramArrayOfInt[this.mAutoBrightnessLevels.length];
  1301.         int i1 = 20 + (n - m);
  1302.         float f1 = (10 + (paramArrayOfInt[k] - m)) / i1;
  1303.         float f2;
  1304.         if ((this.mLightSensorAdjustSetting > 0.0F) && (this.mLightSensorAdjustSetting <= 1.0F))
  1305.         {
  1306.           f2 = (float)Math.sqrt(1.0F - this.mLightSensorAdjustSetting);
  1307.           if (f2 <= 1.E-005D)
  1308.             f1 = 1.0F;
  1309.         }
  1310.         int i2;
  1311.         while (true)
  1312.         {
  1313.           i2 = -10 + (int)((f1 + this.mLightSensorAdjustSetting / 8.0F) * i1 + m);
  1314.           if (i2 >= m)
  1315.             break label509;
  1316.           return m;
  1317.           this.mLastAutoBrightnessLevel = i;
  1318.           break;
  1319.           f1 /= f2;
  1320.           continue;
  1321.           if ((this.mLightSensorAdjustSetting < 0.0F) && (this.mLightSensorAdjustSetting >= -1.0F))
  1322.           {
  1323.             double d = Math.sqrt(1.0F + this.mLightSensorAdjustSetting);
  1324.             f1 *= (float)d;
  1325.           }
  1326.         }
  1327.         label509: if (i2 > n)
  1328.           i2 = n;
  1329.         return i2;
  1330.         i++;
  1331.         break;
  1332.       }
  1333.   }
  1334.  
  1335.   private int getDynamicAutoBrightnessHighHysteresis(int paramInt)
  1336.   {
  1337.     for (int i = 1; ; i++)
  1338.       try
  1339.       {
  1340.         if ((i >= this.mHighHysteresisValues.length) || (paramInt < this.mHighHysteresisValues[i]))
  1341.         {
  1342.           if (i >= this.mHighHysteresisLevels.length)
  1343.           {
  1344.             int k = -1 + this.mHighHysteresisLevels.length;
  1345.             return this.mHighHysteresisLevels[k];
  1346.           }
  1347.           if (this.mHighHysteresisSlope[(i - 1)] > 0.0D)
  1348.             return (int)Math.pow(10.0D, this.mHighHysteresisSlope[(i - 1)] * (paramInt - this.mHighHysteresisValues[(i - 1)]) + Math.log10(0.01D + this.mHighHysteresisLevels[(i - 1)]));
  1349.           int j = this.mHighHysteresisLevels[(i - 1)];
  1350.           return j;
  1351.         }
  1352.       }
  1353.       catch (Exception localException)
  1354.       {
  1355.         Slog.e("PowerManagerService", "getDynamicAutoBrightnessHighHysteresis", localException);
  1356.         return 15000;
  1357.       }
  1358.   }
  1359.  
  1360.   private int getDynamicAutoBrightnessLowHysteresis(int paramInt)
  1361.   {
  1362.     for (int i = 1; ; i++)
  1363.       try
  1364.       {
  1365.         if ((i >= this.mLowHysteresisValues.length) || (paramInt < this.mLowHysteresisValues[i]))
  1366.         {
  1367.           if (i >= this.mLowHysteresisLevels.length)
  1368.             return this.mLowHysteresisLevels[(-1 + this.mLowHysteresisLevels.length)];
  1369.           if (this.mLowHysteresisSlope[(i - 1)] > 0.0D)
  1370.             return (int)Math.pow(10.0D, this.mLowHysteresisSlope[(i - 1)] * (paramInt - this.mLowHysteresisValues[(i - 1)]) + Math.log10(0.01D + this.mLowHysteresisLevels[(i - 1)]));
  1371.           int j = this.mLowHysteresisLevels[(i - 1)];
  1372.           return j;
  1373.         }
  1374.       }
  1375.       catch (Exception localException)
  1376.       {
  1377.         Slog.e("PowerManagerService", "getDynamicAutoBrightnessLowHysteresis", localException);
  1378.         return 15000;
  1379.       }
  1380.   }
  1381.  
  1382.   private int getDynamicAutoBrightnessValue(int paramInt)
  1383.   {
  1384.     for (int i = 1; ; i++)
  1385.       while (true)
  1386.       {
  1387.         int j;
  1388.         try
  1389.         {
  1390.           if ((i < this.mBrightnessLevels.length) && (paramInt > this.mBrightnessLevels[i]))
  1391.             break;
  1392.           if (i >= this.mBrightnessValues.length)
  1393.           {
  1394.             j = this.mBrightnessValues[(-1 + this.mBrightnessValues.length)];
  1395.             break label169;
  1396.             sendBrightnessModeBySysfs(paramInt);
  1397.             return j;
  1398.           }
  1399.           else if (this.mBrightnessValueSlope[(i - 1)] > 0.0D)
  1400.           {
  1401.             j = (int)(this.mBrightnessValueSlope[(i - 1)] * (Math.log10(0.01D + paramInt) - Math.log10(0.01D + this.mBrightnessLevels[(i - 1)])) + this.mBrightnessValues[(i - 1)]);
  1402.           }
  1403.           else
  1404.           {
  1405.             j = this.mBrightnessValues[(i - 1)];
  1406.             break label169;
  1407.             if (j >= this.mBrightnessValues[0])
  1408.               continue;
  1409.             j = this.mBrightnessValues[0];
  1410.             continue;
  1411.           }
  1412.         }
  1413.         catch (Exception localException)
  1414.         {
  1415.           Slog.e("PowerManagerService", "getDynamicAutoBrightnessValue", localException);
  1416.           return 255;
  1417.         }
  1418.         label169: if (j > 255)
  1419.           j = 255;
  1420.       }
  1421.   }
  1422.  
  1423.   private int getFinalDynamicAutoBrightnessValue(int paramInt1, int paramInt2)
  1424.   {
  1425.     int i = paramInt2;
  1426.     if (this.mIsTablet)
  1427.       if (paramInt1 == 0)
  1428.       {
  1429.         if (this.mSignedSettingsRatio > -40.0F)
  1430.           break label61;
  1431.         i = this.mMinimumExpressiveBrightnessValues[0];
  1432.       }
  1433.     while (true)
  1434.     {
  1435.       if ((this.mSignedSettingsRatio >= 40.0F) && (i < this.mMinimumExpressiveBrightnessValues[2]))
  1436.         i = this.mMinimumExpressiveBrightnessValues[2];
  1437.       return i;
  1438.       label61: if (this.mSignedSettingsRatio >= 40.0F)
  1439.         i = this.mMinimumExpressiveBrightnessValues[2];
  1440.       else
  1441.         i = this.mMinimumExpressiveBrightnessValues[1];
  1442.     }
  1443.   }
  1444.  
  1445.   private int getPreferredBrightness()
  1446.   {
  1447.     if (this.mScreenBrightnessOverride >= 0)
  1448.       return this.mScreenBrightnessOverride;
  1449.     if ((this.mLightSensorScreenBrightness >= 0) && (this.mUseSoftwareAutoBrightness) && (this.mAutoBrightessEnabled))
  1450.       return this.mLightSensorScreenBrightness;
  1451.     return Math.max(this.mScreenBrightnessSetting, this.mScreenBrightnessDim);
  1452.   }
  1453.  
  1454.   private double getSlope(int paramInt1, int paramInt2, int paramInt3, int paramInt4, boolean paramBoolean)
  1455.   {
  1456.     if ((paramInt1 == paramInt3) || (paramInt2 == paramInt4))
  1457.       return 0.0D;
  1458.     if (paramBoolean)
  1459.       return (Math.log10(0.01D + paramInt3) - Math.log10(0.01D + paramInt1)) / (paramInt4 - paramInt2);
  1460.     return (paramInt4 - paramInt2) / (Math.log10(0.01D + paramInt3) - Math.log10(0.01D + paramInt1));
  1461.   }
  1462.  
  1463.   private void goToSleepLocked(long paramLong, int paramInt)
  1464.   {
  1465.     if (this.mLastEventTime <= paramLong)
  1466.     {
  1467.       if (isScreenOn())
  1468.       {
  1469.         int n = Binder.getCallingPid();
  1470.         int i1 = Binder.getCallingUid();
  1471.         Slog.d("PowerManagerService", "Screen__Off : goToSleepLocked : uid : " + i1 + " pid : " + n + "  reason : " + paramInt);
  1472.       }
  1473.       this.mLastEventTime = paramLong;
  1474.       this.mWakeLockState = 0;
  1475.       int i = this.mLocks.size();
  1476.       int j = 0;
  1477.       int k = 0;
  1478.       int m = 0;
  1479.       if (m < i)
  1480.       {
  1481.         WakeLock localWakeLock = (WakeLock)this.mLocks.get(m);
  1482.         if (isScreenLock(localWakeLock.flags))
  1483.         {
  1484.           if (((0x3F & localWakeLock.flags) != 32) || (paramInt != 4))
  1485.             break label162;
  1486.           k = 1;
  1487.         }
  1488.         while (true)
  1489.         {
  1490.           m++;
  1491.           break;
  1492.           label162: ((WakeLock)this.mLocks.get(m)).activated = false;
  1493.           j++;
  1494.         }
  1495.       }
  1496.       if (k == 0)
  1497.       {
  1498.         this.mProxIgnoredBecauseScreenTurnedOff = true;
  1499.         Slog.d("PowerManagerService", "setting mProxIgnoredBecauseScreenTurnedOff");
  1500.       }
  1501.       EventLog.writeEvent(2724, j);
  1502.       this.mStillNeedSleepNotification = true;
  1503.       this.mUserState = 0;
  1504.       setPowerState(0, false, paramInt);
  1505.       cancelTimerLocked();
  1506.       return;
  1507.     }
  1508.     Slog.e("PowerManagerService", "goToSleepLocked : not excuted : mLastEventTime : " + this.mLastEventTime + "  time : " + paramLong);
  1509.   }
  1510.  
  1511.   private void handleLightSensorValue(int paramInt, boolean paramBoolean)
  1512.   {
  1513.     boolean bool1 = true;
  1514.     long l = SystemClock.elapsedRealtime();
  1515.     boolean bool2 = this.mIsLockZone;
  1516.     if (this.mTiltAngle < 70.0F);
  1517.     for (this.mIsLockZone = bool1; ; this.mIsLockZone = false)
  1518.     {
  1519.       if ((this.mIsLockZone) && (paramInt < this.mLightSensorValue))
  1520.         paramInt = (int)this.mLightSensorValue;
  1521.       if (bool2 != this.mIsLockZone)
  1522.         Slog.d("PowerManagerService", "mIsLockZone =  " + this.mIsLockZone + "   mTiltAngle : " + this.mTiltAngle + " value : " + paramInt);
  1523.       if ((this.mLightSensorValue != -1.0F) && (l >= this.mLastScreenOnTime + this.mLightSensorWarmupTime) && (!this.mWaitingForFirstLightSensor))
  1524.         break;
  1525.       this.mHandler.removeCallbacks(this.mAutoBrightnessTask);
  1526.       this.mLightSensorPendingDecrease = false;
  1527.       this.mLightSensorPendingIncrease = false;
  1528.       lightSensorChangedLocked(paramInt, paramBoolean);
  1529.       return;
  1530.     }
  1531.     if (((paramInt > this.mLightSensorValue) && (this.mLightSensorPendingDecrease)) || ((paramInt < this.mLightSensorValue) && (this.mLightSensorPendingIncrease)) || (paramInt == this.mLightSensorValue) || ((!this.mLightSensorPendingDecrease) && (!this.mLightSensorPendingIncrease)))
  1532.     {
  1533.       this.mHandler.removeCallbacks(this.mAutoBrightnessTask);
  1534.       boolean bool3;
  1535.       if (paramInt < this.mLightSensorValue)
  1536.       {
  1537.         bool3 = bool1;
  1538.         label265: this.mLightSensorPendingDecrease = bool3;
  1539.         if (paramInt <= this.mLightSensorValue)
  1540.           break label328;
  1541.       }
  1542.       while (true)
  1543.       {
  1544.         this.mLightSensorPendingIncrease = bool1;
  1545.         if ((!this.mLightSensorPendingDecrease) && (!this.mLightSensorPendingIncrease))
  1546.           break;
  1547.         this.mLightSensorPendingValue = paramInt;
  1548.         this.mHandler.postDelayed(this.mAutoBrightnessTask, 3000L);
  1549.         return;
  1550.         bool3 = false;
  1551.         break label265;
  1552.         label328: bool1 = false;
  1553.       }
  1554.     }
  1555.     this.mLightSensorPendingValue = paramInt;
  1556.   }
  1557.  
  1558.   // ERROR //
  1559.   private void initSupportedFrequency()
  1560.   {
  1561.     // Byte code:
  1562.     //   0: ldc 89
  1563.     //   2: ldc_w 1663
  1564.     //   5: invokestatic 1214   android/util/Slog:d (Ljava/lang/String;Ljava/lang/String;)I
  1565.     //   8: pop
  1566.     //   9: aload_0
  1567.     //   10: getfield 513   com/android/server/PowerManagerService:mSupportedFrequency  [I
  1568.     //   13: ifnonnull +184 -> 197
  1569.     //   16: new 1665   java/io/BufferedReader
  1570.     //   19: dup
  1571.     //   20: new 1667   java/io/FileReader
  1572.     //   23: dup
  1573.     //   24: ldc_w 1669
  1574.     //   27: invokespecial 1670 java/io/FileReader:<init>   (Ljava/lang/String;)V
  1575.     //   30: invokespecial 1673 java/io/BufferedReader:<init>   (Ljava/io/Reader;)V
  1576.     //   33: astore_2
  1577.     //   34: aload_2
  1578.     //   35: invokevirtual 1674 java/io/BufferedReader:close    ()V
  1579.     //   38: new 1665   java/io/BufferedReader
  1580.     //   41: dup
  1581.     //   42: new 1667   java/io/FileReader
  1582.     //   45: dup
  1583.     //   46: ldc_w 1676
  1584.     //   49: invokespecial 1670 java/io/FileReader:<init>   (Ljava/lang/String;)V
  1585.     //   52: invokespecial 1673 java/io/BufferedReader:<init>   (Ljava/io/Reader;)V
  1586.     //   55: astore 6
  1587.     //   57: aload 6
  1588.     //   59: invokevirtual 1674 java/io/BufferedReader:close    ()V
  1589.     //   62: new 1665   java/io/BufferedReader
  1590.     //   65: dup
  1591.     //   66: new 1667   java/io/FileReader
  1592.     //   69: dup
  1593.     //   70: ldc_w 1678
  1594.     //   73: invokespecial 1670 java/io/FileReader:<init>   (Ljava/lang/String;)V
  1595.     //   76: invokespecial 1673 java/io/BufferedReader:<init>   (Ljava/io/Reader;)V
  1596.     //   79: astore 8
  1597.     //   81: aload 8
  1598.     //   83: invokevirtual 1681 java/io/BufferedReader:readLine ()Ljava/lang/String;
  1599.     //   86: ldc_w 1683
  1600.     //   89: invokevirtual 1687 java/lang/String:split  (Ljava/lang/String;)[Ljava/lang/String;
  1601.     //   92: astore 11
  1602.     //   94: aload_0
  1603.     //   95: aload 11
  1604.     //   97: arraylength
  1605.     //   98: newarray int
  1606.     //   100: putfield 513  com/android/server/PowerManagerService:mSupportedFrequency  [I
  1607.     //   103: iconst_0
  1608.     //   104: istore 12
  1609.     //   106: iload 12
  1610.     //   108: aload 11
  1611.     //   110: arraylength
  1612.     //   111: if_icmpge +114 -> 225
  1613.     //   114: aload_0
  1614.     //   115: getfield 513  com/android/server/PowerManagerService:mSupportedFrequency  [I
  1615.     //   118: iload 12
  1616.     //   120: aload 11
  1617.     //   122: iload 12
  1618.     //   124: aaload
  1619.     //   125: invokestatic 1691 java/lang/Integer:parseInt  (Ljava/lang/String;)I
  1620.     //   128: iastore
  1621.     //   129: ldc 89
  1622.     //   131: new 831   java/lang/StringBuilder
  1623.     //   134: dup
  1624.     //   135: invokespecial 832 java/lang/StringBuilder:<init>  ()V
  1625.     //   138: ldc_w 1693
  1626.     //   141: invokevirtual 838 java/lang/StringBuilder:append  (Ljava/lang/String;)Ljava/lang/StringBuilder;
  1627.     //   144: aload_0
  1628.     //   145: getfield 513  com/android/server/PowerManagerService:mSupportedFrequency  [I
  1629.     //   148: iload 12
  1630.     //   150: iaload
  1631.     //   151: invokevirtual 1203    java/lang/StringBuilder:append  (I)Ljava/lang/StringBuilder;
  1632.     //   154: invokevirtual 843 java/lang/StringBuilder:toString    ()Ljava/lang/String;
  1633.     //   157: invokestatic 1214 android/util/Slog:d (Ljava/lang/String;Ljava/lang/String;)I
  1634.     //   160: pop
  1635.     //   161: iinc 12 1
  1636.     //   164: goto -58 -> 106
  1637.     //   167: astore 5
  1638.     //   169: aload 5
  1639.     //   171: invokevirtual 827 java/io/IOException:printStackTrace ()V
  1640.     //   174: aload_0
  1641.     //   175: aconst_null
  1642.     //   176: putfield 513  com/android/server/PowerManagerService:mSupportedFrequency  [I
  1643.     //   179: goto -141 -> 38
  1644.     //   182: astore_3
  1645.     //   183: ldc 89
  1646.     //   185: ldc_w 1695
  1647.     //   188: invokestatic 1214 android/util/Slog:d (Ljava/lang/String;Ljava/lang/String;)I
  1648.     //   191: pop
  1649.     //   192: aload_0
  1650.     //   193: aconst_null
  1651.     //   194: putfield 513  com/android/server/PowerManagerService:mSupportedFrequency  [I
  1652.     //   197: return
  1653.     //   198: astore 7
  1654.     //   200: aload 7
  1655.     //   202: invokevirtual 827 java/io/IOException:printStackTrace ()V
  1656.     //   205: aload_0
  1657.     //   206: aconst_null
  1658.     //   207: putfield 513  com/android/server/PowerManagerService:mSupportedFrequency  [I
  1659.     //   210: goto -148 -> 62
  1660.     //   213: astore 9
  1661.     //   215: aload 9
  1662.     //   217: invokevirtual 1466    java/lang/Exception:printStackTrace ()V
  1663.     //   220: aload_0
  1664.     //   221: aconst_null
  1665.     //   222: putfield 513  com/android/server/PowerManagerService:mSupportedFrequency  [I
  1666.     //   225: aload 8
  1667.     //   227: invokevirtual 1674    java/io/BufferedReader:close    ()V
  1668.     //   230: return
  1669.     //   231: astore 10
  1670.     //   233: aload 10
  1671.     //   235: invokevirtual 827 java/io/IOException:printStackTrace ()V
  1672.     //   238: aload_0
  1673.     //   239: aconst_null
  1674.     //   240: putfield 513  com/android/server/PowerManagerService:mSupportedFrequency  [I
  1675.     //   243: return
  1676.     //
  1677.     // Exception table:
  1678.     //   from   to  target  type
  1679.     //   34 38  167 java/io/IOException
  1680.     //   16 34  182 java/io/FileNotFoundException
  1681.     //   34 38  182 java/io/FileNotFoundException
  1682.     //   38 57  182 java/io/FileNotFoundException
  1683.     //   57 62  182 java/io/FileNotFoundException
  1684.     //   62 81  182 java/io/FileNotFoundException
  1685.     //   81 103 182 java/io/FileNotFoundException
  1686.     //   106    161 182 java/io/FileNotFoundException
  1687.     //   169    179 182 java/io/FileNotFoundException
  1688.     //   200    210 182 java/io/FileNotFoundException
  1689.     //   215    225 182 java/io/FileNotFoundException
  1690.     //   225    230 182 java/io/FileNotFoundException
  1691.     //   233    243 182 java/io/FileNotFoundException
  1692.     //   57 62  198 java/io/IOException
  1693.     //   81 103 213 java/lang/Exception
  1694.     //   106    161 213 java/lang/Exception
  1695.     //   225    230 231 java/io/IOException
  1696.   }
  1697.  
  1698.   private boolean isScreenLock(int paramInt)
  1699.   {
  1700.     int i = paramInt & 0x3F;
  1701.     return (i == 26) || (i == 10) || (i == 6) || (i == 32);
  1702.   }
  1703.  
  1704.   private boolean isScreenTurningOffLocked()
  1705.   {
  1706.     return (this.mScreenBrightnessAnimator.isAnimating()) && (this.mScreenBrightnessAnimator.endValue == 0) && ((0x2 & this.mScreenBrightnessAnimator.currentMask) != 0);
  1707.   }
  1708.  
  1709.   private boolean isTablet()
  1710.   {
  1711.     String str = SystemProperties.get("ro.build.characteristics");
  1712.     return (str != null) && (str.contains("tablet"));
  1713.   }
  1714.  
  1715.   private void lightSensorChangedLocked(int paramInt, boolean paramBoolean)
  1716.   {
  1717.     Slog.d("PowerManagerService", "lightSensorChangedLocked value=" + paramInt + " immediate=" + paramBoolean);
  1718.     if ((0x1 & this.mPowerState) == 0);
  1719.     int i;
  1720.     int k;
  1721.     int m;
  1722.     do
  1723.     {
  1724.       do
  1725.       {
  1726.         Slog.d("PowerManagerService", "dropping lightSensorChangedLocked because screen is off");
  1727.         do
  1728.           return;
  1729.         while (this.mLightSensorValue == paramInt);
  1730.         this.mLightSensorValue = paramInt;
  1731.       }
  1732.       while ((0x10 & this.mPowerState) != 0);
  1733.       i = getAutoBrightnessValue(paramInt, this.mLcdBacklightValues);
  1734.       int j = getAutoBrightnessValue(paramInt, this.mButtonBacklightValues);
  1735.       if (this.mKeyboardVisible);
  1736.       for (k = getAutoBrightnessValue(paramInt, this.mKeyboardBacklightValues); ; k = 0)
  1737.       {
  1738.         if ((this.mLightSensorScreenBrightnessUpperLimit >= 0) && (i > this.mLightSensorScreenBrightnessUpperLimit))
  1739.         {
  1740.           i = this.mLightSensorScreenBrightnessUpperLimit;
  1741.           Slog.d("PowerManagerService", "lightSensorChangedLocked : lcdValue is changed to " + i + " because of UpperLimit");
  1742.         }
  1743.         if ((this.mLightSensorScreenBrightnessLowerLimit >= 0) && (i < this.mLightSensorScreenBrightnessLowerLimit))
  1744.         {
  1745.           i = this.mLightSensorScreenBrightnessLowerLimit;
  1746.           Slog.d("PowerManagerService", "lightSensorChangedLocked : lcdValue is changed to " + i + " because of LowerLimit");
  1747.         }
  1748.         this.mLightSensorScreenBrightness = i;
  1749.         this.mLightSensorButtonBrightness = j;
  1750.         this.mLightSensorKeyboardBrightness = k;
  1751.         Slog.d("PowerManagerService", "lcdValue " + i);
  1752.         Slog.d("PowerManagerService", "buttonValue " + j);
  1753.         Slog.d("PowerManagerService", "keyboardValue " + k);
  1754.         if ((0x2 & this.mPowerState) != 0)
  1755.           break;
  1756.         Slog.d("PowerManagerService", "dropping lightSensorChangedLocked because screen is off");
  1757.         return;
  1758.       }
  1759.       if ((this.mAutoBrightessEnabled) && (this.mScreenBrightnessOverride < 0))
  1760.       {
  1761.         if (this.mSystemPowerSaveModeEnabled)
  1762.         {
  1763.           int n = i - POWERSAVEMODE_BRIGHTNESS_OFFSET;
  1764.           if (i > 0)
  1765.           {
  1766.             i = Math.max(n, 10);
  1767.             Slog.d("PowerManagerService", "lightSensorChangedLocked : mSystemPowerSaveModeEnabled:: lcdValue:" + i);
  1768.           }
  1769.         }
  1770.         if ((this.mMaxBrightness >= 0) && (i > this.mMaxBrightness))
  1771.         {
  1772.           i = this.mMaxBrightness;
  1773.           Slog.d("PowerManagerService", "lightSensorChangedLocked : brightness is changed to " + i + " because of temperature");
  1774.         }
  1775.         if ((!this.mSkippedScreenOn) && (!this.mInitialAnimation))
  1776.         {
  1777.           if (!paramBoolean)
  1778.             break;
  1779.           m = 4;
  1780.           this.mScreenBrightnessAnimator.animateTo(i, paramInt, 2, m * 16);
  1781.         }
  1782.       }
  1783.       if ((this.mButtonOffTimeoutSetting == -2) && (this.mButtonBrightnessOverride < 0))
  1784.       {
  1785.         Slog.d("PowerManagerService", "lightSensorChangedLocked : mButtonLight : " + j);
  1786.         this.mButtonLight.setBrightness(j);
  1787.       }
  1788.     }
  1789.     while (((this.mButtonOffTimeoutSetting != -2) || (this.mButtonBrightnessOverride >= 0)) && (this.mKeyboardVisible));
  1790.     Slog.d("PowerManagerService", "lightSensorChangedLocked : mKeyboardLight : " + k);
  1791.     this.mKeyboardLight.setBrightness(k);
  1792.     return;
  1793.     while (true)
  1794.     {
  1795.       synchronized (this.mScreenBrightnessAnimator)
  1796.       {
  1797.         if (this.mScreenBrightnessAnimator.currentValue <= i)
  1798.           m = 20;
  1799.       }
  1800.       m = 20;
  1801.     }
  1802.   }
  1803.  
  1804.   private static String lockType(int paramInt)
  1805.   {
  1806.     switch (paramInt)
  1807.     {
  1808.     default:
  1809.       return "???                           ";
  1810.     case 26:
  1811.       return "FULL_WAKE_LOCK                ";
  1812.     case 10:
  1813.       return "SCREEN_BRIGHT_WAKE_LOCK       ";
  1814.     case 6:
  1815.       return "SCREEN_DIM_WAKE_LOCK          ";
  1816.     case 1:
  1817.       return "PARTIAL_WAKE_LOCK             ";
  1818.     case 32:
  1819.     }
  1820.     return "PROXIMITY_SCREEN_OFF_WAKE_LOCK";
  1821.   }
  1822.  
  1823.   public static void lowLevelReboot(String paramString)
  1824.     throws IOException
  1825.   {
  1826.     nativeReboot(paramString);
  1827.   }
  1828.  
  1829.   public static void lowLevelShutdown()
  1830.   {
  1831.     nativeShutdown();
  1832.   }
  1833.  
  1834.   private static native int nativeAcquireDVFSLock(int paramInt1, int paramInt2);
  1835.  
  1836.   private static native void nativeAcquireWakeLock(int paramInt, String paramString);
  1837.  
  1838.   private static native int nativeFakeOff();
  1839.  
  1840.   private native void nativeInit();
  1841.  
  1842.   private static native void nativeReboot(String paramString)
  1843.     throws IOException;
  1844.  
  1845.   private static native int nativeReleaseDVFSLock(int paramInt);
  1846.  
  1847.   private static native void nativeReleaseWakeLock(String paramString);
  1848.  
  1849.   private native void nativeSetPowerState(boolean paramBoolean1, boolean paramBoolean2);
  1850.  
  1851.   private static native int nativeSetScreenState(boolean paramBoolean);
  1852.  
  1853.   private static native void nativeShutdown();
  1854.  
  1855.   private native void nativeStartSurfaceFlingerAnimation(int paramInt);
  1856.  
  1857.   private void printAutoBrightnessTables()
  1858.   {
  1859.     int i = 0;
  1860.     try
  1861.     {
  1862.       while (i < this.mAutoBrightnessLevels.length)
  1863.       {
  1864.         mStrAutoBrightnessLevels = mStrAutoBrightnessLevels + "    " + this.mAutoBrightnessLevels[i];
  1865.         i++;
  1866.       }
  1867.       Slog.d("PowerManagerService", mStrAutoBrightnessLevels);
  1868.       for (int j = 0; j < this.mAutoBrightnessHysteresisLevels.length; j++)
  1869.         mStrAutoBrightnessHysteresisLevels = mStrAutoBrightnessHysteresisLevels + "    " + this.mAutoBrightnessHysteresisLevels[j];
  1870.       Slog.d("PowerManagerService", mStrAutoBrightnessHysteresisLevels);
  1871.       for (int k = 0; k < this.mLcdBacklightValues.length; k++)
  1872.         mStrLcdBacklightValues = mStrLcdBacklightValues + this.mLcdBacklightValues[k] + "    ";
  1873.       Slog.d("PowerManagerService", mStrLcdBacklightValues);
  1874.       if (this.mDynamicAutoBrightnessEnabled)
  1875.       {
  1876.         Slog.d("PowerManagerService", "mValueOfVirtualZeroCandela = " + this.mValueOfVirtualZeroCandela);
  1877.         for (int m = 0; m < this.mLowHysteresisLevels.length; m++)
  1878.           mStrLowHysteresisPoints = mStrLowHysteresisPoints + "(" + this.mLowHysteresisLevels[m] + "," + this.mLowHysteresisValues[m] + "),  ";
  1879.         Slog.d("PowerManagerService", mStrLowHysteresisPoints);
  1880.         for (int n = 0; n < this.mBrightnessLevels.length; n++)
  1881.           mStrBrightnessValuePoints = mStrBrightnessValuePoints + "(" + this.mBrightnessLevels[n] + "," + this.mBrightnessValues[n] + "),  ";
  1882.         Slog.d("PowerManagerService", mStrBrightnessValuePoints);
  1883.         for (int i1 = 0; i1 < this.mHighHysteresisLevels.length; i1++)
  1884.           mStrHighHysteresisPoints = mStrHighHysteresisPoints + "(" + this.mHighHysteresisLevels[i1] + "," + this.mHighHysteresisValues[i1] + "),  ";
  1885.         Slog.d("PowerManagerService", mStrHighHysteresisPoints);
  1886.         if (this.mIsTablet)
  1887.         {
  1888.           for (int i2 = 0; i2 < this.mMinimumExpressiveBrightnessValues.length; i2++)
  1889.             mStrMinimumExpressiveBrightnessValues = mStrMinimumExpressiveBrightnessValues + this.mMinimumExpressiveBrightnessValues[i2] + ", ";
  1890.           Slog.d("PowerManagerService", mStrMinimumExpressiveBrightnessValues);
  1891.         }
  1892.       }
  1893.       return;
  1894.     }
  1895.     catch (Exception localException)
  1896.     {
  1897.       Slog.e("PowerManagerService", "printAutoBrightnessTables", localException);
  1898.     }
  1899.   }
  1900.  
  1901.   private void printCurLock(int paramInt)
  1902.   {
  1903.     if ((this.mUserState == 0) && (this.mWakeLockState != 0))
  1904.     {
  1905.       Slog.e("PowerManagerService", "CurLock p:" + paramInt + " mPS:" + this.mPowerState);
  1906.       int i = this.mLocks.size();
  1907.       long l1 = SystemClock.elapsedRealtime();
  1908.       for (int j = 0; j < i; j++)
  1909.       {
  1910.         WakeLock localWakeLock = (WakeLock)this.mLocks.get(j);
  1911.         String str1 = lockType(0x3F & localWakeLock.flags);
  1912.         String str2 = "";
  1913.         if ((0x10000000 & localWakeLock.flags) != 0)
  1914.           str2 = " AW ";
  1915.         String str3 = "";
  1916.         if (localWakeLock.activated)
  1917.           str3 = " active";
  1918.         long l2 = l1 - localWakeLock.acqTime;
  1919.         Slog.w("PowerManagerService", "type=" + str1 + " '" + localWakeLock.tag + "'" + str2 + str3 + " (minState=" + localWakeLock.minState + ")" + " activeT=" + l2 + "  uid=" + localWakeLock.uid + "  pid=" + localWakeLock.pid);
  1920.       }
  1921.     }
  1922.   }
  1923.  
  1924.   private void printCurLockForce(boolean paramBoolean)
  1925.   {
  1926.     if (!paramBoolean)
  1927.     {
  1928.       Slog.w("PowerManagerService", "CurLockF mPS:" + this.mPowerState + " mUS=" + this.mUserState);
  1929.       int i = this.mLocks.size();
  1930.       long l1 = SystemClock.elapsedRealtime();
  1931.       for (int j = 0; j < i; j++)
  1932.       {
  1933.         WakeLock localWakeLock = (WakeLock)this.mLocks.get(j);
  1934.         String str1 = lockType(0x3F & localWakeLock.flags);
  1935.         String str2 = "";
  1936.         if ((0x10000000 & localWakeLock.flags) != 0)
  1937.           str2 = " AW ";
  1938.         String str3 = "";
  1939.         if (localWakeLock.activated)
  1940.           str3 = " active";
  1941.         long l2 = l1 - localWakeLock.acqTime;
  1942.         Slog.w("PowerManagerService", "type=" + str1 + " '" + localWakeLock.tag + "'" + str2 + str3 + " (mS=" + localWakeLock.minState + ")" + "  activeT=" + l2 + "  uid=" + localWakeLock.uid + "  pid=" + localWakeLock.pid);
  1943.       }
  1944.       Slog.w("PowerManagerService", "mPokeLocks.size=" + this.mPokeLocks.size() + ":");
  1945.       Iterator localIterator = this.mPokeLocks.values().iterator();
  1946.       while (localIterator.hasNext())
  1947.       {
  1948.         PokeLock localPokeLock = (PokeLock)localIterator.next();
  1949.         Slog.w("PowerManagerService", " pokeLock " + localPokeLock.pokey + "  '" + localPokeLock.tag + "'");
  1950.       }
  1951.     }
  1952.   }
  1953.  
  1954.   private void proximityChangedLocked(boolean paramBoolean)
  1955.   {
  1956.     Slog.d("PowerManagerService", "proximityChangedLocked, active: " + paramBoolean);
  1957.     if (!this.mProximitySensorEnabled)
  1958.       Slog.d("PowerManagerService", "Ignoring proximity change after sensor is disabled");
  1959.     do
  1960.     {
  1961.       return;
  1962.       if (paramBoolean)
  1963.       {
  1964.         Slog.d("PowerManagerService", "b mProxIgnoredBecauseScreenTurnedOff=" + this.mProxIgnoredBecauseScreenTurnedOff);
  1965.         if (!this.mProxIgnoredBecauseScreenTurnedOff)
  1966.           goToSleepLocked(SystemClock.uptimeMillis(), 4);
  1967.         this.mProximitySensorActive = true;
  1968.         return;
  1969.       }
  1970.       this.mProximitySensorActive = false;
  1971.       Slog.d("PowerManagerService", "b mProxIgnoredBecauseScreenTurnedOff=" + this.mProxIgnoredBecauseScreenTurnedOff);
  1972.       if (!this.mProxIgnoredBecauseScreenTurnedOff)
  1973.       {
  1974.         this.mUserActivityReason = "proximity : far";
  1975.         forceUserActivityLocked();
  1976.       }
  1977.     }
  1978.     while (this.mProximityWakeLockCount != 0);
  1979.     disableProximityLockLocked();
  1980.   }
  1981.  
  1982.   private void releaseDVFSLockLocked(IBinder paramIBinder)
  1983.   {
  1984.     DVFSLock localDVFSLock1 = this.mDVFSLocks.removeLock(paramIBinder);
  1985.     if (localDVFSLock1 == null)
  1986.       return;
  1987.     if (localDVFSLock1.type == 2)
  1988.       if (localDVFSLock1 == this.mCurrentDVFSMaxLock)
  1989.       {
  1990.         DVFSLock localDVFSLock3 = this.mDVFSLocks.getMinOfMaxLock();
  1991.         if (localDVFSLock3 == null)
  1992.           break label103;
  1993.         Slog.d("PowerManagerService", "releaseDVFSLockLocked : remain DVFS_MAX_LIMIT : next : " + localDVFSLock3.frequency);
  1994.         nativeAcquireDVFSLock(2, localDVFSLock3.frequency);
  1995.         this.mCurrentDVFSMaxLock = localDVFSLock3;
  1996.       }
  1997.     while (true)
  1998.     {
  1999.       localDVFSLock1.binder.unlinkToDeath(localDVFSLock1, 0);
  2000.       return;
  2001.       label103: Slog.d("PowerManagerService", "releaseDVFSLockLocked : all DVFS_MAX_LIMIT are released ");
  2002.       nativeReleaseDVFSLock(2);
  2003.       this.mCurrentDVFSMaxLock = null;
  2004.       continue;
  2005.       if ((localDVFSLock1.type == 1) && (localDVFSLock1 == this.mCurrentDVFSMinLock))
  2006.       {
  2007.         DVFSLock localDVFSLock2 = this.mDVFSLocks.getMaxOfMinLock();
  2008.         if (localDVFSLock2 != null)
  2009.         {
  2010.           Slog.d("PowerManagerService", "releaseDVFSLockLocked : remain DVFS_MIN_LIMIT : next : " + localDVFSLock2.frequency);
  2011.           nativeAcquireDVFSLock(1, localDVFSLock2.frequency);
  2012.           this.mCurrentDVFSMinLock = localDVFSLock2;
  2013.         }
  2014.         else
  2015.         {
  2016.           Slog.d("PowerManagerService", "releaseDVFSLockLocked : all DVFS_MIN_LIMIT are released ");
  2017.           nativeReleaseDVFSLock(1);
  2018.           this.mCurrentDVFSMinLock = null;
  2019.         }
  2020.       }
  2021.     }
  2022.   }
  2023.  
  2024.   private void releaseWakeLockLocked(IBinder paramIBinder, int paramInt, boolean paramBoolean)
  2025.   {
  2026.     WakeLock localWakeLock = this.mLocks.removeLock(paramIBinder);
  2027.     if (localWakeLock == null);
  2028.     while (localWakeLock.isReleasedInternal)
  2029.       return;
  2030.     if (isScreenLock(localWakeLock.flags))
  2031.       if ((0x3F & localWakeLock.flags) == 32)
  2032.       {
  2033.         this.mProximityWakeLockCount = (-1 + this.mProximityWakeLockCount);
  2034.         Slog.d("PowerManagerService", "releaseWakeLockLocked : PROXIMITY_SCREEN_OFF_WAKE_LOCK : mProximityWakeLockCount : " + this.mProximityWakeLockCount + "  tag=" + localWakeLock.tag + " uid=" + localWakeLock.uid + " pid=" + localWakeLock.pid);
  2035.         if (this.mProximityWakeLockCount == 0)
  2036.         {
  2037.           if ((!this.mProximitySensorActive) || ((paramInt & 0x1) == 0))
  2038.             break label185;
  2039.           Slog.d("PowerManagerService", "waiting for proximity sensor to go negative");
  2040.         }
  2041.       }
  2042.     while (true)
  2043.     {
  2044.       localWakeLock.binder.unlinkToDeath(localWakeLock, 0);
  2045.       noteStopWakeLocked(localWakeLock, localWakeLock.ws);
  2046.       return;
  2047.       label185: disableProximityLockLocked();
  2048.       continue;
  2049.       this.mWakeLockState = this.mLocks.gatherState();
  2050.       if ((0x20000000 & localWakeLock.flags) != 0)
  2051.       {
  2052.         Slog.d("PowerManagerService", "releaseWakeLockLocked : ON_AFTER_RELEASE");
  2053.         this.mUserActivityReason = "ON_AFTER_RELEASE wake lock";
  2054.         userActivity(SystemClock.uptimeMillis(), -1L, false, 0, false, true);
  2055.       }
  2056.       printCurLock(2);
  2057.       int i;
  2058.       label274: StringBuilder localStringBuilder;
  2059.       if ((isScreenOn()) && ((0x1 & (this.mWakeLockState | this.mUserState)) == 0))
  2060.       {
  2061.         i = 1;
  2062.         localStringBuilder = new StringBuilder();
  2063.         if (i == 0)
  2064.           break label358;
  2065.       }
  2066.       label358: for (String str = "Screen__Off : "; ; str = "")
  2067.       {
  2068.         Slog.d("PowerManagerService", str + "releaseWakeLockLocked flags=0x" + Integer.toHexString(paramInt) + " tag=" + localWakeLock.tag);
  2069.         setPowerState(this.mWakeLockState | this.mUserState);
  2070.         break;
  2071.         i = 0;
  2072.         break label274;
  2073.       }
  2074.       if ((0x3F & localWakeLock.flags) == 1)
  2075.       {
  2076.         this.mPartialCount = (-1 + this.mPartialCount);
  2077.         Object[] arrayOfObject = new Object[2];
  2078.         arrayOfObject[0] = Integer.valueOf(0);
  2079.         arrayOfObject[1] = localWakeLock.tag;
  2080.         EventLog.writeEvent(2729, arrayOfObject);
  2081.         if (this.mPartialCount == 0)
  2082.           if (!this.mForceDisableWakeLock)
  2083.             nativeReleaseWakeLock("PowerManagerService");
  2084.           else
  2085.             Slog.d("PowerManagerService", "releaseWakeLockLocked : mForceDisableWakeLock : NOT released : " + localWakeLock.tag);
  2086.       }
  2087.     }
  2088.   }
  2089.  
  2090.   private int screenOffFinishedAnimatingLocked(int paramInt)
  2091.   {
  2092.     printCurLockForce(false);
  2093.     this.mBroadcastWakeLock.acquire();
  2094.     Object[] arrayOfObject = new Object[4];
  2095.     arrayOfObject[0] = Integer.valueOf(0);
  2096.     arrayOfObject[1] = Integer.valueOf(paramInt);
  2097.     arrayOfObject[2] = Long.valueOf(this.mTotalTouchDownTime);
  2098.     arrayOfObject[3] = Integer.valueOf(this.mTouchCycles);
  2099.     EventLog.writeEvent(2728, arrayOfObject);
  2100.     this.mLastTouchDown = 0L;
  2101.     int i = setScreenStateLocked(false);
  2102.     if (i == 0)
  2103.     {
  2104.       this.mScreenOffReason = paramInt;
  2105.       sendNotificationLocked(false, paramInt);
  2106.     }
  2107.     this.mBroadcastWakeLock.release();
  2108.     return i;
  2109.   }
  2110.  
  2111.   private void sendBrightnessModeBySysfs(int paramInt)
  2112.   {
  2113.     if (this.mAutoBrightessEnabled)
  2114.     {
  2115.       if (paramInt < 15)
  2116.       {
  2117.         fileWriteInt("/sys/class/backlight/panel/auto_brightness", 1);
  2118.         return;
  2119.       }
  2120.       if ((paramInt >= 15) && (paramInt < 150))
  2121.       {
  2122.         fileWriteInt("/sys/class/backlight/panel/auto_brightness", 2);
  2123.         return;
  2124.       }
  2125.       if ((paramInt >= 150) && (paramInt < 1500))
  2126.       {
  2127.         fileWriteInt("/sys/class/backlight/panel/auto_brightness", 3);
  2128.         return;
  2129.       }
  2130.       if ((paramInt >= 1500) && (paramInt < 15000))
  2131.       {
  2132.         fileWriteInt("/sys/class/backlight/panel/auto_brightness", 4);
  2133.         return;
  2134.       }
  2135.       if (paramInt >= 15000)
  2136.       {
  2137.         fileWriteInt("/sys/class/backlight/panel/auto_brightness", 5);
  2138.         return;
  2139.       }
  2140.       fileWriteInt("/sys/class/backlight/panel/auto_brightness", 5);
  2141.       return;
  2142.     }
  2143.     fileWriteInt("/sys/class/backlight/panel/auto_brightness", 0);
  2144.   }
  2145.  
  2146.   private void sendNotificationLocked(boolean paramBoolean, int paramInt)
  2147.   {
  2148.     if (!this.mInitialized)
  2149.       return;
  2150.     Slog.d("PowerManagerService", "sendNotificationLocked on=" + paramBoolean);
  2151.     if (!paramBoolean)
  2152.       this.mStillNeedSleepNotification = false;
  2153.     for (int i = 0; this.mBroadcastQueue[i] != -1; i++);
  2154.     int[] arrayOfInt1 = this.mBroadcastQueue;
  2155.     int j;
  2156.     label76: int[] arrayOfInt2;
  2157.     if (paramBoolean)
  2158.     {
  2159.       j = 1;
  2160.       arrayOfInt1[i] = j;
  2161.       this.mBroadcastWhy[i] = paramInt;
  2162.       if (i == 2)
  2163.       {
  2164.         if ((!paramBoolean) && (this.mBroadcastWhy[0] > paramInt))
  2165.           this.mBroadcastWhy[0] = paramInt;
  2166.         arrayOfInt2 = this.mBroadcastQueue;
  2167.         if (!paramBoolean)
  2168.           break label374;
  2169.       }
  2170.     }
  2171.     label374: for (int k = 1; ; k = 0)
  2172.     {
  2173.       arrayOfInt2[0] = k;
  2174.       this.mBroadcastQueue[1] = -1;
  2175.       this.mBroadcastQueue[2] = -1;
  2176.       Object[] arrayOfObject2 = new Object[2];
  2177.       arrayOfObject2[0] = Integer.valueOf(1);
  2178.       arrayOfObject2[1] = Integer.valueOf(this.mBroadcastWakeLock.mCount);
  2179.       EventLog.writeEvent(2727, arrayOfObject2);
  2180.       this.mBroadcastWakeLock.release();
  2181.       Object[] arrayOfObject3 = new Object[2];
  2182.       arrayOfObject3[0] = Integer.valueOf(1);
  2183.       arrayOfObject3[1] = Integer.valueOf(this.mBroadcastWakeLock.mCount);
  2184.       EventLog.writeEvent(2727, arrayOfObject3);
  2185.       this.mBroadcastWakeLock.release();
  2186.       i = 0;
  2187.       if ((i == 1) && (!paramBoolean))
  2188.       {
  2189.         this.mBroadcastQueue[0] = -1;
  2190.         this.mBroadcastQueue[1] = -1;
  2191.         i = -1;
  2192.         Object[] arrayOfObject1 = new Object[2];
  2193.         arrayOfObject1[0] = Integer.valueOf(1);
  2194.         arrayOfObject1[1] = Integer.valueOf(this.mBroadcastWakeLock.mCount);
  2195.         EventLog.writeEvent(2727, arrayOfObject1);
  2196.         this.mBroadcastWakeLock.release();
  2197.       }
  2198.       if (this.mSkippedScreenOn)
  2199.         updateLightsLocked(this.mPowerState, 1);
  2200.       if (i < 0)
  2201.         break;
  2202.       this.mBroadcastWakeLock.acquire();
  2203.       EventLog.writeEvent(2725, this.mBroadcastWakeLock.mCount);
  2204.       this.mHandler.post(this.mNotificationTask);
  2205.       return;
  2206.       j = 0;
  2207.       break label76;
  2208.     }
  2209.   }
  2210.  
  2211.   public static boolean setAmoledACL(boolean paramBoolean)
  2212.   {
  2213.     Log.i("PMSCabl", "setAmoledACL (" + paramBoolean + ")");
  2214.     if (paramBoolean);
  2215.     for (int i = 1; ; i = 0)
  2216.       return sysfsWrite("/sys/class/lcd/panel/power_reduce", i);
  2217.   }
  2218.  
  2219.   private void setDynamicAutoBrightnessSlopeTables()
  2220.   {
  2221.     while (true)
  2222.     {
  2223.       try
  2224.       {
  2225.         int i = -1 + this.mLowHysteresisValues.length;
  2226.         int j = -1 + this.mBrightnessValues.length;
  2227.         int k = -1 + this.mHighHysteresisValues.length;
  2228.         this.mLowHysteresisSlope = new double[i];
  2229.         this.mBrightnessValueSlope = new double[j];
  2230.         this.mHighHysteresisSlope = new double[k];
  2231.         int m = 0;
  2232.         if (m < i)
  2233.         {
  2234.           this.mLowHysteresisSlope[m] = getSlope(this.mLowHysteresisLevels[m], this.mLowHysteresisValues[m], this.mLowHysteresisLevels[(m + 1)], this.mLowHysteresisValues[(m + 1)], true);
  2235.           m++;
  2236.           continue;
  2237.           if (n >= j)
  2238.             break label245;
  2239.           this.mBrightnessValueSlope[n] = getSlope(this.mBrightnessLevels[n], this.mBrightnessValues[n], this.mBrightnessLevels[(n + 1)], this.mBrightnessValues[(n + 1)], false);
  2240.           n++;
  2241.           continue;
  2242.           if (i1 < k)
  2243.           {
  2244.             this.mHighHysteresisSlope[i1] = getSlope(this.mHighHysteresisLevels[i1], this.mHighHysteresisValues[i1], this.mHighHysteresisLevels[(i1 + 1)], this.mHighHysteresisValues[(i1 + 1)], true);
  2245.             i1++;
  2246.             continue;
  2247.           }
  2248.           printAutoBrightnessTables();
  2249.           return;
  2250.         }
  2251.       }
  2252.       catch (Exception localException)
  2253.       {
  2254.         Slog.e("PowerManagerService", "setDynamicAutoBrightnessSlopeTables", localException);
  2255.         return;
  2256.       }
  2257.       int n = 0;
  2258.       continue;
  2259.       label245: int i1 = 0;
  2260.     }
  2261.   }
  2262.  
  2263.   private void setLightBrightness(int paramInt1, int paramInt2)
  2264.   {
  2265.     this.mScreenBrightnessAnimator.animateTo(paramInt2, paramInt1, 0);
  2266.   }
  2267.  
  2268.   private void setPowerState(int paramInt)
  2269.   {
  2270.     setPowerState(paramInt, false, 3);
  2271.   }
  2272.  
  2273.   private void setPowerState(int paramInt1, boolean paramBoolean, int paramInt2)
  2274.   {
  2275.     LockList localLockList = this.mLocks;
  2276.     int i3;
  2277.     if (paramBoolean)
  2278.       i3 = paramInt1 & 0xFFFFFFF1;
  2279.     while (true)
  2280.     {
  2281.       int i;
  2282.       label165: int n;
  2283.       try
  2284.       {
  2285.         paramInt1 = i3 | 0xE & this.mPowerState;
  2286.         if (this.mProximitySensorActive)
  2287.         {
  2288.           Slog.d("PowerManagerService", "setPowerState : mProximitySensorActive is true , so SCREEN_BRIGHT bits is cleared, orig newState : " + paramInt1);
  2289.           paramInt1 &= -4;
  2290.         }
  2291.         if (!batteryIsLow())
  2292.           break label646;
  2293.         i = 0x10 | paramInt1 & 0xFFFFFFF1;
  2294.         if ((i & 0x1) != 0)
  2295.           i = applyKeyboardState(applyButtonState(i));
  2296.         int j = this.mPowerState;
  2297.         if ((i == j) && (this.mInitialized))
  2298.           return;
  2299.         if (!this.mBootCompleted)
  2300.         {
  2301.           Slog.d("PowerManagerService", "setPowerState : mBootCompleted : false, newState |= ALL_BRIGHT");
  2302.           i |= 15;
  2303.         }
  2304.         if ((0x1 & this.mPowerState) != 0)
  2305.         {
  2306.           k = 1;
  2307.           break label655;
  2308.           if (this.mPowerState == i)
  2309.             break label242;
  2310.           n = 1;
  2311.           label177: if ((n == 0) || (paramInt2 != 3) || (this.mPolicy == null) || (!this.mPolicy.isScreenSaverEnabled()) || (!this.mPolicy.startScreenSaver()))
  2312.             break label248;
  2313.           return;
  2314.         }
  2315.       }
  2316.       finally
  2317.       {
  2318.       }
  2319.       int k = 0;
  2320.       label242: label248:
  2321.       while ((i & 0x1) == 0)
  2322.       {
  2323.         m = 0;
  2324.         break label165;
  2325.         n = 0;
  2326.         break label177;
  2327.         int i2;
  2328.         long l2;
  2329.         if (k != m)
  2330.           if (m != 0)
  2331.           {
  2332.             int i1 = 1;
  2333.             if (this.mPreventScreenOn)
  2334.             {
  2335.               Slog.d("PowerManagerService", "- PREVENTING screen from really turning on!");
  2336.               i1 = 0;
  2337.             }
  2338.             if (i1 != 0)
  2339.             {
  2340.               i2 = setScreenStateLocked(true);
  2341.               l2 = Binder.clearCallingIdentity();
  2342.             }
  2343.           }
  2344.         while (true)
  2345.         {
  2346.           try
  2347.           {
  2348.             this.mBatteryStats.noteScreenBrightness(getPreferredBrightness());
  2349.             this.mBatteryStats.noteScreenOn();
  2350.             Binder.restoreCallingIdentity(l2);
  2351.             this.mLastTouchDown = 0L;
  2352.             this.mTotalTouchDownTime = 0L;
  2353.             this.mTouchCycles = 0;
  2354.             Object[] arrayOfObject = new Object[4];
  2355.             arrayOfObject[0] = Integer.valueOf(1);
  2356.             arrayOfObject[1] = Integer.valueOf(paramInt2);
  2357.             arrayOfObject[2] = Long.valueOf(this.mTotalTouchDownTime);
  2358.             arrayOfObject[3] = Integer.valueOf(this.mTouchCycles);
  2359.             EventLog.writeEvent(2728, arrayOfObject);
  2360.             if (i2 == 0)
  2361.             {
  2362.               sendNotificationLocked(true, -1);
  2363.               if (n != 0)
  2364.                 updateLightsLocked(i, 0);
  2365.               this.mPowerState = (0x1 | this.mPowerState);
  2366.             }
  2367.             this.mPowerState = (0xFFFFFFE1 & this.mPowerState | i & 0x1E);
  2368.             updateNativePowerStateLocked();
  2369.             return;
  2370.           }
  2371.           catch (RemoteException localRemoteException2)
  2372.           {
  2373.             Slog.w("PowerManagerService", "RemoteException calling noteScreenOn on BatteryStatsService", localRemoteException2);
  2374.             Binder.restoreCallingIdentity(l2);
  2375.             continue;
  2376.           }
  2377.           finally
  2378.           {
  2379.             Binder.restoreCallingIdentity(l2);
  2380.           }
  2381.           setScreenStateLocked(false);
  2382.           i2 = 0;
  2383.           continue;
  2384.           this.mScreenOffReason = paramInt2;
  2385.           if (n != 0)
  2386.             updateLightsLocked(i, 0);
  2387.           this.mHandler.removeCallbacks(this.mAutoBrightnessTask);
  2388.           this.mLightSensorPendingDecrease = false;
  2389.           this.mLightSensorPendingIncrease = false;
  2390.           this.mScreenOffTime = SystemClock.elapsedRealtime();
  2391.           long l1 = Binder.clearCallingIdentity();
  2392.           try
  2393.           {
  2394.             this.mBatteryStats.noteScreenOff();
  2395.             Binder.restoreCallingIdentity(l1);
  2396.             this.mPowerState = (0xFFFFFFFE & this.mPowerState);
  2397.             if (!this.mScreenBrightnessAnimator.isAnimating())
  2398.             {
  2399.               Slog.e("PowerManagerService", "setPowerState : skip screenOffFinishedAnimatingLocked");
  2400.               continue;
  2401.             }
  2402.           }
  2403.           catch (RemoteException localRemoteException1)
  2404.           {
  2405.             while (true)
  2406.             {
  2407.               Slog.w("PowerManagerService", "RemoteException calling noteScreenOff on BatteryStatsService", localRemoteException1);
  2408.               Binder.restoreCallingIdentity(l1);
  2409.             }
  2410.           }
  2411.           finally
  2412.           {
  2413.             Binder.restoreCallingIdentity(l1);
  2414.           }
  2415.           this.mLastTouchDown = 0L;
  2416.           continue;
  2417.           if (n != 0)
  2418.             updateLightsLocked(i, 0);
  2419.         }
  2420.         i = paramInt1 & 0xFFFFFFEF;
  2421.         break;
  2422.       }
  2423.       label646: label655: int m = 1;
  2424.     }
  2425.   }
  2426.  
  2427.   private void setScreenBrightnessMode(int paramInt)
  2428.   {
  2429.     int i = 1;
  2430.     LockList localLockList = this.mLocks;
  2431.     int j;
  2432.     if (paramInt == i)
  2433.       j = i;
  2434.     while (true)
  2435.     {
  2436.       try
  2437.       {
  2438.         if ((this.mUseSoftwareAutoBrightness) && (this.mAutoBrightessEnabled != j))
  2439.         {
  2440.           this.mAutoBrightessEnabled = j;
  2441.           if (j == 0)
  2442.             break label99;
  2443.           k = (int)this.mLightSensorValue;
  2444.           sendBrightnessModeBySysfs(k);
  2445.           if ((this.mIsTablet) && ((!this.mAutoBrightessEnabled) || (!isScreenOn())))
  2446.             break label105;
  2447.           enableLightSensorLocked(i);
  2448.         }
  2449.         return;
  2450.       }
  2451.       finally
  2452.       {
  2453.       }
  2454.       j = 0;
  2455.       continue;
  2456.       label99: int k = 0;
  2457.       continue;
  2458.       label105: i = 0;
  2459.     }
  2460.   }
  2461.  
  2462.   private void setScreenOffTimeoutsLocked()
  2463.   {
  2464.     if ((0x2 & this.mPokey) != 0)
  2465.     {
  2466.       this.mKeylightDelay = this.mShortKeylightDelay;
  2467.       this.mDimDelay = -1;
  2468.       this.mScreenOffDelay = 0;
  2469.     }
  2470.     while (true)
  2471.     {
  2472.       Slog.d("PowerManagerService", "setScreenOffTimeouts mKeylightDelay=" + this.mKeylightDelay + " mDimDelay=" + this.mDimDelay + " mScreenOffDelay=" + this.mScreenOffDelay + " mDimScreen=" + this.mDimScreen);
  2473.       return;
  2474.       if ((0x4 & this.mPokey) != 0)
  2475.       {
  2476.         this.mKeylightDelay = 15000;
  2477.         this.mDimDelay = -1;
  2478.         this.mScreenOffDelay = 0;
  2479.       }
  2480.       else if ((0x10 & this.mPokey) != 0)
  2481.       {
  2482.         this.mKeylightDelay = 6000;
  2483.         this.mDimDelay = 4000;
  2484.         this.mScreenOffDelay = 20000;
  2485.       }
  2486.       else
  2487.       {
  2488.         int i;
  2489.         if ((this.mIsDeviceLockTime) && (this.mDeviceLockTimeoutSetting > 0) && (this.mIsSecuredLock == 1))
  2490.         {
  2491.           i = Math.min(this.mDeviceLockTimeoutSetting, this.mScreenOffTimeoutSetting);
  2492.           Slog.d("PowerManagerService", "ATT: setScreenOffTimeouts mDeviceLockTimeoutSetting=" + this.mDeviceLockTimeoutSetting);
  2493.           label222: if (i > this.mMaximumScreenOffTimeout)
  2494.             i = this.mMaximumScreenOffTimeout;
  2495.           this.mKeylightDelay = 6000;
  2496.           if (this.mButtonOffTimeoutSetting != -1)
  2497.             break label311;
  2498.           label250: if (i >= 0)
  2499.             break label340;
  2500.           this.mScreenOffDelay = this.mMaximumScreenOffTimeout;
  2501.         }
  2502.         while (true)
  2503.         {
  2504.           if ((!this.mDimScreen) || (i < 7000 + this.mKeylightDelay))
  2505.             break label369;
  2506.           this.mDimDelay = (-7000 + this.mScreenOffDelay);
  2507.           this.mScreenOffDelay = 7000;
  2508.           break;
  2509.           i = this.mScreenOffTimeoutSetting;
  2510.           break label222;
  2511.           label311: if ((this.mButtonOffTimeoutSetting == -2) || (this.mButtonOffTimeoutSetting == -3))
  2512.             break label250;
  2513.           this.mKeylightDelay = this.mButtonOffTimeoutSetting;
  2514.           break label250;
  2515.           label340: if (this.mKeylightDelay < i)
  2516.             this.mScreenOffDelay = (i - this.mKeylightDelay);
  2517.           else
  2518.             this.mScreenOffDelay = 0;
  2519.         }
  2520.         label369: this.mDimDelay = -1;
  2521.       }
  2522.     }
  2523.   }
  2524.  
  2525.   private int setScreenStateLocked(boolean paramBoolean)
  2526.   {
  2527.     if ((paramBoolean) && (this.mInitialized) && (((0x1 & this.mPowerState) == 0) || (this.mSkippedScreenOn)))
  2528.       this.mScreenBrightnessAnimator.animateTo(0, 2, 0);
  2529.     int i;
  2530.     if ((!paramBoolean) && (this.mScreenOffReason == 5) && (!this.mIsFakeOff))
  2531.     {
  2532.       nativeSetScreenState(false);
  2533.       i = nativeFakeOff();
  2534.       this.mIsFakeOff = true;
  2535.       if (i == 0)
  2536.         if (!paramBoolean)
  2537.           break label126;
  2538.     }
  2539.     label126: for (long l = SystemClock.elapsedRealtime(); ; l = 0L)
  2540.     {
  2541.       this.mLastScreenOnTime = l;
  2542.       if (this.mUseSoftwareAutoBrightness)
  2543.       {
  2544.         enableLightSensorLocked(paramBoolean);
  2545.         if (!paramBoolean)
  2546.           break label131;
  2547.         this.mWaitingForFirstLightSensor = this.mAutoBrightessEnabled;
  2548.       }
  2549.       return i;
  2550.       i = nativeSetScreenState(paramBoolean);
  2551.       this.mIsFakeOff = false;
  2552.       break;
  2553.     }
  2554.     label131: this.mButtonLight.turnOff();
  2555.     this.mKeyboardLight.turnOff();
  2556.     return i;
  2557.   }
  2558.  
  2559.   private void setTimeoutLocked(long paramLong, int paramInt)
  2560.   {
  2561.     setTimeoutLocked(paramLong, -1L, paramInt);
  2562.   }
  2563.  
  2564.   private void setTimeoutLocked(long paramLong1, long paramLong2, int paramInt)
  2565.   {
  2566.     long l1 = paramLong2;
  2567.     if (this.mBootCompleted)
  2568.     {
  2569.       LockList localLockList1 = this.mLocks;
  2570.       long l2;
  2571.       if (l1 <= 0L)
  2572.         switch (paramInt)
  2573.         {
  2574.         case 2:
  2575.         default:
  2576.           l2 = paramLong1;
  2577.         case 3:
  2578.         case 1:
  2579.         case 0:
  2580.         }
  2581.       while (true)
  2582.       {
  2583.         long l3;
  2584.         try
  2585.         {
  2586.           this.mHandler.removeCallbacks(this.mTimeoutTask);
  2587.           this.mTimeoutTask.nextState = paramInt;
  2588.           TimeoutTask localTimeoutTask = this.mTimeoutTask;
  2589.           if (l1 <= 0L)
  2590.             break label355;
  2591.           l3 = paramLong2 - l1;
  2592.           localTimeoutTask.remainingTimeoutOverride = l3;
  2593.           this.mHandler.postAtTime(this.mTimeoutTask, l2);
  2594.           this.mNextTimeout = l2;
  2595.           return;
  2596.           l2 = paramLong1 + this.mKeylightDelay;
  2597.           continue;
  2598.           if (this.mDimDelay >= 0)
  2599.           {
  2600.             l2 = paramLong1 + this.mDimDelay;
  2601.             continue;
  2602.           }
  2603.           Slog.w("PowerManagerService", "mDimDelay=" + this.mDimDelay + " while trying to dim");
  2604.           synchronized (this.mLocks)
  2605.           {
  2606.             l2 = paramLong1 + this.mScreenOffDelay;
  2607.           }
  2608.         }
  2609.         finally
  2610.         {
  2611.         }
  2612.         Slog.w("PowerManagerService", "setTimeoutLocked :  override : timeoutOverride : " + l1);
  2613.         if (l1 <= this.mScreenOffDelay)
  2614.         {
  2615.           l2 = paramLong1 + l1;
  2616.           paramInt = 0;
  2617.         }
  2618.         else
  2619.         {
  2620.           l1 -= this.mScreenOffDelay;
  2621.           if (this.mDimDelay >= 0)
  2622.           {
  2623.             if (l1 <= this.mDimDelay)
  2624.             {
  2625.               l2 = paramLong1 + l1;
  2626.               paramInt = 1;
  2627.             }
  2628.             else
  2629.             {
  2630.               int i = this.mDimDelay;
  2631.               l1 -= i;
  2632.             }
  2633.           }
  2634.           else
  2635.           {
  2636.             l2 = paramLong1 + l1;
  2637.             paramInt = 3;
  2638.             continue;
  2639.             label355: l3 = -1L;
  2640.           }
  2641.         }
  2642.       }
  2643.     }
  2644.   }
  2645.  
  2646.   private boolean shouldDeferScreenOnLocked()
  2647.   {
  2648.     if (this.mPreparingForScreenOn)
  2649.       return true;
  2650.     for (int i = 0; ; i++)
  2651.     {
  2652.       if (i >= this.mBroadcastQueue.length)
  2653.         break label36;
  2654.       if (this.mBroadcastQueue[i] == 1)
  2655.         break;
  2656.     }
  2657.     label36: return false;
  2658.   }
  2659.  
  2660.   private boolean shouldLog(long paramLong)
  2661.   {
  2662.     synchronized (this.mLocks)
  2663.     {
  2664.       if (paramLong > 3600000L + this.mWarningSpewThrottleTime)
  2665.       {
  2666.         this.mWarningSpewThrottleTime = paramLong;
  2667.         this.mWarningSpewThrottleCount = 0;
  2668.         return true;
  2669.       }
  2670.       if (this.mWarningSpewThrottleCount < 30)
  2671.       {
  2672.         this.mWarningSpewThrottleCount = (1 + this.mWarningSpewThrottleCount);
  2673.         return true;
  2674.       }
  2675.     }
  2676.     return false;
  2677.   }
  2678.  
  2679.   private void shutdown(final String paramString)
  2680.   {
  2681.     if ((this.mHandler == null) || (!ActivityManagerNative.isSystemReady()))
  2682.       throw new IllegalStateException("Too early to call shutdown()");
  2683.     Slog.d("PowerManagerService", "shutdown. reason : " + paramString);
  2684.     this.mHandler.post(new Runnable()
  2685.     {
  2686.       public void run()
  2687.       {
  2688.         if ((PowerManagerService.this.mIsPowered) || (PowerManagerService.this.mAutoPowerOffTimeoutSetting == 0))
  2689.         {
  2690.           Slog.i("PowerManagerService", "shutdown : ignored : mIsPowered : " + PowerManagerService.this.mIsPowered + "  mAutoPowerOffTimeoutSetting : " + PowerManagerService.this.mAutoPowerOffTimeoutSetting);
  2691.           return;
  2692.         }
  2693.         if (PowerManagerService.this.checkPreventAutoPowerOff())
  2694.         {
  2695.           Slog.i("PowerManagerService", "shutdown : checkPreventAutoPowerOff : APO timer reset");
  2696.           PowerManagerService.this.mHandler.removeCallbacks(PowerManagerService.this.mUpdateAutoPowerOffTimeTask);
  2697.           PowerManagerService.this.mHandler.post(PowerManagerService.this.mUpdateAutoPowerOffTimeTask);
  2698.           return;
  2699.         }
  2700.         Slog.d("PowerManagerService", "shutdown : ShutdownThread.fakeShutdown : " + paramString);
  2701.         ShutdownThread.fakeShutdown(PowerManagerService.this.mContext, paramString, false);
  2702.       }
  2703.     });
  2704.   }
  2705.  
  2706.   // ERROR //
  2707.   private static boolean sysfsWrite(String paramString, int paramInt)
  2708.   {
  2709.     // Byte code:
  2710.     //   0: aconst_null
  2711.     //   1: astore_2
  2712.     //   2: new 1450    java/io/FileOutputStream
  2713.     //   5: dup
  2714.     //   6: new 1452    java/io/File
  2715.     //   9: dup
  2716.     //   10: aload_0
  2717.     //   11: invokespecial 1454 java/io/File:<init> (Ljava/lang/String;)V
  2718.     //   14: invokespecial 1457 java/io/FileOutputStream:<init> (Ljava/io/File;)V
  2719.     //   17: astore_3
  2720.     //   18: aload_3
  2721.     //   19: iload_1
  2722.     //   20: invokestatic 1459  java/lang/Integer:toString  (I)Ljava/lang/String;
  2723.     //   23: invokevirtual 847  java/lang/String:getBytes   ()[B
  2724.     //   26: invokevirtual 1460 java/io/FileOutputStream:write  ([B)V
  2725.     //   29: aload_3
  2726.     //   30: invokevirtual 1463 java/io/FileOutputStream:close  ()V
  2727.     //   33: iconst_1
  2728.     //   34: ireturn
  2729.     //   35: astore 6
  2730.     //   37: aload 6
  2731.     //   39: invokevirtual 2138 java/io/FileNotFoundException:printStackTrace   ()V
  2732.     //   42: iconst_0
  2733.     //   43: ireturn
  2734.     //   44: astore 4
  2735.     //   46: aload 4
  2736.     //   48: invokevirtual 827  java/io/IOException:printStackTrace ()V
  2737.     //   51: aload_2
  2738.     //   52: invokevirtual 1463 java/io/FileOutputStream:close  ()V
  2739.     //   55: iconst_0
  2740.     //   56: ireturn
  2741.     //   57: astore 5
  2742.     //   59: aload 5
  2743.     //   61: invokevirtual 1466 java/lang/Exception:printStackTrace ()V
  2744.     //   64: iconst_0
  2745.     //   65: ireturn
  2746.     //   66: astore 4
  2747.     //   68: aload_3
  2748.     //   69: astore_2
  2749.     //   70: goto -24 -> 46
  2750.     //
  2751.     // Exception table:
  2752.     //   from   to  target  type
  2753.     //   2  18  35  java/io/FileNotFoundException
  2754.     //   2  18  44  java/io/IOException
  2755.     //   37 42  44  java/io/IOException
  2756.     //   51 55  57  java/lang/Exception
  2757.     //   18 33  66  java/io/IOException
  2758.   }
  2759.  
  2760.   private void testAutoBrightnessSpec()
  2761.   {
  2762.     for (int i = 0; i <= 200; i += 20)
  2763.     {
  2764.       setRatioOfAutoBrightness(i);
  2765.       int[] arrayOfInt = { 0, 5, 10, 15, 20, 25, 100, 500, 1000, 1500, 2000, 3000, 4000, 5000, 7000, 8000, 9000, 10000, 14999, 15000 };
  2766.       Slog.d("PowerManagerService", "--------------------------------- " + this.mSignedSettingsRatio + " ---------------------------------");
  2767.       for (int j = 0; j < arrayOfInt.length; j++)
  2768.       {
  2769.         this.mLowHysteresisLux = -1;
  2770.         this.mHighHysteresisLux = -1;
  2771.         this.mLightSensorValue = -1.0F;
  2772.         lightSensorChangedLocked(arrayOfInt[j], false);
  2773.       }
  2774.     }
  2775.   }
  2776.  
  2777.   // ERROR //
  2778.   private void updateLightsLocked(int paramInt1, int paramInt2)
  2779.   {
  2780.     // Byte code:
  2781.     //   0: aload_0
  2782.     //   1: getfield 757    com/android/server/PowerManagerService:mPowerState  I
  2783.     //   4: istore_3
  2784.     //   5: iload_3
  2785.     //   6: iconst_1
  2786.     //   7: iand
  2787.     //   8: ifeq +10 -> 18
  2788.     //   11: aload_0
  2789.     //   12: getfield 474   com/android/server/PowerManagerService:mSkippedScreenOn Z
  2790.     //   15: ifeq +25 -> 40
  2791.     //   18: aload_0
  2792.     //   19: invokespecial 2148 com/android/server/PowerManagerService:shouldDeferScreenOnLocked    ()Z
  2793.     //   22: istore 4
  2794.     //   24: aload_0
  2795.     //   25: iload 4
  2796.     //   27: putfield 474   com/android/server/PowerManagerService:mSkippedScreenOn Z
  2797.     //   30: iload 4
  2798.     //   32: ifeq +8 -> 40
  2799.     //   35: iload_1
  2800.     //   36: bipush 252
  2801.     //   38: iand
  2802.     //   39: istore_1
  2803.     //   40: iload_1
  2804.     //   41: iload_3
  2805.     //   42: ixor
  2806.     //   43: istore 5
  2807.     //   45: iload 5
  2808.     //   47: iload_2
  2809.     //   48: ior
  2810.     //   49: istore 6
  2811.     //   51: iload 6
  2812.     //   53: ifne +4 -> 57
  2813.     //   56: return
  2814.     //   57: aload_0
  2815.     //   58: invokespecial 2048 com/android/server/PowerManagerService:getPreferredBrightness   ()I
  2816.     //   61: istore 7
  2817.     //   63: ldc 89
  2818.     //   65: new 831    java/lang/StringBuilder
  2819.     //   68: dup
  2820.     //   69: invokespecial 832  java/lang/StringBuilder:<init>  ()V
  2821.     //   72: ldc_w 2150
  2822.     //   75: invokevirtual 838  java/lang/StringBuilder:append  (Ljava/lang/String;)Ljava/lang/StringBuilder;
  2823.     //   78: iload_3
  2824.     //   79: invokestatic 1957  java/lang/Integer:toHexString   (I)Ljava/lang/String;
  2825.     //   82: invokevirtual 838  java/lang/StringBuilder:append  (Ljava/lang/String;)Ljava/lang/StringBuilder;
  2826.     //   85: ldc_w 2152
  2827.     //   88: invokevirtual 838  java/lang/StringBuilder:append  (Ljava/lang/String;)Ljava/lang/StringBuilder;
  2828.     //   91: iload_1
  2829.     //   92: invokestatic 1957  java/lang/Integer:toHexString   (I)Ljava/lang/String;
  2830.     //   95: invokevirtual 838  java/lang/StringBuilder:append  (Ljava/lang/String;)Ljava/lang/StringBuilder;
  2831.     //   98: ldc_w 2154
  2832.     //   101: invokevirtual 838 java/lang/StringBuilder:append  (Ljava/lang/String;)Ljava/lang/StringBuilder;
  2833.     //   104: iload_2
  2834.     //   105: invokestatic 1957 java/lang/Integer:toHexString   (I)Ljava/lang/String;
  2835.     //   108: invokevirtual 838 java/lang/StringBuilder:append  (Ljava/lang/String;)Ljava/lang/StringBuilder;
  2836.     //   111: invokevirtual 843 java/lang/StringBuilder:toString    ()Ljava/lang/String;
  2837.     //   114: invokestatic 1448 android/util/Slog:i (Ljava/lang/String;Ljava/lang/String;)I
  2838.     //   117: pop
  2839.     //   118: iload 6
  2840.     //   120: bipush 8
  2841.     //   122: iand
  2842.     //   123: istore 9
  2843.     //   125: iconst_0
  2844.     //   126: istore 10
  2845.     //   128: iconst_0
  2846.     //   129: istore 11
  2847.     //   131: iload 9
  2848.     //   133: ifeq +16 -> 149
  2849.     //   136: iload_1
  2850.     //   137: bipush 8
  2851.     //   139: iand
  2852.     //   140: ifne +397 -> 537
  2853.     //   143: iconst_0
  2854.     //   144: bipush 8
  2855.     //   146: ior
  2856.     //   147: istore 10
  2857.     //   149: iload 6
  2858.     //   151: iconst_4
  2859.     //   152: iand
  2860.     //   153: ifeq +15 -> 168
  2861.     //   156: iload_1
  2862.     //   157: iconst_4
  2863.     //   158: iand
  2864.     //   159: ifne +390 -> 549
  2865.     //   162: iload 10
  2866.     //   164: iconst_4
  2867.     //   165: ior
  2868.     //   166: istore 10
  2869.     //   168: iload 6
  2870.     //   170: iconst_3
  2871.     //   171: iand
  2872.     //   172: ifeq +280 -> 452
  2873.     //   175: iload 5
  2874.     //   177: iconst_3
  2875.     //   178: iand
  2876.     //   179: ifeq +45 -> 224
  2877.     //   182: iload_3
  2878.     //   183: iconst_3
  2879.     //   184: iand
  2880.     //   185: tableswitch   default:+31 -> 216, 0:+384->569, 1:+376->561, 2:+31->216, 3:+373->558
  2881.     //   217: getfield 1109 com/android/server/PowerManagerService:mScreenBrightnessAnimator    Lcom/android/server/PowerManagerService$ScreenBrightnessAnimator;
  2882.     //   220: invokevirtual 2157    com/android/server/PowerManagerService$ScreenBrightnessAnimator:getCurrentBrightness    ()I
  2883.     //   223: pop
  2884.     //   224: iload 7
  2885.     //   226: istore 14
  2886.     //   228: bipush 10
  2887.     //   230: istore 15
  2888.     //   232: iload_1
  2889.     //   233: iconst_2
  2890.     //   234: iand
  2891.     //   235: ifne +43 -> 278
  2892.     //   238: aload_0
  2893.     //   239: getfield 1591 com/android/server/PowerManagerService:mScreenBrightnessDim I
  2894.     //   242: i2f
  2895.     //   243: iload 7
  2896.     //   245: i2f
  2897.     //   246: fdiv
  2898.     //   247: fstore 24
  2899.     //   249: fload 24
  2900.     //   251: fconst_1
  2901.     //   252: fcmpl
  2902.     //   253: ifle +6 -> 259
  2903.     //   256: fconst_1
  2904.     //   257: fstore 24
  2905.     //   259: iload_1
  2906.     //   260: iconst_1
  2907.     //   261: iand
  2908.     //   262: ifne +326 -> 588
  2909.     //   265: iload_3
  2910.     //   266: iconst_2
  2911.     //   267: iand
  2912.     //   268: ifeq +304 -> 572
  2913.     //   271: bipush 10
  2914.     //   273: istore 15
  2915.     //   275: iconst_0
  2916.     //   276: istore 14
  2917.     //   278: aload_0
  2918.     //   279: getfield 529  com/android/server/PowerManagerService:mWaitingForFirstLightSensor  Z
  2919.     //   282: ifeq +12 -> 294
  2920.     //   285: iload_1
  2921.     //   286: iconst_1
  2922.     //   287: iand
  2923.     //   288: ifeq +6 -> 294
  2924.     //   291: iconst_4
  2925.     //   292: istore 15
  2926.     //   294: invokestatic 738  android/os/Binder:clearCallingIdentity  ()J
  2927.     //   297: lstore 16
  2928.     //   299: aload_0
  2929.     //   300: getfield 2046 com/android/server/PowerManagerService:mBatteryStats    Lcom/android/internal/app/IBatteryStats;
  2930.     //   303: iload 14
  2931.     //   305: invokeinterface 2053 2 0
  2932.     //   310: lload 16
  2933.     //   312: invokestatic 755  android/os/Binder:restoreCallingIdentity    (J)V
  2934.     //   315: aload_0
  2935.     //   316: getfield 588  com/android/server/PowerManagerService:mSystemPowerSaveModeEnabled  Z
  2936.     //   319: ifeq +52 -> 371
  2937.     //   322: iload 14
  2938.     //   324: getstatic 370 com/android/server/PowerManagerService:POWERSAVEMODE_BRIGHTNESS_OFFSET  I
  2939.     //   327: isub
  2940.     //   328: istore 22
  2941.     //   330: iload 14
  2942.     //   332: ifle +39 -> 371
  2943.     //   335: iload 22
  2944.     //   337: bipush 10
  2945.     //   339: invokestatic 1594 java/lang/Math:max  (II)I
  2946.     //   342: istore 14
  2947.     //   344: ldc 89
  2948.     //   346: new 831   java/lang/StringBuilder
  2949.     //   349: dup
  2950.     //   350: invokespecial 832 java/lang/StringBuilder:<init>  ()V
  2951.     //   353: ldc_w 2159
  2952.     //   356: invokevirtual 838 java/lang/StringBuilder:append  (Ljava/lang/String;)Ljava/lang/StringBuilder;
  2953.     //   359: iload 14
  2954.     //   361: invokevirtual 1203    java/lang/StringBuilder:append  (I)Ljava/lang/StringBuilder;
  2955.     //   364: invokevirtual 843 java/lang/StringBuilder:toString    ()Ljava/lang/String;
  2956.     //   367: invokestatic 1214 android/util/Slog:d (Ljava/lang/String;Ljava/lang/String;)I
  2957.     //   370: pop
  2958.     //   371: aload_0
  2959.     //   372: getfield 586  com/android/server/PowerManagerService:mMaxBrightness   I
  2960.     //   375: iflt +51 -> 426
  2961.     //   378: iload 14
  2962.     //   380: aload_0
  2963.     //   381: getfield 586  com/android/server/PowerManagerService:mMaxBrightness   I
  2964.     //   384: if_icmple +42 -> 426
  2965.     //   387: aload_0
  2966.     //   388: getfield 586  com/android/server/PowerManagerService:mMaxBrightness   I
  2967.     //   391: istore 14
  2968.     //   393: ldc 89
  2969.     //   395: new 831   java/lang/StringBuilder
  2970.     //   398: dup
  2971.     //   399: invokespecial 832 java/lang/StringBuilder:<init>  ()V
  2972.     //   402: ldc_w 2161
  2973.     //   405: invokevirtual 838 java/lang/StringBuilder:append  (Ljava/lang/String;)Ljava/lang/StringBuilder;
  2974.     //   408: iload 14
  2975.     //   410: invokevirtual 1203    java/lang/StringBuilder:append  (I)Ljava/lang/StringBuilder;
  2976.     //   413: ldc_w 1748
  2977.     //   416: invokevirtual 838 java/lang/StringBuilder:append  (Ljava/lang/String;)Ljava/lang/StringBuilder;
  2978.     //   419: invokevirtual 843 java/lang/StringBuilder:toString    ()Ljava/lang/String;
  2979.     //   422: invokestatic 1214 android/util/Slog:d (Ljava/lang/String;Ljava/lang/String;)I
  2980.     //   425: pop
  2981.     //   426: aload_0
  2982.     //   427: getfield 474  com/android/server/PowerManagerService:mSkippedScreenOn Z
  2983.     //   430: ifne +22 -> 452
  2984.     //   433: iload 15
  2985.     //   435: bipush 16
  2986.     //   437: imul
  2987.     //   438: istore 20
  2988.     //   440: aload_0
  2989.     //   441: getfield 1109 com/android/server/PowerManagerService:mScreenBrightnessAnimator    Lcom/android/server/PowerManagerService$ScreenBrightnessAnimator;
  2990.     //   444: iload 14
  2991.     //   446: iconst_2
  2992.     //   447: iload 20
  2993.     //   449: invokevirtual 2020    com/android/server/PowerManagerService$ScreenBrightnessAnimator:animateTo   (III)V
  2994.     //   452: iload 10
  2995.     //   454: ifeq +10 -> 464
  2996.     //   457: aload_0
  2997.     //   458: iload 10
  2998.     //   460: iconst_0
  2999.     //   461: invokespecial 2163    com/android/server/PowerManagerService:setLightBrightness   (II)V
  3000.     //   464: iconst_0
  3001.     //   465: ifeq +34 -> 499
  3002.     //   468: aload_0
  3003.     //   469: getfield 1591 com/android/server/PowerManagerService:mScreenBrightnessDim I
  3004.     //   472: istore 13
  3005.     //   474: iload_1
  3006.     //   475: bipush 16
  3007.     //   477: iand
  3008.     //   478: ifeq +14 -> 492
  3009.     //   481: iload 13
  3010.     //   483: bipush 10
  3011.     //   485: if_icmple +7 -> 492
  3012.     //   488: bipush 10
  3013.     //   490: istore 13
  3014.     //   492: aload_0
  3015.     //   493: iconst_0
  3016.     //   494: iload 13
  3017.     //   496: invokespecial 2163    com/android/server/PowerManagerService:setLightBrightness   (II)V
  3018.     //   499: iload 11
  3019.     //   501: ifeq -445 -> 56
  3020.     //   504: aload_0
  3021.     //   505: invokespecial 2048    com/android/server/PowerManagerService:getPreferredBrightness   ()I
  3022.     //   508: istore 12
  3023.     //   510: iload_1
  3024.     //   511: bipush 16
  3025.     //   513: iand
  3026.     //   514: ifeq +14 -> 528
  3027.     //   517: iload 12
  3028.     //   519: bipush 10
  3029.     //   521: if_icmple +7 -> 528
  3030.     //   524: bipush 10
  3031.     //   526: istore 12
  3032.     //   528: aload_0
  3033.     //   529: iload 11
  3034.     //   531: iload 12
  3035.     //   533: invokespecial 2163    com/android/server/PowerManagerService:setLightBrightness   (II)V
  3036.     //   536: return
  3037.     //   537: iconst_0
  3038.     //   538: bipush 8
  3039.     //   540: ior
  3040.     //   541: istore 11
  3041.     //   543: iconst_0
  3042.     //   544: istore 10
  3043.     //   546: goto -397 -> 149
  3044.     //   549: iload 11
  3045.     //   551: iconst_4
  3046.     //   552: ior
  3047.     //   553: istore 11
  3048.     //   555: goto -387 -> 168
  3049.     //   558: goto -334 -> 224
  3050.     //   561: aload_0
  3051.     //   562: getfield 1591 com/android/server/PowerManagerService:mScreenBrightnessDim I
  3052.     //   565: pop
  3053.     //   566: goto -342 -> 224
  3054.     //   569: goto -345 -> 224
  3055.     //   572: ldc_w 2164
  3056.     //   575: ldc_w 2165
  3057.     //   578: fload 24
  3058.     //   580: fmul
  3059.     //   581: fmul
  3060.     //   582: f2i
  3061.     //   583: istore 15
  3062.     //   585: goto -310 -> 275
  3063.     //   588: iload_3
  3064.     //   589: iconst_1
  3065.     //   590: iand
  3066.     //   591: ifeq +57 -> 648
  3067.     //   594: ldc_w 2164
  3068.     //   597: ldc_w 2165
  3069.     //   600: fconst_1
  3070.     //   601: fload 24
  3071.     //   603: fsub
  3072.     //   604: fmul
  3073.     //   605: fmul
  3074.     //   606: f2i
  3075.     //   607: istore 15
  3076.     //   609: aload_0
  3077.     //   610: invokevirtual 2168    com/android/server/PowerManagerService:getStayOnConditionsLocked    ()I
  3078.     //   613: istore 25
  3079.     //   615: iload 25
  3080.     //   617: ifeq +22 -> 639
  3081.     //   620: aload_0
  3082.     //   621: getfield 891  com/android/server/PowerManagerService:mBatteryService  Lcom/android/server/BatteryService;
  3083.     //   624: iload 25
  3084.     //   626: invokevirtual 2171    com/android/server/BatteryService:isPowered (I)Z
  3085.     //   629: ifeq +10 -> 639
  3086.     //   632: aload_0
  3087.     //   633: invokestatic 1242 android/os/SystemClock:elapsedRealtime  ()J
  3088.     //   636: putfield 2065 com/android/server/PowerManagerService:mScreenOffTime   J
  3089.     //   639: aload_0
  3090.     //   640: getfield 1591 com/android/server/PowerManagerService:mScreenBrightnessDim I
  3091.     //   643: istore 14
  3092.     //   645: goto -367 -> 278
  3093.     //   648: ldc_w 2165
  3094.     //   651: fload 24
  3095.     //   653: fmul
  3096.     //   654: f2i
  3097.     //   655: istore 15
  3098.     //   657: goto -48 -> 609
  3099.     //   660: astore 19
  3100.     //   662: lload 16
  3101.     //   664: invokestatic 755  android/os/Binder:restoreCallingIdentity    (J)V
  3102.     //   667: goto -352 -> 315
  3103.     //   670: astore 18
  3104.     //   672: lload 16
  3105.     //   674: invokestatic 755  android/os/Binder:restoreCallingIdentity    (J)V
  3106.     //   677: aload 18
  3107.     //   679: athrow
  3108.     //
  3109.     // Exception table:
  3110.     //   from   to  target  type
  3111.     //   299    310 660 android/os/RemoteException
  3112.     //   299    310 670 finally
  3113.   }
  3114.  
  3115.   private void updateNativePowerStateLocked()
  3116.   {
  3117.     boolean bool1 = true;
  3118.     boolean bool2;
  3119.     if (!this.mHeadless)
  3120.     {
  3121.       if ((0x1 & this.mPowerState) == 0)
  3122.         break label37;
  3123.       bool2 = bool1;
  3124.       if ((0x3 & this.mPowerState) != 3)
  3125.         break label42;
  3126.     }
  3127.     while (true)
  3128.     {
  3129.       nativeSetPowerState(bool2, bool1);
  3130.       return;
  3131.       label37: bool2 = false;
  3132.       break;
  3133.       label42: bool1 = false;
  3134.     }
  3135.   }
  3136.  
  3137.   private void updateSettingsValues()
  3138.   {
  3139.     this.mShortKeylightDelay = Settings.Secure.getInt(this.mContext.getContentResolver(), "short_keylight_delay_ms", 6000);
  3140.     if (this.mIsDeviceLockTime)
  3141.     {
  3142.       this.mDeviceLockTimeoutSetting = Settings.Secure.getInt(this.mContext.getContentResolver(), "lock_screen_lock_after_timeout", -1);
  3143.       Slog.i("PowerManagerService", "ATT: updateSettingsValues : update : mDeviceLockTime : " + this.mDeviceLockTimeoutSetting);
  3144.       setScreenOffTimeoutsLocked();
  3145.     }
  3146.   }
  3147.  
  3148.   private void updateWakeLockLocked()
  3149.   {
  3150.     int i = getStayOnConditionsLocked();
  3151.     if ((i != 0) && (this.mBatteryService.isPowered(i)))
  3152.     {
  3153.       this.mStayOnWhilePluggedInScreenDimLock.acquire();
  3154.       this.mStayOnWhilePluggedInPartialLock.acquire();
  3155.       return;
  3156.     }
  3157.     this.mStayOnWhilePluggedInScreenDimLock.release();
  3158.     this.mStayOnWhilePluggedInPartialLock.release();
  3159.   }
  3160.  
  3161.   // ERROR //
  3162.   private void userActivity(long paramLong1, long paramLong2, boolean paramBoolean1, int paramInt, boolean paramBoolean2, boolean paramBoolean3)
  3163.   {
  3164.     // Byte code:
  3165.     //   0: iconst_1
  3166.     //   1: aload_0
  3167.     //   2: getfield 566    com/android/server/PowerManagerService:mPokey   I
  3168.     //   5: iand
  3169.     //   6: ifeq +47 -> 53
  3170.     //   9: iload 6
  3171.     //   11: iconst_2
  3172.     //   12: if_icmpne +41 -> 53
  3173.     //   15: ldc 89
  3174.     //   17: new 831    java/lang/StringBuilder
  3175.     //   20: dup
  3176.     //   21: invokespecial 832  java/lang/StringBuilder:<init>  ()V
  3177.     //   24: ldc_w 2195
  3178.     //   27: invokevirtual 838  java/lang/StringBuilder:append  (Ljava/lang/String;)Ljava/lang/StringBuilder;
  3179.     //   30: aload_0
  3180.     //   31: getfield 566   com/android/server/PowerManagerService:mPokey   I
  3181.     //   34: invokestatic 1957  java/lang/Integer:toHexString   (I)Ljava/lang/String;
  3182.     //   37: invokevirtual 838  java/lang/StringBuilder:append  (Ljava/lang/String;)Ljava/lang/StringBuilder;
  3183.     //   40: invokevirtual 843  java/lang/StringBuilder:toString    ()Ljava/lang/String;
  3184.     //   43: invokestatic 1214  android/util/Slog:d (Ljava/lang/String;Ljava/lang/String;)I
  3185.     //   46: pop
  3186.     //   47: aload_0
  3187.     //   48: aconst_null
  3188.     //   49: putfield 630   com/android/server/PowerManagerService:mUserActivityReason  Ljava/lang/String;
  3189.     //   52: return
  3190.     //   53: aload_0
  3191.     //   54: getfield 502   com/android/server/PowerManagerService:mLocks   Lcom/android/server/PowerManagerService$LockList;
  3192.     //   57: astore 9
  3193.     //   59: aload 9
  3194.     //   61: monitorenter
  3195.     //   62: aload_0
  3196.     //   63: getfield 622   com/android/server/PowerManagerService:mAutoPowerOffTimeoutSetting  I
  3197.     //   66: ifle +61 -> 127
  3198.     //   69: iload 6
  3199.     //   71: ifne +10 -> 81
  3200.     //   74: aload_0
  3201.     //   75: getfield 626   com/android/server/PowerManagerService:mPowerIsChanged  Z
  3202.     //   78: ifeq +49 -> 127
  3203.     //   81: aload_0
  3204.     //   82: getfield 1010  com/android/server/PowerManagerService:mHandler Landroid/os/Handler;
  3205.     //   85: aload_0
  3206.     //   86: getfield 680   com/android/server/PowerManagerService:mUpdateAutoPowerOffTimeTask  Ljava/lang/Runnable;
  3207.     //   89: invokevirtual 1263 android/os/Handler:removeCallbacks  (Ljava/lang/Runnable;)V
  3208.     //   92: aload_0
  3209.     //   93: iconst_0
  3210.     //   94: putfield 626   com/android/server/PowerManagerService:mPowerIsChanged  Z
  3211.     //   97: ldc2_w 2196
  3212.     //   100: invokestatic 1488 android/os/SystemClock:uptimeMillis ()J
  3213.     //   103: ladd
  3214.     //   104: lstore 11
  3215.     //   106: aload_0
  3216.     //   107: getfield 1010 com/android/server/PowerManagerService:mHandler Landroid/os/Handler;
  3217.     //   110: aload_0
  3218.     //   111: getfield 680  com/android/server/PowerManagerService:mUpdateAutoPowerOffTimeTask  Ljava/lang/Runnable;
  3219.     //   114: lload 11
  3220.     //   116: invokevirtual 2104    android/os/Handler:postAtTime   (Ljava/lang/Runnable;J)Z
  3221.     //   119: pop
  3222.     //   120: aload_0
  3223.     //   121: getfield 1014 com/android/server/PowerManagerService:mAutoPowerOffPartialLock Lcom/android/server/PowerManagerService$UnsynchronizedWakeLock;
  3224.     //   124: invokevirtual 1973    com/android/server/PowerManagerService$UnsynchronizedWakeLock:acquire   ()V
  3225.     //   127: aload_0
  3226.     //   128: invokespecial 904 com/android/server/PowerManagerService:isScreenTurningOffLocked ()Z
  3227.     //   131: ifeq +24 -> 155
  3228.     //   134: ldc 89
  3229.     //   136: ldc_w 2199
  3230.     //   139: invokestatic 1214 android/util/Slog:d (Ljava/lang/String;Ljava/lang/String;)I
  3231.     //   142: pop
  3232.     //   143: aload 9
  3233.     //   145: monitorexit
  3234.     //   146: return
  3235.     //   147: astore 10
  3236.     //   149: aload 9
  3237.     //   151: monitorexit
  3238.     //   152: aload 10
  3239.     //   154: athrow
  3240.     //   155: iload 8
  3241.     //   157: ifeq +56 -> 213
  3242.     //   160: iconst_1
  3243.     //   161: aload_0
  3244.     //   162: getfield 757  com/android/server/PowerManagerService:mPowerState  I
  3245.     //   165: iand
  3246.     //   166: ifne +47 -> 213
  3247.     //   169: ldc 89
  3248.     //   171: new 831   java/lang/StringBuilder
  3249.     //   174: dup
  3250.     //   175: invokespecial 832 java/lang/StringBuilder:<init>  ()V
  3251.     //   178: ldc_w 2201
  3252.     //   181: invokevirtual 838 java/lang/StringBuilder:append  (Ljava/lang/String;)Ljava/lang/StringBuilder;
  3253.     //   184: iload 8
  3254.     //   186: invokevirtual 887 java/lang/StringBuilder:append  (Z)Ljava/lang/StringBuilder;
  3255.     //   189: ldc_w 2203
  3256.     //   192: invokevirtual 838 java/lang/StringBuilder:append  (Ljava/lang/String;)Ljava/lang/StringBuilder;
  3257.     //   195: aload_0
  3258.     //   196: getfield 757  com/android/server/PowerManagerService:mPowerState  I
  3259.     //   199: invokevirtual 1203    java/lang/StringBuilder:append  (I)Ljava/lang/StringBuilder;
  3260.     //   202: invokevirtual 843 java/lang/StringBuilder:toString    ()Ljava/lang/String;
  3261.     //   205: invokestatic 1214 android/util/Slog:d (Ljava/lang/String;Ljava/lang/String;)I
  3262.     //   208: pop
  3263.     //   209: aload 9
  3264.     //   211: monitorexit
  3265.     //   212: return
  3266.     //   213: aload_0
  3267.     //   214: getfield 488  com/android/server/PowerManagerService:mProximitySensorActive   Z
  3268.     //   217: ifeq +15 -> 232
  3269.     //   220: aload_0
  3270.     //   221: getfield 484  com/android/server/PowerManagerService:mProximityWakeLockCount  I
  3271.     //   224: ifne +8 -> 232
  3272.     //   227: aload_0
  3273.     //   228: iconst_0
  3274.     //   229: putfield 488  com/android/server/PowerManagerService:mProximitySensorActive   Z
  3275.     //   232: aload_0
  3276.     //   233: getfield 495  com/android/server/PowerManagerService:mLastEventTime   J
  3277.     //   236: lload_1
  3278.     //   237: lcmp
  3279.     //   238: ifle +8 -> 246
  3280.     //   241: iload 7
  3281.     //   243: ifeq +556 -> 799
  3282.     //   246: aload_0
  3283.     //   247: lload_1
  3284.     //   248: putfield 495  com/android/server/PowerManagerService:mLastEventTime   J
  3285.     //   251: aload_0
  3286.     //   252: getfield 482  com/android/server/PowerManagerService:mUserActivityAllowed Z
  3287.     //   255: ifeq +597 -> 852
  3288.     //   258: aload_0
  3289.     //   259: getfield 488  com/android/server/PowerManagerService:mProximitySensorActive   Z
  3290.     //   262: ifeq +6 -> 268
  3291.     //   265: goto +587 -> 852
  3292.     //   268: aload_0
  3293.     //   269: getfield 759  com/android/server/PowerManagerService:mUserState   I
  3294.     //   272: istore 15
  3295.     //   274: aload_0
  3296.     //   275: getfield 980  com/android/server/PowerManagerService:mButtonOffTimeoutSetting I
  3297.     //   278: ifeq +582 -> 860
  3298.     //   281: aload_0
  3299.     //   282: getfield 980  com/android/server/PowerManagerService:mButtonOffTimeoutSetting I
  3300.     //   285: iconst_m1
  3301.     //   286: if_icmpeq +574 -> 860
  3302.     //   289: aload_0
  3303.     //   290: getfield 980  com/android/server/PowerManagerService:mButtonOffTimeoutSetting I
  3304.     //   293: bipush 254
  3305.     //   295: if_icmpeq +565 -> 860
  3306.     //   298: aload_0
  3307.     //   299: getfield 980  com/android/server/PowerManagerService:mButtonOffTimeoutSetting I
  3308.     //   302: bipush 253
  3309.     //   304: if_icmpne +297 -> 601
  3310.     //   307: goto +553 -> 860
  3311.     //   310: iload 6
  3312.     //   312: iconst_2
  3313.     //   313: if_icmpne +314 -> 627
  3314.     //   316: iload 16
  3315.     //   318: ifne +309 -> 627
  3316.     //   321: getstatic 413 com/android/server/PowerManagerService:mIsNorthAmericaSalesCode Z
  3317.     //   324: ifeq +290 -> 614
  3318.     //   327: aload_0
  3319.     //   328: getfield 480  com/android/server/PowerManagerService:mKeyboardVisible Z
  3320.     //   331: ifeq +276 -> 607
  3321.     //   334: bipush 15
  3322.     //   336: istore 27
  3323.     //   338: aload_0
  3324.     //   339: iload 27
  3325.     //   341: putfield 759  com/android/server/PowerManagerService:mUserState   I
  3326.     //   344: aload_0
  3327.     //   345: invokevirtual 1600    com/android/server/PowerManagerService:isScreenOn   ()Z
  3328.     //   348: ifne +19 -> 367
  3329.     //   351: iload 16
  3330.     //   353: ifne +14 -> 367
  3331.     //   356: aload_0
  3332.     //   357: bipush 7
  3333.     //   359: aload_0
  3334.     //   360: getfield 759  com/android/server/PowerManagerService:mUserState   I
  3335.     //   363: ior
  3336.     //   364: putfield 759  com/android/server/PowerManagerService:mUserState   I
  3337.     //   367: getstatic 413 com/android/server/PowerManagerService:mIsNorthAmericaSalesCode Z
  3338.     //   370: ifeq +356 -> 726
  3339.     //   373: iload 16
  3340.     //   375: ifne +15 -> 390
  3341.     //   378: iload 6
  3342.     //   380: iconst_3
  3343.     //   381: if_icmpeq +9 -> 390
  3344.     //   384: iload 6
  3345.     //   386: iconst_1
  3346.     //   387: if_icmpne +318 -> 705
  3347.     //   390: invokestatic 1606 android/os/Binder:getCallingUid ()I
  3348.     //   393: istore 17
  3349.     //   395: invokestatic 738  android/os/Binder:clearCallingIdentity  ()J
  3350.     //   398: lstore 18
  3351.     //   400: aload_0
  3352.     //   401: getfield 2046 com/android/server/PowerManagerService:mBatteryStats    Lcom/android/internal/app/IBatteryStats;
  3353.     //   404: iload 17
  3354.     //   406: iload 6
  3355.     //   408: invokeinterface 2206 3 0
  3356.     //   413: lload 18
  3357.     //   415: invokestatic 755  android/os/Binder:restoreCallingIdentity    (J)V
  3358.     //   418: aload_0
  3359.     //   419: invokevirtual 1600    com/android/server/PowerManagerService:isScreenOn   ()Z
  3360.     //   422: ifne +78 -> 500
  3361.     //   425: invokestatic 1603 android/os/Binder:getCallingPid ()I
  3362.     //   428: istore 23
  3363.     //   430: aload_0
  3364.     //   431: getfield 630  com/android/server/PowerManagerService:mUserActivityReason  Ljava/lang/String;
  3365.     //   434: ifnonnull +15 -> 449
  3366.     //   437: iload 6
  3367.     //   439: ifeq +350 -> 789
  3368.     //   442: aload_0
  3369.     //   443: ldc_w 2208
  3370.     //   446: putfield 630  com/android/server/PowerManagerService:mUserActivityReason  Ljava/lang/String;
  3371.     //   449: ldc 89
  3372.     //   451: new 831   java/lang/StringBuilder
  3373.     //   454: dup
  3374.     //   455: invokespecial 832 java/lang/StringBuilder:<init>  ()V
  3375.     //   458: ldc_w 2210
  3376.     //   461: invokevirtual 838 java/lang/StringBuilder:append  (Ljava/lang/String;)Ljava/lang/StringBuilder;
  3377.     //   464: aload_0
  3378.     //   465: getfield 630  com/android/server/PowerManagerService:mUserActivityReason  Ljava/lang/String;
  3379.     //   468: invokevirtual 838 java/lang/StringBuilder:append  (Ljava/lang/String;)Ljava/lang/StringBuilder;
  3380.     //   471: ldc_w 1834
  3381.     //   474: invokevirtual 838 java/lang/StringBuilder:append  (Ljava/lang/String;)Ljava/lang/StringBuilder;
  3382.     //   477: iload 17
  3383.     //   479: invokevirtual 1203    java/lang/StringBuilder:append  (I)Ljava/lang/StringBuilder;
  3384.     //   482: ldc_w 1929
  3385.     //   485: invokevirtual 838 java/lang/StringBuilder:append  (Ljava/lang/String;)Ljava/lang/StringBuilder;
  3386.     //   488: iload 23
  3387.     //   490: invokevirtual 1203    java/lang/StringBuilder:append  (I)Ljava/lang/StringBuilder;
  3388.     //   493: invokevirtual 843 java/lang/StringBuilder:toString    ()Ljava/lang/String;
  3389.     //   496: invokestatic 1214 android/util/Slog:d (Ljava/lang/String;Ljava/lang/String;)I
  3390.     //   499: pop
  3391.     //   500: iload 15
  3392.     //   502: ifne +35 -> 537
  3393.     //   505: ldc 89
  3394.     //   507: new 831   java/lang/StringBuilder
  3395.     //   510: dup
  3396.     //   511: invokespecial 832 java/lang/StringBuilder:<init>  ()V
  3397.     //   514: ldc_w 2212
  3398.     //   517: invokevirtual 838 java/lang/StringBuilder:append  (Ljava/lang/String;)Ljava/lang/StringBuilder;
  3399.     //   520: aload_0
  3400.     //   521: getfield 759  com/android/server/PowerManagerService:mUserState   I
  3401.     //   524: invokestatic 1957 java/lang/Integer:toHexString   (I)Ljava/lang/String;
  3402.     //   527: invokevirtual 838 java/lang/StringBuilder:append  (Ljava/lang/String;)Ljava/lang/StringBuilder;
  3403.     //   530: invokevirtual 843 java/lang/StringBuilder:toString    ()Ljava/lang/String;
  3404.     //   533: invokestatic 1214 android/util/Slog:d (Ljava/lang/String;Ljava/lang/String;)I
  3405.     //   536: pop
  3406.     //   537: aload_0
  3407.     //   538: aload_0
  3408.     //   539: getfield 502  com/android/server/PowerManagerService:mLocks   Lcom/android/server/PowerManagerService$LockList;
  3409.     //   542: invokevirtual 2215    com/android/server/PowerManagerService$LockList:reactivateScreenLocksLocked ()I
  3410.     //   545: putfield 1036 com/android/server/PowerManagerService:mWakeLockState   I
  3411.     //   548: aload_0
  3412.     //   549: iconst_4
  3413.     //   550: invokespecial 1052    com/android/server/PowerManagerService:printCurLock (I)V
  3414.     //   553: aload_0
  3415.     //   554: aload_0
  3416.     //   555: getfield 759  com/android/server/PowerManagerService:mUserState   I
  3417.     //   558: aload_0
  3418.     //   559: getfield 1036 com/android/server/PowerManagerService:mWakeLockState   I
  3419.     //   562: ior
  3420.     //   563: iload 5
  3421.     //   565: iconst_2
  3422.     //   566: invokespecial 1634    com/android/server/PowerManagerService:setPowerState    (IZI)V
  3423.     //   569: aload_0
  3424.     //   570: lload_1
  3425.     //   571: lload_3
  3426.     //   572: iconst_3
  3427.     //   573: invokespecial 1064    com/android/server/PowerManagerService:setTimeoutLocked (JJI)V
  3428.     //   576: aload_0
  3429.     //   577: aconst_null
  3430.     //   578: putfield 630  com/android/server/PowerManagerService:mUserActivityReason  Ljava/lang/String;
  3431.     //   581: aload 9
  3432.     //   583: monitorexit
  3433.     //   584: aload_0
  3434.     //   585: getfield 2034 com/android/server/PowerManagerService:mPolicy  Landroid/view/WindowManagerPolicy;
  3435.     //   588: ifnull -536 -> 52
  3436.     //   591: aload_0
  3437.     //   592: getfield 2034 com/android/server/PowerManagerService:mPolicy  Landroid/view/WindowManagerPolicy;
  3438.     //   595: invokeinterface 2217 1 0
  3439.     //   600: return
  3440.     //   601: iconst_0
  3441.     //   602: istore 16
  3442.     //   604: goto -294 -> 310
  3443.     //   607: bipush 7
  3444.     //   609: istore 27
  3445.     //   611: goto -273 -> 338
  3446.     //   614: aload_0
  3447.     //   615: iconst_3
  3448.     //   616: aload_0
  3449.     //   617: getfield 759  com/android/server/PowerManagerService:mUserState   I
  3450.     //   620: ior
  3451.     //   621: putfield 759  com/android/server/PowerManagerService:mUserState   I
  3452.     //   624: goto -280 -> 344
  3453.     //   627: iload 6
  3454.     //   629: iconst_3
  3455.     //   630: if_icmpne +22 -> 652
  3456.     //   633: iload 16
  3457.     //   635: ifne +17 -> 652
  3458.     //   638: aload_0
  3459.     //   639: bipush 7
  3460.     //   641: aload_0
  3461.     //   642: getfield 759  com/android/server/PowerManagerService:mUserState   I
  3462.     //   645: ior
  3463.     //   646: putfield 759  com/android/server/PowerManagerService:mUserState   I
  3464.     //   649: goto -305 -> 344
  3465.     //   652: iload 6
  3466.     //   654: iconst_1
  3467.     //   655: if_icmpne +37 -> 692
  3468.     //   658: iload 16
  3469.     //   660: ifne +32 -> 692
  3470.     //   663: aload_0
  3471.     //   664: getfield 759  com/android/server/PowerManagerService:mUserState   I
  3472.     //   667: istore 25
  3473.     //   669: aload_0
  3474.     //   670: getfield 480  com/android/server/PowerManagerService:mKeyboardVisible Z
  3475.     //   673: ifeq +193 -> 866
  3476.     //   676: bipush 11
  3477.     //   678: istore 26
  3478.     //   680: aload_0
  3479.     //   681: iload 26
  3480.     //   683: iload 25
  3481.     //   685: ior
  3482.     //   686: putfield 759  com/android/server/PowerManagerService:mUserState   I
  3483.     //   689: goto -345 -> 344
  3484.     //   692: aload_0
  3485.     //   693: iconst_3
  3486.     //   694: aload_0
  3487.     //   695: getfield 759  com/android/server/PowerManagerService:mUserState   I
  3488.     //   698: ior
  3489.     //   699: putfield 759  com/android/server/PowerManagerService:mUserState   I
  3490.     //   702: goto -358 -> 344
  3491.     //   705: aload_0
  3492.     //   706: getfield 661  com/android/server/PowerManagerService:mIsSipVisible    Z
  3493.     //   709: ifeq -319 -> 390
  3494.     //   712: aload_0
  3495.     //   713: bipush 243
  3496.     //   715: aload_0
  3497.     //   716: getfield 759  com/android/server/PowerManagerService:mUserState   I
  3498.     //   719: iand
  3499.     //   720: putfield 759  com/android/server/PowerManagerService:mUserState   I
  3500.     //   723: goto -333 -> 390
  3501.     //   726: aload_0
  3502.     //   727: getfield 980  com/android/server/PowerManagerService:mButtonOffTimeoutSetting I
  3503.     //   730: sipush 1500
  3504.     //   733: if_icmpne -343 -> 390
  3505.     //   736: iload 6
  3506.     //   738: iconst_3
  3507.     //   739: if_icmpeq -349 -> 390
  3508.     //   742: iload 6
  3509.     //   744: iconst_1
  3510.     //   745: if_icmpeq -355 -> 390
  3511.     //   748: aload_0
  3512.     //   749: getfield 661  com/android/server/PowerManagerService:mIsSipVisible    Z
  3513.     //   752: ifeq -362 -> 390
  3514.     //   755: aload_0
  3515.     //   756: bipush 243
  3516.     //   758: aload_0
  3517.     //   759: getfield 759  com/android/server/PowerManagerService:mUserState   I
  3518.     //   762: iand
  3519.     //   763: putfield 759  com/android/server/PowerManagerService:mUserState   I
  3520.     //   766: goto -376 -> 390
  3521.     //   769: astore 21
  3522.     //   771: lload 18
  3523.     //   773: invokestatic 755  android/os/Binder:restoreCallingIdentity    (J)V
  3524.     //   776: goto -358 -> 418
  3525.     //   779: astore 20
  3526.     //   781: lload 18
  3527.     //   783: invokestatic 755  android/os/Binder:restoreCallingIdentity    (J)V
  3528.     //   786: aload 20
  3529.     //   788: athrow
  3530.     //   789: aload_0
  3531.     //   790: ldc_w 2219
  3532.     //   793: putfield 630  com/android/server/PowerManagerService:mUserActivityReason  Ljava/lang/String;
  3533.     //   796: goto -347 -> 449
  3534.     //   799: ldc 89
  3535.     //   801: new 831   java/lang/StringBuilder
  3536.     //   804: dup
  3537.     //   805: invokespecial 832 java/lang/StringBuilder:<init>  ()V
  3538.     //   808: ldc_w 2221
  3539.     //   811: invokevirtual 838 java/lang/StringBuilder:append  (Ljava/lang/String;)Ljava/lang/StringBuilder;
  3540.     //   814: aload_0
  3541.     //   815: getfield 495  com/android/server/PowerManagerService:mLastEventTime   J
  3542.     //   818: invokevirtual 1641    java/lang/StringBuilder:append  (J)Ljava/lang/StringBuilder;
  3543.     //   821: ldc_w 1643
  3544.     //   824: invokevirtual 838 java/lang/StringBuilder:append  (Ljava/lang/String;)Ljava/lang/StringBuilder;
  3545.     //   827: lload_1
  3546.     //   828: invokevirtual 1641    java/lang/StringBuilder:append  (J)Ljava/lang/StringBuilder;
  3547.     //   831: ldc_w 2223
  3548.     //   834: invokevirtual 838 java/lang/StringBuilder:append  (Ljava/lang/String;)Ljava/lang/StringBuilder;
  3549.     //   837: iload 7
  3550.     //   839: invokevirtual 887 java/lang/StringBuilder:append  (Z)Ljava/lang/StringBuilder;
  3551.     //   842: invokevirtual 843 java/lang/StringBuilder:toString    ()Ljava/lang/String;
  3552.     //   845: invokestatic 1279 android/util/Slog:e (Ljava/lang/String;Ljava/lang/String;)I
  3553.     //   848: pop
  3554.     //   849: goto -273 -> 576
  3555.     //   852: iload 7
  3556.     //   854: ifeq -278 -> 576
  3557.     //   857: goto -589 -> 268
  3558.     //   860: iconst_1
  3559.     //   861: istore 16
  3560.     //   863: goto -553 -> 310
  3561.     //   866: iconst_3
  3562.     //   867: istore 26
  3563.     //   869: goto -189 -> 680
  3564.     //
  3565.     // Exception table:
  3566.     //   from   to  target  type
  3567.     //   62 69  147 finally
  3568.     //   74 81  147 finally
  3569.     //   81 127 147 finally
  3570.     //   127    146 147 finally
  3571.     //   149    152 147 finally
  3572.     //   160    212 147 finally
  3573.     //   213    232 147 finally
  3574.     //   232    241 147 finally
  3575.     //   246    265 147 finally
  3576.     //   268    307 147 finally
  3577.     //   321    334 147 finally
  3578.     //   338    344 147 finally
  3579.     //   344    351 147 finally
  3580.     //   356    367 147 finally
  3581.     //   367    373 147 finally
  3582.     //   390    400 147 finally
  3583.     //   413    418 147 finally
  3584.     //   418    437 147 finally
  3585.     //   442    449 147 finally
  3586.     //   449    500 147 finally
  3587.     //   505    537 147 finally
  3588.     //   537    576 147 finally
  3589.     //   576    584 147 finally
  3590.     //   614    624 147 finally
  3591.     //   638    649 147 finally
  3592.     //   663    676 147 finally
  3593.     //   680    689 147 finally
  3594.     //   692    702 147 finally
  3595.     //   705    723 147 finally
  3596.     //   726    736 147 finally
  3597.     //   748    766 147 finally
  3598.     //   771    776 147 finally
  3599.     //   781    789 147 finally
  3600.     //   789    796 147 finally
  3601.     //   799    849 147 finally
  3602.     //   400    413 769 android/os/RemoteException
  3603.     //   400    413 779 finally
  3604.   }
  3605.  
  3606.   public void acquireDVFSLock(int paramInt1, int paramInt2, IBinder paramIBinder, String paramString)
  3607.   {
  3608.     int i = Binder.getCallingUid();
  3609.     int j = Binder.getCallingPid();
  3610.     this.mContext.enforceCallingOrSelfPermission("android.permission.DEVICE_POWER", null);
  3611.     long l = Binder.clearCallingIdentity();
  3612.     try
  3613.     {
  3614.       synchronized (this.mDVFSLocks)
  3615.       {
  3616.         acquireDVFSLockLocked(paramInt1, paramInt2, paramIBinder, i, j, paramString);
  3617.         return;
  3618.       }
  3619.     }
  3620.     finally
  3621.     {
  3622.       Binder.restoreCallingIdentity(l);
  3623.     }
  3624.   }
  3625.  
  3626.   public void acquirePersistentDVFSLock(int paramInt1, int paramInt2, int paramInt3, String paramString)
  3627.   {
  3628.     int i = Binder.getCallingUid();
  3629.     int j = Binder.getCallingPid();
  3630.     this.mContext.enforceCallingOrSelfPermission("android.permission.DEVICE_POWER", null);
  3631.     long l = Binder.clearCallingIdentity();
  3632.     try
  3633.     {
  3634.       synchronized (this.mDVFSLocks)
  3635.       {
  3636.         if ((paramInt3 & this.mPersistentDVFSLocksInfo) == 0)
  3637.         {
  3638.           Binder localBinder = new Binder();
  3639.           Slog.d("PowerManagerService", "acquirePersistentDVFSLock : prev mPersistentDVFSLocksInfo : 0x" + Integer.toHexString(this.mPersistentDVFSLocksInfo) + "  type : " + paramInt1 + "  frequency : " + paramInt2 + "  callingId : 0x" + Integer.toHexString(paramInt3) + "  token : " + localBinder + " tag : " + paramString);
  3640.           this.mMapPersistentDVFSLock.put(Integer.valueOf(paramInt3), localBinder);
  3641.           acquireDVFSLockLocked(paramInt1, paramInt2, localBinder, i, j, paramString);
  3642.           this.mPersistentDVFSLocksInfo = (paramInt3 | this.mPersistentDVFSLocksInfo);
  3643.           return;
  3644.         }
  3645.         Slog.e("PowerManagerService", "acquirePersistentDVFSLock : this callingId already acquired PersistentDVFSLock " + paramInt3);
  3646.       }
  3647.     }
  3648.     finally
  3649.     {
  3650.       Binder.restoreCallingIdentity(l);
  3651.     }
  3652.   }
  3653.  
  3654.   public void acquireWakeLock(int paramInt, IBinder paramIBinder, String paramString, WorkSource paramWorkSource)
  3655.   {
  3656.     int i = Binder.getCallingUid();
  3657.     int j = Binder.getCallingPid();
  3658.     if (i != Process.myUid())
  3659.       this.mContext.enforceCallingOrSelfPermission("android.permission.WAKE_LOCK", null);
  3660.     if (paramWorkSource != null)
  3661.       enforceWakeSourcePermission(i, j);
  3662.     long l = Binder.clearCallingIdentity();
  3663.     try
  3664.     {
  3665.       synchronized (this.mLocks)
  3666.       {
  3667.         acquireWakeLockLocked(paramInt, paramIBinder, i, j, paramString, paramWorkSource);
  3668.         return;
  3669.       }
  3670.     }
  3671.     finally
  3672.     {
  3673.       Binder.restoreCallingIdentity(l);
  3674.     }
  3675.   }
  3676.  
  3677.   public void acquireWakeLockLocked(int paramInt1, IBinder paramIBinder, int paramInt2, int paramInt3, String paramString, WorkSource paramWorkSource)
  3678.   {
  3679.     if ((paramWorkSource != null) && (paramWorkSource.size() == 0))
  3680.       paramWorkSource = null;
  3681.     int i = this.mLocks.getIndex(paramIBinder);
  3682.     WakeLock localWakeLock;
  3683.     label159: int j;
  3684.     boolean bool;
  3685.     WorkSource localWorkSource;
  3686.     if (i < 0)
  3687.     {
  3688.       localWakeLock = new WakeLock(paramInt1, paramIBinder, paramString, paramInt2, paramInt3);
  3689.       switch (0x3F & localWakeLock.flags)
  3690.       {
  3691.       default:
  3692.         Slog.e("PowerManagerService", "bad wakelock type for lock '" + paramString + "' " + " flags=" + paramInt1);
  3693.         return;
  3694.       case 26:
  3695.         localWakeLock.minState = 15;
  3696.       case 1:
  3697.       case 32:
  3698.         this.mLocks.addLock(localWakeLock);
  3699.         if (paramWorkSource != null)
  3700.           localWakeLock.ws = new WorkSource(paramWorkSource);
  3701.         j = 1;
  3702.         bool = false;
  3703.         localWorkSource = null;
  3704.         localWakeLock.acqTime = SystemClock.elapsedRealtime();
  3705.         if (isScreenLock(paramInt1))
  3706.           if ((paramInt1 & 0x3F) == 32)
  3707.           {
  3708.             this.mProximityWakeLockCount = (1 + this.mProximityWakeLockCount);
  3709.             Slog.d("PowerManagerService", "acquireWakeLock : PROXIMITY_SCREEN_OFF_WAKE_LOCK : mProximityWakeLockCount : " + this.mProximityWakeLockCount + "  tag=" + paramString + " uid=" + paramInt2 + " pid=" + paramInt3);
  3710.             if (this.mProximityWakeLockCount == 1)
  3711.               enableProximityLockLocked();
  3712.           }
  3713.         break;
  3714.       case 10:
  3715.       case 6:
  3716.       }
  3717.     }
  3718.     while (true)
  3719.     {
  3720.       if (bool)
  3721.         noteStopWakeLocked(localWakeLock, localWorkSource);
  3722.       if ((j == 0) && (!bool))
  3723.         break;
  3724.       noteStartWakeLocked(localWakeLock, paramWorkSource);
  3725.       return;
  3726.       localWakeLock.minState = 3;
  3727.       break label159;
  3728.       localWakeLock.minState = 1;
  3729.       break label159;
  3730.       localWakeLock = (WakeLock)this.mLocks.get(i);
  3731.       localWorkSource = localWakeLock.ws;
  3732.       if (localWorkSource != null)
  3733.         if (paramWorkSource == null)
  3734.         {
  3735.           localWakeLock.ws = null;
  3736.           bool = true;
  3737.         }
  3738.       while (true)
  3739.       {
  3740.         j = 0;
  3741.         if (!bool)
  3742.           break;
  3743.         localWakeLock.ws = new WorkSource(paramWorkSource);
  3744.         j = 0;
  3745.         break;
  3746.         bool = localWorkSource.diff(paramWorkSource);
  3747.         continue;
  3748.         if (paramWorkSource != null)
  3749.           bool = true;
  3750.         else
  3751.           bool = false;
  3752.       }
  3753.       label507: int k;
  3754.       label529: StringBuilder localStringBuilder;
  3755.       if ((0x10000000 & localWakeLock.flags) != 0)
  3756.       {
  3757.         this.mWakeLockState = this.mLocks.reactivateScreenLocksLocked();
  3758.         if (((0x1 & this.mWakeLockState) != 0) && (this.mProximitySensorActive) && (this.mProximityWakeLockCount == 0))
  3759.           this.mProximitySensorActive = false;
  3760.         if ((isScreenOn()) || ((this.mWakeLockState | this.mUserState) == 0))
  3761.           break label649;
  3762.         k = 1;
  3763.         localStringBuilder = new StringBuilder();
  3764.         if (k == 0)
  3765.           break label655;
  3766.       }
  3767.       label649: label655: for (String str = "Screen__On : "; ; str = "")
  3768.       {
  3769.         Slog.d("PowerManagerService", str + "acquireWakeLock flags=0x" + Integer.toHexString(paramInt1) + " tag=" + paramString + " uid=" + paramInt2 + " pid=" + paramInt3);
  3770.         setPowerState(this.mWakeLockState | this.mUserState);
  3771.         break;
  3772.         this.mWakeLockState = ((this.mUserState | this.mWakeLockState) & this.mLocks.gatherState());
  3773.         break label507;
  3774.         k = 0;
  3775.         break label529;
  3776.       }
  3777.       if ((paramInt1 & 0x3F) == 1)
  3778.       {
  3779.         if (j != 0)
  3780.         {
  3781.           this.mPartialCount = (1 + this.mPartialCount);
  3782.           Object[] arrayOfObject = new Object[2];
  3783.           arrayOfObject[0] = Integer.valueOf(1);
  3784.           arrayOfObject[1] = paramString;
  3785.           EventLog.writeEvent(2729, arrayOfObject);
  3786.           if (this.mPartialCount != 1);
  3787.         }
  3788.         if (!this.mForceDisableWakeLock)
  3789.           nativeAcquireWakeLock(1, "PowerManagerService");
  3790.         else
  3791.           Slog.d("PowerManagerService", "acquireWakeLockLocked : mForceDisableWakeLock : NOT acquired : " + paramString);
  3792.       }
  3793.     }
  3794.   }
  3795.  
  3796.   void bootCompleted()
  3797.   {
  3798.     Slog.d("PowerManagerService", "bootCompleted");
  3799.     synchronized (this.mLocks)
  3800.     {
  3801.       this.mBootCompleted = true;
  3802.       userActivity(SystemClock.uptimeMillis(), false, 1, true);
  3803.       updateWakeLockLocked();
  3804.       this.mLocks.notifyAll();
  3805.       SystemProperties.set("ctl.stop", "powersnd");
  3806.       return;
  3807.     }
  3808.   }
  3809.  
  3810.   public void clearUserActivityTimeout(long paramLong1, long paramLong2)
  3811.   {
  3812.     this.mContext.enforceCallingOrSelfPermission("android.permission.DEVICE_POWER", null);
  3813.     Slog.i("PowerManagerService", "clearUserActivity for " + paramLong2 + "ms from now");
  3814.     this.mUserActivityReason = "clearUserActivityTimeout";
  3815.     userActivity(paramLong1, paramLong2, false, 0, false, false);
  3816.   }
  3817.  
  3818.   public void crash(final String paramString)
  3819.   {
  3820.     this.mContext.enforceCallingOrSelfPermission("android.permission.REBOOT", null);
  3821.     Thread local17 = new Thread("PowerManagerService.crash()")
  3822.     {
  3823.       public void run()
  3824.       {
  3825.         throw new RuntimeException(paramString);
  3826.       }
  3827.     };
  3828.     try
  3829.     {
  3830.       local17.start();
  3831.       local17.join();
  3832.       return;
  3833.     }
  3834.     catch (InterruptedException localInterruptedException)
  3835.     {
  3836.       Log.wtf("PowerManagerService", localInterruptedException);
  3837.     }
  3838.   }
  3839.  
  3840.   public void dump(FileDescriptor paramFileDescriptor, PrintWriter paramPrintWriter, String[] paramArrayOfString)
  3841.   {
  3842.     if (this.mContext.checkCallingOrSelfPermission("android.permission.DUMP") != 0)
  3843.     {
  3844.       paramPrintWriter.println("Permission Denial: can't dump PowerManager from from pid=" + Binder.getCallingPid() + ", uid=" + Binder.getCallingUid());
  3845.       return;
  3846.     }
  3847.     long l1 = SystemClock.uptimeMillis();
  3848.     while (true)
  3849.     {
  3850.       synchronized (this.mLocks)
  3851.       {
  3852.         paramPrintWriter.println("Power Manager State:");
  3853.         paramPrintWriter.println("  mIsPowered=" + this.mIsPowered + " mPowerState=" + this.mPowerState + " mScreenOffTime=" + (SystemClock.elapsedRealtime() - this.mScreenOffTime) + " ms");
  3854.         paramPrintWriter.println("  mPartialCount=" + this.mPartialCount);
  3855.         paramPrintWriter.println("  mWakeLockState=" + dumpPowerState(this.mWakeLockState));
  3856.         paramPrintWriter.println("  mUserState=" + dumpPowerState(this.mUserState));
  3857.         paramPrintWriter.println("  mPowerState=" + dumpPowerState(this.mPowerState));
  3858.         paramPrintWriter.println("  mLocks.gather=" + dumpPowerState(this.mLocks.gatherState()));
  3859.         paramPrintWriter.println("  mNextTimeout=" + this.mNextTimeout + " now=" + l1 + " " + (this.mNextTimeout - l1) / 1000L + "s from now");
  3860.         paramPrintWriter.println("  mDimScreen=" + this.mDimScreen + " mStayOnConditions=" + this.mStayOnConditions + " mPreparingForScreenOn=" + this.mPreparingForScreenOn + " mSkippedScreenOn=" + this.mSkippedScreenOn);
  3861.         paramPrintWriter.println("  mScreenOffReason=" + this.mScreenOffReason + " mUserState=" + this.mUserState);
  3862.         paramPrintWriter.println("  mBroadcastQueue={" + this.mBroadcastQueue[0] + ',' + this.mBroadcastQueue[1] + ',' + this.mBroadcastQueue[2] + "}");
  3863.         paramPrintWriter.println("  mBroadcastWhy={" + this.mBroadcastWhy[0] + ',' + this.mBroadcastWhy[1] + ',' + this.mBroadcastWhy[2] + "}");
  3864.         paramPrintWriter.println("  mPokey=" + this.mPokey + " mPokeAwakeonSet=" + this.mPokeAwakeOnSet);
  3865.         paramPrintWriter.println("  mKeyboardVisible=" + this.mKeyboardVisible + " mUserActivityAllowed=" + this.mUserActivityAllowed);
  3866.         paramPrintWriter.println("  mKeylightDelay=" + this.mKeylightDelay + " mDimDelay=" + this.mDimDelay + " mScreenOffDelay=" + this.mScreenOffDelay);
  3867.         paramPrintWriter.println("  mPreventScreenOn=" + this.mPreventScreenOn + "  mScreenBrightnessOverride=" + this.mScreenBrightnessOverride + "  mButtonBrightnessOverride=" + this.mButtonBrightnessOverride);
  3868.         paramPrintWriter.println("  mScreenOffTimeoutSetting=" + this.mScreenOffTimeoutSetting + " mMaximumScreenOffTimeout=" + this.mMaximumScreenOffTimeout);
  3869.         paramPrintWriter.println("  mButtonOffTimeoutSetting=" + this.mButtonOffTimeoutSetting);
  3870.         paramPrintWriter.println("  mIsSipVisible=" + this.mIsSipVisible);
  3871.         paramPrintWriter.println("  mIsNorthAmericaSalesCode=" + mIsNorthAmericaSalesCode);
  3872.         paramPrintWriter.println("  mLastScreenOnTime=" + this.mLastScreenOnTime);
  3873.         paramPrintWriter.println("  mBroadcastWakeLock=" + this.mBroadcastWakeLock);
  3874.         paramPrintWriter.println("  mStayOnWhilePluggedInScreenDimLock=" + this.mStayOnWhilePluggedInScreenDimLock);
  3875.         paramPrintWriter.println("  mStayOnWhilePluggedInPartialLock=" + this.mStayOnWhilePluggedInPartialLock);
  3876.         paramPrintWriter.println("  mPreventScreenOnPartialLock=" + this.mPreventScreenOnPartialLock);
  3877.         paramPrintWriter.println("  mProximityPartialLock=" + this.mProximityPartialLock);
  3878.         paramPrintWriter.println("  mProximityWakeLockCount=" + this.mProximityWakeLockCount);
  3879.         paramPrintWriter.println("  mProximitySensorEnabled=" + this.mProximitySensorEnabled);
  3880.         paramPrintWriter.println("  mProximitySensorActive=" + this.mProximitySensorActive);
  3881.         paramPrintWriter.println("  mProximityPendingValue=" + this.mProximityPendingValue);
  3882.         paramPrintWriter.println("  mLastProximityEventTime=" + this.mLastProximityEventTime);
  3883.         paramPrintWriter.println("  mLightSensorEnabled=" + this.mLightSensorEnabled + " mLightSensorAdjustSetting=" + this.mLightSensorAdjustSetting);
  3884.         paramPrintWriter.println("  mLightSensorValue=" + this.mLightSensorValue + " mLightSensorPendingValue=" + this.mLightSensorPendingValue);
  3885.         paramPrintWriter.println("  mHighestLightSensorValue=" + this.mHighestLightSensorValue + " mWaitingForFirstLightSensor=" + this.mWaitingForFirstLightSensor);
  3886.         paramPrintWriter.println("  mLightSensorPendingDecrease=" + this.mLightSensorPendingDecrease + " mLightSensorPendingIncrease=" + this.mLightSensorPendingIncrease);
  3887.         paramPrintWriter.println("  mLightSensorScreenBrightness=" + this.mLightSensorScreenBrightness + " mLightSensorButtonBrightness=" + this.mLightSensorButtonBrightness + " mLightSensorKeyboardBrightness=" + this.mLightSensorKeyboardBrightness);
  3888.         paramPrintWriter.println("  mLightSensorScreenBrightnessUpperLimit=" + this.mLightSensorScreenBrightnessUpperLimit);
  3889.         paramPrintWriter.println("  mLightSensorScreenBrightnessLowerLimit=" + this.mLightSensorScreenBrightnessLowerLimit);
  3890.         paramPrintWriter.println("  mUseSoftwareAutoBrightness=" + this.mUseSoftwareAutoBrightness);
  3891.         paramPrintWriter.println("  mAutoBrightessEnabled=" + this.mAutoBrightessEnabled);
  3892.         paramPrintWriter.println("  mMaxBrightness=" + this.mMaxBrightness);
  3893.         paramPrintWriter.println("  mIsTablet=" + this.mIsTablet);
  3894.         paramPrintWriter.println("  mIsSecuredLock=" + this.mIsSecuredLock);
  3895.         paramPrintWriter.println("  mIsDeviceLockTime=" + this.mIsDeviceLockTime);
  3896.         paramPrintWriter.println("  mDeviceLockTimeoutSetting=" + this.mDeviceLockTimeoutSetting);
  3897.         paramPrintWriter.println("  GLOBALCONFIG_LCD_AMOLED_DISPLAY=true");
  3898.         paramPrintWriter.println("  GLOBALCONFIG_LCD_MDNIE_FUNCTION=false");
  3899.         paramPrintWriter.println("  GLOBALCONFIG_LCD_SUPPORT_CABC=false");
  3900.         paramPrintWriter.println("  GLOBALCONFIG_LCD_MSM8655CABC=false");
  3901.         paramPrintWriter.println("  GLOBALCONFIG_CAMERA_ENABLE_FACE_SERVICE=false");
  3902.         paramPrintWriter.println("  SEC_PRODUCT_FEATURE_CAMERA_DELAY_TIME_FOR_SMART_STAY=" + Integer.parseInt("2000"));
  3903.         paramPrintWriter.println("  mSmartSleepEnabled=" + this.mSmartSleepEnabled);
  3904.         paramPrintWriter.println("  mSmartSleepDelay=" + this.mSmartSleepDelay);
  3905.         paramPrintWriter.println("  GLOBALCONFIG_SETTINGS_SUPPORT_AUTOMATIC_BRIGHTNESS_DETAIL=false");
  3906.         paramPrintWriter.println("  mDynamicAutoBrightnessEnabled=" + this.mDynamicAutoBrightnessEnabled);
  3907.         paramPrintWriter.println("  mAutoPowerOffTimeoutSetting=" + this.mAutoPowerOffTimeoutSetting);
  3908.         paramPrintWriter.println("  mStrAutoBrightnessLevels=" + mStrAutoBrightnessLevels);
  3909.         paramPrintWriter.println("  mStrAutoBrightnessHysteresisLevels=" + mStrAutoBrightnessHysteresisLevels);
  3910.         paramPrintWriter.println("  mStrLcdBacklightValues=" + mStrLcdBacklightValues);
  3911.         if (this.mDynamicAutoBrightnessEnabled)
  3912.         {
  3913.           paramPrintWriter.println("  mStrLowHysteresisPoints=" + mStrLowHysteresisPoints);
  3914.           paramPrintWriter.println("  mStrBrightnessValuePoints=" + mStrBrightnessValuePoints);
  3915.           paramPrintWriter.println("  mStrHighHysteresisPoints=" + mStrHighHysteresisPoints);
  3916.           paramPrintWriter.println("  mStrMinimumExpressiveBrightnessValues=" + mStrMinimumExpressiveBrightnessValues);
  3917.         }
  3918.         this.mScreenBrightnessAnimator.dump(paramPrintWriter, "mScreenBrightnessAnimator: ");
  3919.         int i = this.mLocks.size();
  3920.         paramPrintWriter.println();
  3921.         paramPrintWriter.println("mLocks.size=" + i + ":");
  3922.         long l2 = SystemClock.elapsedRealtime();
  3923.         int j = 0;
  3924.         if (j < i)
  3925.         {
  3926.           WakeLock localWakeLock = (WakeLock)this.mLocks.get(j);
  3927.           String str1 = lockType(0x3F & localWakeLock.flags);
  3928.           String str2 = "";
  3929.           if ((0x10000000 & localWakeLock.flags) != 0)
  3930.             str2 = "ACQUIRE_CAUSES_WAKEUP ";
  3931.           String str3 = "";
  3932.           if (localWakeLock.activated)
  3933.             str3 = " activated";
  3934.           long l3 = l2 - localWakeLock.acqTime;
  3935.           paramPrintWriter.println("  " + str1 + " '" + localWakeLock.tag + "'" + str2 + str3 + " (minState=" + localWakeLock.minState + ", uid=" + localWakeLock.uid + ", pid=" + localWakeLock.pid + ")" + "activeT=" + l3);
  3936.           j++;
  3937.           continue;
  3938.         }
  3939.         paramPrintWriter.println();
  3940.         paramPrintWriter.println("mForceDisableWakeLock=" + this.mForceDisableWakeLock);
  3941.         paramPrintWriter.println();
  3942.         paramPrintWriter.println("mPokeLocks.size=" + this.mPokeLocks.size() + ":");
  3943.         Iterator localIterator = this.mPokeLocks.values().iterator();
  3944.         if (!localIterator.hasNext())
  3945.           break label2508;
  3946.         PokeLock localPokeLock = (PokeLock)localIterator.next();
  3947.         StringBuilder localStringBuilder1 = new StringBuilder().append("    poke lock '").append(localPokeLock.tag).append("':");
  3948.         if ((0x1 & localPokeLock.pokey) != 0)
  3949.         {
  3950.           str6 = " POKE_LOCK_IGNORE_TOUCH_EVENTS";
  3951.           StringBuilder localStringBuilder2 = localStringBuilder1.append(str6);
  3952.           if ((0x2 & localPokeLock.pokey) == 0)
  3953.             break label2746;
  3954.           str7 = " POKE_LOCK_SHORT_TIMEOUT";
  3955.           StringBuilder localStringBuilder3 = localStringBuilder2.append(str7);
  3956.           if ((0x4 & localPokeLock.pokey) == 0)
  3957.             break label2754;
  3958.           str8 = " POKE_LOCK_MEDIUM_TIMEOUT";
  3959.           paramPrintWriter.println(str8);
  3960.         }
  3961.       }
  3962.       String str6 = "";
  3963.       continue;
  3964.       label2508: paramPrintWriter.println();
  3965.       int k = this.mDVFSLocks.size();
  3966.       paramPrintWriter.println("mDVFSLocks.size=" + k + ":");
  3967.       int m = 0;
  3968.       if (m < k)
  3969.       {
  3970.         DVFSLock localDVFSLock = (DVFSLock)this.mDVFSLocks.get(m);
  3971.         String str4 = DVFSLockType(localDVFSLock.type);
  3972.         String str5 = "";
  3973.         long l4 = SystemClock.elapsedRealtime() - localDVFSLock.acqTime;
  3974.         if (localDVFSLock == this.mCurrentDVFSMinLock)
  3975.           str5 = " <--- mCurrentDVFSMinLock";
  3976.         while (true)
  3977.         {
  3978.           paramPrintWriter.println("  type : " + str4 + "  freq : " + localDVFSLock.frequency + "  elapsed time : " + l4 + "  tag : " + localDVFSLock.tag + str5);
  3979.           m++;
  3980.           break;
  3981.           if (localDVFSLock == this.mCurrentDVFSMaxLock)
  3982.             str5 = " <--- mCurrentDVFSMaxLock";
  3983.         }
  3984.       }
  3985.       paramPrintWriter.println("  mPersistentDVFSLocksInfo=0x" + Integer.toHexString(this.mPersistentDVFSLocksInfo));
  3986.       paramPrintWriter.println();
  3987.       return;
  3988.       label2746: String str7 = "";
  3989.       continue;
  3990.       label2754: String str8 = "";
  3991.     }
  3992.   }
  3993.  
  3994.   public void enableUserActivity(boolean paramBoolean)
  3995.   {
  3996.     Slog.d("PowerManagerService", "enableUserActivity " + paramBoolean);
  3997.     synchronized (this.mLocks)
  3998.     {
  3999.       this.mUserActivityAllowed = paramBoolean;
  4000.       if (!paramBoolean)
  4001.         setTimeoutLocked(SystemClock.uptimeMillis(), 0);
  4002.       return;
  4003.     }
  4004.   }
  4005.  
  4006.   void enforceWakeSourcePermission(int paramInt1, int paramInt2)
  4007.   {
  4008.     if (paramInt1 == Process.myUid())
  4009.       return;
  4010.     this.mContext.enforcePermission("android.permission.UPDATE_DEVICE_STATS", paramInt2, paramInt1, null);
  4011.   }
  4012.  
  4013.   public void forceDisableWakeLock(boolean paramBoolean)
  4014.   {
  4015.     Slog.i("PowerManagerService", "forceDisableWakeLock : " + paramBoolean + "  (mForceDisableWakeLock : " + this.mForceDisableWakeLock + ")");
  4016.     LockList localLockList = this.mLocks;
  4017.     if (paramBoolean);
  4018.     try
  4019.     {
  4020.       this.mForceDisableWakeLock = true;
  4021.       if (this.mPartialCount > 0)
  4022.         nativeReleaseWakeLock("PowerManagerService");
  4023.       while (true)
  4024.       {
  4025.         return;
  4026.         this.mForceDisableWakeLock = false;
  4027.         if (this.mPartialCount > 0)
  4028.           nativeAcquireWakeLock(1, "PowerManagerService");
  4029.       }
  4030.     }
  4031.     finally
  4032.     {
  4033.     }
  4034.   }
  4035.  
  4036.   public float getCurrentBrightness(boolean paramBoolean)
  4037.   {
  4038.     while (true)
  4039.     {
  4040.       float f1;
  4041.       synchronized (this.mScreenBrightnessAnimator)
  4042.       {
  4043.         if (this.mScreenBrightnessAnimator.isAnimating())
  4044.         {
  4045.           f1 = this.mScreenBrightnessAnimator.endValue;
  4046.           if (paramBoolean)
  4047.           {
  4048.             f2 = f1 / 255.0F;
  4049.             Slog.d("PowerManagerService", "getCurrentBrightness : ratio : " + paramBoolean + "  retValue : " + f2);
  4050.             return f2;
  4051.           }
  4052.         }
  4053.         else
  4054.         {
  4055.           f1 = this.mScreenBrightnessAnimator.currentValue;
  4056.         }
  4057.       }
  4058.       float f2 = (int)f1;
  4059.     }
  4060.   }
  4061.  
  4062.   WindowManagerPolicy getPolicyLocked()
  4063.   {
  4064.     while ((this.mPolicy == null) || (!this.mDoneBooting))
  4065.       try
  4066.       {
  4067.         this.mLocks.wait();
  4068.       }
  4069.       catch (InterruptedException localInterruptedException)
  4070.       {
  4071.       }
  4072.     return this.mPolicy;
  4073.   }
  4074.  
  4075.   int getStayOnConditionsLocked()
  4076.   {
  4077.     if ((this.mMaximumScreenOffTimeout <= 0) || (this.mMaximumScreenOffTimeout == 2147483647))
  4078.       return this.mStayOnConditions;
  4079.     return 0;
  4080.   }
  4081.  
  4082.   public int[] getSupportedFrequency()
  4083.   {
  4084.     return this.mSupportedFrequency;
  4085.   }
  4086.  
  4087.   public int getSupportedWakeLockFlags()
  4088.   {
  4089.     int i = 31;
  4090.     if (this.mProximitySensor != null)
  4091.       i |= 32;
  4092.     return i;
  4093.   }
  4094.  
  4095.   public void goToSleep(long paramLong)
  4096.   {
  4097.     goToSleepWithReason(paramLong, 2);
  4098.   }
  4099.  
  4100.   public void goToSleepWithReason(long paramLong, int paramInt)
  4101.   {
  4102.     Slog.d("PowerManagerService", "goToSleepWithReason : time : " + paramLong + " reason : " + paramInt);
  4103.     this.mContext.enforceCallingOrSelfPermission("android.permission.DEVICE_POWER", null);
  4104.     synchronized (this.mLocks)
  4105.     {
  4106.       goToSleepLocked(paramLong, paramInt);
  4107.       return;
  4108.     }
  4109.   }
  4110.  
  4111.   void init(Context paramContext, LightsService paramLightsService, IActivityManager paramIActivityManager, BatteryService paramBatteryService)
  4112.   {
  4113.     this.mLightsService = paramLightsService;
  4114.     this.mContext = paramContext;
  4115.     this.mActivityService = paramIActivityManager;
  4116.     this.mBatteryStats = BatteryStatsService.getService();
  4117.     this.mBatteryService = paramBatteryService;
  4118.     this.mLcdLight = paramLightsService.getLight(0);
  4119.     this.mButtonLight = paramLightsService.getLight(2);
  4120.     this.mKeyboardLight = paramLightsService.getLight(1);
  4121.     this.mAttentionLight = paramLightsService.getLight(5);
  4122.     this.mHeadless = "1".equals(SystemProperties.get("ro.config.headless", "0"));
  4123.     this.mInitComplete = false;
  4124.     this.mScreenBrightnessAnimator = new ScreenBrightnessAnimator("mScreenBrightnessUpdaterThread", -4);
  4125.     this.mScreenBrightnessAnimator.start();
  4126.     synchronized (this.mScreenBrightnessAnimator)
  4127.     {
  4128.       while (true)
  4129.       {
  4130.         boolean bool1 = this.mInitComplete;
  4131.         if (bool1)
  4132.           break;
  4133.         try
  4134.         {
  4135.           this.mScreenBrightnessAnimator.wait();
  4136.         }
  4137.         catch (InterruptedException localInterruptedException2)
  4138.         {
  4139.         }
  4140.       }
  4141.       this.mInitComplete = false;
  4142.       this.mHandlerThread = new HandlerThread("PowerManagerService")
  4143.       {
  4144.         protected void onLooperPrepared()
  4145.         {
  4146.           super.onLooperPrepared();
  4147.           PowerManagerService.this.initInThread();
  4148.         }
  4149.       };
  4150.       this.mHandlerThread.start();
  4151.     }
  4152.     synchronized (this.mHandlerThread)
  4153.     {
  4154.       while (true)
  4155.       {
  4156.         boolean bool2 = this.mInitComplete;
  4157.         if (bool2)
  4158.           break;
  4159.         try
  4160.         {
  4161.           this.mHandlerThread.wait();
  4162.         }
  4163.         catch (InterruptedException localInterruptedException1)
  4164.         {
  4165.         }
  4166.       }
  4167.       localObject1 = finally;
  4168.       throw localObject1;
  4169.     }
  4170.     synchronized (this.mLocks)
  4171.     {
  4172.       updateNativePowerStateLocked();
  4173.       forceUserActivityLocked();
  4174.       this.mInitialized = true;
  4175.       return;
  4176.       localObject2 = finally;
  4177.       throw localObject2;
  4178.     }
  4179.   }
  4180.  
  4181.   void initInThread()
  4182.   {
  4183.     this.mHandler = new Handler();
  4184.     this.mBroadcastWakeLock = new UnsynchronizedWakeLock(1, "sleep_broadcast", true);
  4185.     this.mStayOnWhilePluggedInScreenDimLock = new UnsynchronizedWakeLock(6, "StayOnWhilePluggedIn Screen Dim", false);
  4186.     this.mStayOnWhilePluggedInPartialLock = new UnsynchronizedWakeLock(1, "StayOnWhilePluggedIn Partial", false);
  4187.     this.mPreventScreenOnPartialLock = new UnsynchronizedWakeLock(1, "PreventScreenOn Partial", false);
  4188.     this.mProximityPartialLock = new UnsynchronizedWakeLock(1, "Proximity Partial", false);
  4189.     this.mAutoPowerOffPartialLock = new UnsynchronizedWakeLock(1, "AutoPowerOff Partial", false);
  4190.     this.mScreenOnIntent = new Intent("android.intent.action.SCREEN_ON");
  4191.     this.mScreenOnIntent.addFlags(1342177280);
  4192.     this.mScreenOffIntent = new Intent("android.intent.action.SCREEN_OFF");
  4193.     this.mScreenOffIntent.addFlags(1342177280);
  4194.     this.mSmartSleepIntent = new Intent("com.android.server.PowerManagerService.action.FAILED_TO_DETECT_FACE_BEFORE_DIM", null);
  4195.     this.mIsTablet = isTablet();
  4196.     Resources localResources = this.mContext.getResources();
  4197.     this.mAnimateScreenLights = localResources.getBoolean(17891348);
  4198.     this.mUnplugTurnsOnScreen = localResources.getBoolean(17891347);
  4199.     this.mScreenBrightnessDim = localResources.getInteger(17694755);
  4200.     this.mUseSoftwareAutoBrightness = localResources.getBoolean(17891345);
  4201.     if (this.mUseSoftwareAutoBrightness)
  4202.     {
  4203.       this.mAutoBrightnessLevels = localResources.getIntArray(17236011);
  4204.       this.mLcdBacklightValues = localResources.getIntArray(17236013);
  4205.       this.mButtonBacklightValues = localResources.getIntArray(17236014);
  4206.       this.mKeyboardBacklightValues = localResources.getIntArray(17236015);
  4207.       this.mLightSensorWarmupTime = localResources.getInteger(17694758);
  4208.       this.mAutoBrightnessHysteresisLevels = localResources.getIntArray(17236012);
  4209.       this.mDynamicAutoBrightnessEnabled = localResources.getBoolean(17891363);
  4210.       if (this.mDynamicAutoBrightnessEnabled)
  4211.       {
  4212.         Slog.d("PowerManagerService", "Dynamic AutoBrightness is Enabled. mDynamicAutoBrightnessEnabled = " + this.mDynamicAutoBrightnessEnabled);
  4213.         this.mLowLimitAtHighestAutoBrightnessLevel = localResources.getInteger(17694756);
  4214.         this.mValueOfVirtualZeroCandela = localResources.getInteger(17694757);
  4215.         this.mLowHysteresisLevels = localResources.getIntArray(17236017);
  4216.         this.mLowHysteresisValuesOrg = localResources.getIntArray(17236018);
  4217.         this.mLowHysteresisValues = localResources.getIntArray(17236018);
  4218.         this.mBrightnessLevels = localResources.getIntArray(17236019);
  4219.         this.mBrightnessValuesOrg = localResources.getIntArray(17236020);
  4220.         this.mBrightnessValues = localResources.getIntArray(17236020);
  4221.         this.mHighHysteresisLevels = localResources.getIntArray(17236021);
  4222.         this.mHighHysteresisValuesOrg = localResources.getIntArray(17236022);
  4223.         this.mHighHysteresisValues = localResources.getIntArray(17236022);
  4224.         if (this.mIsTablet)
  4225.           this.mMinimumExpressiveBrightnessValues = localResources.getIntArray(17236016);
  4226.         setDynamicAutoBrightnessSlopeTables();
  4227.       }
  4228.       printAutoBrightnessTables();
  4229.       if (!this.mAutoBrightessEnabled)
  4230.         break label948;
  4231.     }
  4232.     label948: for (int i = 1; ; i = 0)
  4233.     {
  4234.       sendBrightnessModeBySysfs(i);
  4235.       this.mSettings = new ContentQueryMap(this.mContext.getContentResolver().query(Settings.System.CONTENT_URI, null, "(name=?) or (name=?) or (name=?) or (name=?) or (name=?) or (name=?) or (name=?) or (name=?) or (name=?)", new String[] { "stay_on_while_plugged_in", "screen_off_timeout", "dim_screen", "screen_brightness", "screen_brightness_mode", "window_animation_scale", "transition_animation_scale", "button_key_light", "is_secured_lock" }, null), "name", true, this.mHandler);
  4236.       SettingsObserver localSettingsObserver = new SettingsObserver(null);
  4237.       this.mSettings.addObserver(localSettingsObserver);
  4238.       localSettingsObserver.update(this.mSettings, null);
  4239.       IntentFilter localIntentFilter1 = new IntentFilter();
  4240.       localIntentFilter1.addAction("android.intent.action.BATTERY_CHANGED");
  4241.       this.mContext.registerReceiver(new BatteryReceiver(null), localIntentFilter1);
  4242.       IntentFilter localIntentFilter2 = new IntentFilter();
  4243.       localIntentFilter2.addAction("android.intent.action.BOOT_COMPLETED");
  4244.       this.mContext.registerReceiver(new BootCompletedReceiver(null), localIntentFilter2);
  4245.       IntentFilter localIntentFilter3 = new IntentFilter();
  4246.       localIntentFilter3.addAction("android.intent.action.DOCK_EVENT");
  4247.       this.mContext.registerReceiver(new DockReceiver(null), localIntentFilter3);
  4248.       IntentFilter localIntentFilter4 = new IntentFilter();
  4249.       localIntentFilter4.addAction("com.android.server.PowerManagerService.action.AUTO_POWER_OFF");
  4250.       this.mContext.registerReceiver(new AutoPowerOffReceiver(null), localIntentFilter4);
  4251.       this.mContext.registerReceiver(this.mSipIntentReceiver, new IntentFilter("ResponseAxT9Info"));
  4252.       IntentFilter localIntentFilter5 = new IntentFilter();
  4253.       localIntentFilter5.addAction("android.intent.action.PROXIMITY_CP");
  4254.       this.mContext.registerReceiver(new ProximityFromCPReceiver(null), localIntentFilter5);
  4255.       initSupportedFrequency();
  4256.       if (this.mSupportedFrequency != null)
  4257.         this.mAMOLEDAnimationDVFSLock = new UnsynchronizedDVFSLock(1, this.mSupportedFrequency[0], "AMOLED_Animation");
  4258.       this.mContext.getContentResolver().registerContentObserver(Settings.Secure.CONTENT_URI, true, new ContentObserver(new Handler())
  4259.       {
  4260.         public void onChange(boolean paramAnonymousBoolean)
  4261.         {
  4262.           PowerManagerService.this.updateSettingsValues();
  4263.         }
  4264.       });
  4265.       updateSettingsValues();
  4266.       synchronized (this.mHandlerThread)
  4267.       {
  4268.         this.mInitComplete = true;
  4269.         this.mHandlerThread.notifyAll();
  4270.         return;
  4271.       }
  4272.     }
  4273.   }
  4274.  
  4275.   boolean isScreenBright()
  4276.   {
  4277.     while (true)
  4278.     {
  4279.       synchronized (this.mLocks)
  4280.       {
  4281.         if ((0x3 & this.mPowerState) == 3)
  4282.         {
  4283.           bool = true;
  4284.           return bool;
  4285.         }
  4286.       }
  4287.       boolean bool = false;
  4288.     }
  4289.   }
  4290.  
  4291.   public boolean isScreenOn()
  4292.   {
  4293.     while (true)
  4294.     {
  4295.       synchronized (this.mLocks)
  4296.       {
  4297.         if ((0x1 & this.mPowerState) != 0)
  4298.         {
  4299.           bool = true;
  4300.           return bool;
  4301.         }
  4302.       }
  4303.       boolean bool = false;
  4304.     }
  4305.   }
  4306.  
  4307.   void logPointerDownEvent()
  4308.   {
  4309.     if (this.mLastTouchDown == 0L)
  4310.     {
  4311.       this.mLastTouchDown = SystemClock.elapsedRealtime();
  4312.       this.mTouchCycles = (1 + this.mTouchCycles);
  4313.     }
  4314.   }
  4315.  
  4316.   void logPointerUpEvent()
  4317.   {
  4318.     this.mTotalTouchDownTime += SystemClock.elapsedRealtime() - this.mLastTouchDown;
  4319.     this.mLastTouchDown = 0L;
  4320.   }
  4321.  
  4322.   public void monitor()
  4323.   {
  4324.     synchronized (this.mLocks)
  4325.     {
  4326.     }
  4327.   }
  4328.  
  4329.   void noteStartWakeLocked(WakeLock paramWakeLock, WorkSource paramWorkSource)
  4330.   {
  4331.     long l;
  4332.     if (paramWakeLock.monitorType >= 0)
  4333.     {
  4334.       l = Binder.clearCallingIdentity();
  4335.       if (paramWorkSource == null)
  4336.         break label42;
  4337.     }
  4338.     try
  4339.     {
  4340.       this.mBatteryStats.noteStartWakelockFromSource(paramWorkSource, paramWakeLock.pid, paramWakeLock.tag, paramWakeLock.monitorType);
  4341.       while (true)
  4342.       {
  4343.         return;
  4344.         label42: this.mBatteryStats.noteStartWakelock(paramWakeLock.uid, paramWakeLock.pid, paramWakeLock.tag, paramWakeLock.monitorType);
  4345.       }
  4346.     }
  4347.     catch (RemoteException localRemoteException)
  4348.     {
  4349.     }
  4350.     finally
  4351.     {
  4352.       Binder.restoreCallingIdentity(l);
  4353.     }
  4354.   }
  4355.  
  4356.   void noteStopWakeLocked(WakeLock paramWakeLock, WorkSource paramWorkSource)
  4357.   {
  4358.     long l;
  4359.     if (paramWakeLock.monitorType >= 0)
  4360.     {
  4361.       l = Binder.clearCallingIdentity();
  4362.       if (paramWorkSource == null)
  4363.         break label42;
  4364.     }
  4365.     try
  4366.     {
  4367.       this.mBatteryStats.noteStopWakelockFromSource(paramWorkSource, paramWakeLock.pid, paramWakeLock.tag, paramWakeLock.monitorType);
  4368.       while (true)
  4369.       {
  4370.         return;
  4371.         label42: this.mBatteryStats.noteStopWakelock(paramWakeLock.uid, paramWakeLock.pid, paramWakeLock.tag, paramWakeLock.monitorType);
  4372.       }
  4373.     }
  4374.     catch (RemoteException localRemoteException)
  4375.     {
  4376.     }
  4377.     finally
  4378.     {
  4379.       Binder.restoreCallingIdentity(l);
  4380.     }
  4381.   }
  4382.  
  4383.   public void preventAutoPowerOff(int paramInt, boolean paramBoolean)
  4384.   {
  4385.     Slog.d("PowerManagerService", "preventAutoPowerOff : " + paramInt + "  bPrevent : " + paramBoolean);
  4386.     Integer localInteger = (Integer)this.mMapPreventAutoPowerOff.get(Integer.valueOf(paramInt));
  4387.     int i;
  4388.     int j;
  4389.     if (localInteger == null)
  4390.     {
  4391.       Slog.d("PowerManagerService", "preventAutoPowerOff : " + paramInt + "  bPrevent : " + paramBoolean);
  4392.       this.mMapPreventAutoPowerOff.put(Integer.valueOf(paramInt), Integer.valueOf(0));
  4393.       i = 0;
  4394.       if (!paramBoolean)
  4395.         break label163;
  4396.       j = i + 1;
  4397.     }
  4398.     while (true)
  4399.     {
  4400.       this.mMapPreventAutoPowerOff.put(Integer.valueOf(paramInt), Integer.valueOf(j));
  4401.       Slog.d("PowerManagerService", "preventAutoPowerOff : resetAutoPowerOffTimer()");
  4402.       resetAutoPowerOffTimer();
  4403.       return;
  4404.       i = localInteger.intValue();
  4405.       break;
  4406.       label163: j = i - 1;
  4407.       if (j < 0)
  4408.       {
  4409.         Slog.e("PowerManagerService", "currentCount < 0 : " + paramInt);
  4410.         j = 0;
  4411.       }
  4412.     }
  4413.   }
  4414.  
  4415.   public void preventScreenOn(boolean paramBoolean)
  4416.   {
  4417.     this.mContext.enforceCallingOrSelfPermission("android.permission.DEVICE_POWER", null);
  4418.     synchronized (this.mLocks)
  4419.     {
  4420.       Slog.d("PowerManagerService", "preventScreenOn : " + paramBoolean);
  4421.       if (paramBoolean)
  4422.       {
  4423.         this.mPreventScreenOnPartialLock.acquire();
  4424.         this.mHandler.removeCallbacks(this.mForceReenableScreenTask);
  4425.         this.mHandler.postDelayed(this.mForceReenableScreenTask, 5000L);
  4426.         this.mPreventScreenOn = true;
  4427.         return;
  4428.       }
  4429.       this.mPreventScreenOn = false;
  4430.       this.mHandler.removeCallbacks(this.mForceReenableScreenTask);
  4431.       if ((!this.mProximitySensorActive) && ((0x1 & this.mPowerState) != 0))
  4432.       {
  4433.         int i = setScreenStateLocked(true);
  4434.         if (i != 0)
  4435.           Slog.w("PowerManagerService", "preventScreenOn: error from setScreenStateLocked(): " + i);
  4436.       }
  4437.       this.mPreventScreenOnPartialLock.release();
  4438.     }
  4439.   }
  4440.  
  4441.   public void reboot(final String paramString)
  4442.   {
  4443.     this.mContext.enforceCallingOrSelfPermission("android.permission.REBOOT", null);
  4444.     if ((this.mHandler == null) || (!ActivityManagerNative.isSystemReady()))
  4445.       throw new IllegalStateException("Too early to call reboot()");
  4446.     Runnable local15 = new Runnable()
  4447.     {
  4448.       public void run()
  4449.       {
  4450.         try
  4451.         {
  4452.           ShutdownThread.reboot(PowerManagerService.this.mContext, paramString, false);
  4453.           return;
  4454.         }
  4455.         finally
  4456.         {
  4457.         }
  4458.       }
  4459.     };
  4460.     this.mHandler.post(local15);
  4461.     try
  4462.     {
  4463.       while (true)
  4464.         label56: local15.wait();
  4465.     }
  4466.     catch (InterruptedException localInterruptedException)
  4467.     {
  4468.       break label56;
  4469.     }
  4470.     finally
  4471.     {
  4472.     }
  4473.   }
  4474.  
  4475.   public void releaseDVFSLock(IBinder paramIBinder)
  4476.   {
  4477.     Binder.getCallingUid();
  4478.     this.mContext.enforceCallingOrSelfPermission("android.permission.DEVICE_POWER", null);
  4479.     long l = Binder.clearCallingIdentity();
  4480.     try
  4481.     {
  4482.       synchronized (this.mDVFSLocks)
  4483.       {
  4484.         releaseDVFSLockLocked(paramIBinder);
  4485.         return;
  4486.       }
  4487.     }
  4488.     finally
  4489.     {
  4490.       Binder.restoreCallingIdentity(l);
  4491.     }
  4492.   }
  4493.  
  4494.   public void releasePersistentDVFSLock(int paramInt)
  4495.   {
  4496.     Binder.getCallingUid();
  4497.     this.mContext.enforceCallingOrSelfPermission("android.permission.DEVICE_POWER", null);
  4498.     long l = Binder.clearCallingIdentity();
  4499.     while (true)
  4500.     {
  4501.       try
  4502.       {
  4503.         synchronized (this.mDVFSLocks)
  4504.         {
  4505.           if ((paramInt & this.mPersistentDVFSLocksInfo) != 0)
  4506.           {
  4507.             IBinder localIBinder = (IBinder)this.mMapPersistentDVFSLock.remove(Integer.valueOf(paramInt));
  4508.             if (localIBinder != null)
  4509.             {
  4510.               Slog.d("PowerManagerService", "releasePersistentDVFSLock : prev mPersistentDVFSLocksInfo : 0x" + Integer.toHexString(this.mPersistentDVFSLocksInfo) + "  callingId : 0x" + Integer.toHexString(paramInt));
  4511.               releaseDVFSLockLocked(localIBinder);
  4512.               this.mPersistentDVFSLocksInfo &= (paramInt ^ 0xFFFFFFFF);
  4513.               return;
  4514.             }
  4515.             Slog.e("PowerManagerService", "releasePersistentDVFSLock : there is no persistentDVFSLock to release");
  4516.             throw new RuntimeException("WakeLock under-locked " + paramInt);
  4517.           }
  4518.         }
  4519.       }
  4520.       finally
  4521.       {
  4522.         Binder.restoreCallingIdentity(l);
  4523.       }
  4524.       Slog.e("PowerManagerService", "releasePersistentDVFSLock : this callingId already released PersistentDVFSLock " + paramInt);
  4525.     }
  4526.   }
  4527.  
  4528.   public void releaseWakeLock(IBinder paramIBinder, int paramInt)
  4529.   {
  4530.     if (Binder.getCallingUid() != Process.myUid())
  4531.       this.mContext.enforceCallingOrSelfPermission("android.permission.WAKE_LOCK", null);
  4532.     synchronized (this.mLocks)
  4533.     {
  4534.       releaseWakeLockLocked(paramIBinder, paramInt, false);
  4535.       return;
  4536.     }
  4537.   }
  4538.  
  4539.   public void resetAutoPowerOffTimer()
  4540.   {
  4541.     Slog.d("PowerManagerService", "resetAutoPowerOffTimer : " + this.mAutoPowerOffTimeoutSetting);
  4542.     if (this.mAutoPowerOffTimeoutSetting > 0)
  4543.     {
  4544.       this.mHandler.removeCallbacks(this.mUpdateAutoPowerOffTimeTask);
  4545.       this.mHandler.post(this.mUpdateAutoPowerOffTimeTask);
  4546.     }
  4547.   }
  4548.  
  4549.   public void setAttentionLight(boolean paramBoolean, int paramInt)
  4550.   {
  4551.     this.mContext.enforceCallingOrSelfPermission("android.permission.DEVICE_POWER", null);
  4552.     LightsService.Light localLight = this.mAttentionLight;
  4553.     if (paramBoolean);
  4554.     for (int i = 3; ; i = 0)
  4555.     {
  4556.       localLight.setFlashing(paramInt, 2, i, 0);
  4557.       return;
  4558.     }
  4559.   }
  4560.  
  4561.   public void setAutoBrightnessAdjustment(float paramFloat)
  4562.   {
  4563.     this.mContext.enforceCallingOrSelfPermission("android.permission.DEVICE_POWER", null);
  4564.     synchronized (this.mLocks)
  4565.     {
  4566.       this.mLightSensorAdjustSetting = paramFloat;
  4567.       long l;
  4568.       if ((this.mSensorManager != null) && (this.mLightSensorEnabled))
  4569.         l = Binder.clearCallingIdentity();
  4570.       try
  4571.       {
  4572.         if (this.mLightSensorValue >= 0.0F)
  4573.         {
  4574.           int i = (int)this.mLightSensorValue;
  4575.           this.mLightSensorValue = -1.0F;
  4576.           handleLightSensorValue(i, true);
  4577.         }
  4578.         Binder.restoreCallingIdentity(l);
  4579.         return;
  4580.       }
  4581.       finally
  4582.       {
  4583.         localObject2 = finally;
  4584.         Binder.restoreCallingIdentity(l);
  4585.         throw localObject2;
  4586.       }
  4587.     }
  4588.   }
  4589.  
  4590.   public void setAutoBrightnessLimit(int paramInt1, int paramInt2)
  4591.   {
  4592.     this.mContext.enforceCallingOrSelfPermission("android.permission.DEVICE_POWER", null);
  4593.     Slog.d("PowerManagerService", "setAutoBrightnessLimit : lowerLimit " + paramInt1 + "   upperLimit : " + paramInt2);
  4594.     synchronized (this.mLocks)
  4595.     {
  4596.       if ((this.mLightSensorScreenBrightnessLowerLimit != paramInt1) || (this.mLightSensorScreenBrightnessUpperLimit != paramInt2))
  4597.       {
  4598.         this.mLightSensorScreenBrightnessLowerLimit = paramInt1;
  4599.         this.mLightSensorScreenBrightnessUpperLimit = paramInt2;
  4600.         int i = (int)this.mLightSensorValue;
  4601.         this.mLightSensorValue = -1.0F;
  4602.         lightSensorChangedLocked(i, false);
  4603.       }
  4604.       return;
  4605.     }
  4606.   }
  4607.  
  4608.   public void setBacklightBrightness(int paramInt)
  4609.   {
  4610.     this.mContext.enforceCallingOrSelfPermission("android.permission.DEVICE_POWER", null);
  4611.     int i = Binder.getCallingPid();
  4612.     int j = Binder.getCallingUid();
  4613.     Slog.d("PowerManagerService", "setBacklightBrightness " + paramInt + "  uid : " + j + "pid : " + i);
  4614.     if (isScreenTurningOffLocked())
  4615.     {
  4616.       Slog.w("PowerManagerService", "but, isScreenTurningOffLocked : TRUE , so should be ignored");
  4617.       return;
  4618.     }
  4619.     if (!isScreenOn())
  4620.     {
  4621.       Slog.w("PowerManagerService", "but, isScreenOn : false , so should be ignored");
  4622.       return;
  4623.     }
  4624.     int k;
  4625.     long l;
  4626.     synchronized (this.mLocks)
  4627.     {
  4628.       k = Math.max(paramInt, this.mScreenBrightnessDim);
  4629.       if (this.mSystemPowerSaveModeEnabled)
  4630.       {
  4631.         int m = k - POWERSAVEMODE_BRIGHTNESS_OFFSET;
  4632.         if (k > 0)
  4633.         {
  4634.           k = Math.max(m, 10);
  4635.           Slog.d("PowerManagerService", "setBacklightBrightness : mSystemPowerSaveModeEnabled:: brightness:" + k);
  4636.         }
  4637.       }
  4638.       if ((this.mMaxBrightness >= 0) && (k > this.mMaxBrightness))
  4639.       {
  4640.         k = this.mMaxBrightness;
  4641.         Slog.d("PowerManagerService", "setBacklightBrightness : brightness is changed to " + k + " because of temperature");
  4642.       }
  4643.       this.mLcdLight.setBrightness(k);
  4644.       l = Binder.clearCallingIdentity();
  4645.     }
  4646.     try
  4647.     {
  4648.       this.mBatteryStats.noteScreenBrightness(k);
  4649.       Binder.restoreCallingIdentity(l);
  4650.       this.mScreenBrightnessAnimator.animateTo(k, 2, 0);
  4651.       return;
  4652.       localObject1 = finally;
  4653.       throw localObject1;
  4654.     }
  4655.     catch (RemoteException localRemoteException)
  4656.     {
  4657.       while (true)
  4658.       {
  4659.         Slog.w("PowerManagerService", "RemoteException calling noteScreenBrightness on BatteryStatsService", localRemoteException);
  4660.         Binder.restoreCallingIdentity(l);
  4661.       }
  4662.     }
  4663.     finally
  4664.     {
  4665.       Binder.restoreCallingIdentity(l);
  4666.     }
  4667.   }
  4668.  
  4669.   public void setButtonBrightnessOverride(int paramInt)
  4670.   {
  4671.     this.mContext.enforceCallingOrSelfPermission("android.permission.DEVICE_POWER", null);
  4672.     synchronized (this.mLocks)
  4673.     {
  4674.       if (this.mButtonBrightnessOverride != paramInt)
  4675.       {
  4676.         this.mButtonBrightnessOverride = paramInt;
  4677.         Slog.d("PowerManagerService", "setButtonBrightnessOverride : mButtonBrightnessOverride : " + this.mButtonBrightnessOverride);
  4678.         if (isScreenOn())
  4679.           updateLightsLocked(this.mPowerState, 12);
  4680.       }
  4681.       return;
  4682.     }
  4683.   }
  4684.  
  4685.   public void setKeyboardVisibility(boolean paramBoolean)
  4686.   {
  4687.     synchronized (this.mLocks)
  4688.     {
  4689.       if (this.mKeyboardVisible != paramBoolean)
  4690.       {
  4691.         this.mKeyboardVisible = paramBoolean;
  4692.         if ((0x1 & this.mPowerState) != 0)
  4693.         {
  4694.           if ((this.mUseSoftwareAutoBrightness) && (this.mLightSensorValue >= 0.0F))
  4695.           {
  4696.             int i = (int)this.mLightSensorValue;
  4697.             this.mLightSensorValue = -1.0F;
  4698.             lightSensorChangedLocked(i, false);
  4699.           }
  4700.           this.mUserActivityReason = "mKeyboardVisible";
  4701.           userActivity(SystemClock.uptimeMillis(), false, 1, true);
  4702.         }
  4703.       }
  4704.       return;
  4705.     }
  4706.   }
  4707.  
  4708.   public void setMasterBrightnessLimit(int paramInt1, int paramInt2)
  4709.   {
  4710.     this.mContext.enforceCallingOrSelfPermission("android.permission.DEVICE_POWER", null);
  4711.     Slog.d("PowerManagerService", "setMasterBrightnessLimit : reserved " + paramInt1 + "   upperLimit : " + paramInt2);
  4712.     LockList localLockList = this.mLocks;
  4713.     if ((paramInt2 != -1) && (paramInt2 < 0))
  4714.       try
  4715.       {
  4716.         throw new IllegalArgumentException("setMasterBrightnessLimit : invalid upperLimit");
  4717.       }
  4718.       finally
  4719.       {
  4720.       }
  4721.     this.mMaxBrightness = paramInt2;
  4722.     Slog.d("PowerManagerService", "setMasterBrightnessLimit : mMaxBrightness : " + this.mMaxBrightness);
  4723.     updateLightsLocked(this.mPowerState, 3);
  4724.   }
  4725.  
  4726.   public void setMaximumScreenOffTimeount(int paramInt)
  4727.   {
  4728.     this.mContext.enforceCallingOrSelfPermission("android.permission.WRITE_SECURE_SETTINGS", null);
  4729.     synchronized (this.mLocks)
  4730.     {
  4731.       this.mMaximumScreenOffTimeout = paramInt;
  4732.       Slog.i("PowerManagerService", "setMaximumScreenOffTimeount : mMaximumScreenOffTimeout : " + this.mMaximumScreenOffTimeout);
  4733.       setScreenOffTimeoutsLocked();
  4734.       return;
  4735.     }
  4736.   }
  4737.  
  4738.   public void setPokeLock(int paramInt, IBinder paramIBinder, String paramString)
  4739.   {
  4740.     this.mContext.enforceCallingOrSelfPermission("android.permission.DEVICE_POWER", null);
  4741.     Slog.d("PowerManagerService", "setPokeLock pokey=" + paramInt + " tag=" + paramString);
  4742.     if (paramIBinder == null)
  4743.     {
  4744.       Slog.e("PowerManagerService", "setPokeLock got null token for tag='" + paramString + "'");
  4745.       return;
  4746.     }
  4747.     if ((paramInt & 0x16) == 22)
  4748.       throw new IllegalArgumentException("setPokeLock can't have both POKE_LOCK_SHORT_TIMEOUT and POKE_LOCK_MEDIUM_TIMEOUT");
  4749.     LockList localLockList = this.mLocks;
  4750.     if (paramInt != 0);
  4751.     int i;
  4752.     int j;
  4753.     boolean bool;
  4754.     while (true)
  4755.     {
  4756.       try
  4757.       {
  4758.         PokeLock localPokeLock3 = (PokeLock)this.mPokeLocks.get(paramIBinder);
  4759.         if (localPokeLock3 != null)
  4760.         {
  4761.           k = localPokeLock3.pokey;
  4762.           localPokeLock3.pokey = paramInt;
  4763.           int m = k & 0x16;
  4764.           int n = paramInt & 0x16;
  4765.           if (((0x1 & this.mPowerState) == 0) && (m != n))
  4766.             localPokeLock3.awakeOnSet = true;
  4767.           i = this.mPokey;
  4768.           j = 0;
  4769.           bool = false;
  4770.           Iterator localIterator = this.mPokeLocks.values().iterator();
  4771.           if (!localIterator.hasNext())
  4772.             break;
  4773.           PokeLock localPokeLock2 = (PokeLock)localIterator.next();
  4774.           j |= localPokeLock2.pokey;
  4775.           if (!localPokeLock2.awakeOnSet)
  4776.             continue;
  4777.           bool = true;
  4778.           continue;
  4779.         }
  4780.         localPokeLock3 = new PokeLock(paramInt, paramIBinder, paramString);
  4781.         this.mPokeLocks.put(paramIBinder, localPokeLock3);
  4782.         int k = 0;
  4783.         continue;
  4784.       }
  4785.       finally
  4786.       {
  4787.       }
  4788.       PokeLock localPokeLock1 = (PokeLock)this.mPokeLocks.remove(paramIBinder);
  4789.       if (localPokeLock1 != null)
  4790.         paramIBinder.unlinkToDeath(localPokeLock1, 0);
  4791.     }
  4792.     this.mPokey = j;
  4793.     this.mPokeAwakeOnSet = bool;
  4794.     if ((i & 0x16) != (paramInt & 0x16))
  4795.     {
  4796.       setScreenOffTimeoutsLocked();
  4797.       setTimeoutLocked(SystemClock.uptimeMillis(), this.mTimeoutTask.nextState);
  4798.     }
  4799.   }
  4800.  
  4801.   public void setPolicy(WindowManagerPolicy paramWindowManagerPolicy)
  4802.   {
  4803.     synchronized (this.mLocks)
  4804.     {
  4805.       this.mPolicy = paramWindowManagerPolicy;
  4806.       this.mLocks.notifyAll();
  4807.       return;
  4808.     }
  4809.   }
  4810.  
  4811.   public void setRatioOfAutoBrightness(int paramInt)
  4812.   {
  4813.     this.mContext.enforceCallingOrSelfPermission("android.permission.DEVICE_POWER", null);
  4814.     Slog.d("PowerManagerService", "setRatioOfAutoBrightness " + paramInt);
  4815.     if (isScreenTurningOffLocked())
  4816.     {
  4817.       Slog.w("PowerManagerService", "but, isScreenTurningOffLocked : TRUE , so should be ignored");
  4818.       return;
  4819.     }
  4820.     if (!isScreenOn())
  4821.     {
  4822.       Slog.w("PowerManagerService", "but, isScreenOn : false , so should be ignored");
  4823.       return;
  4824.     }
  4825.     synchronized (this.mLocks)
  4826.     {
  4827.       int i = this.mDynamicAutoBrightnessRatioValueSetting;
  4828.       this.mDynamicAutoBrightnessRatioValueSetting = paramInt;
  4829.       Slog.d("PowerManagerService", "setRatioOfAutoBrightness : mDynamicAutoBrightnessRatioValueSetting : " + this.mDynamicAutoBrightnessRatioValueSetting);
  4830.       if (i != this.mDynamicAutoBrightnessRatioValueSetting)
  4831.       {
  4832.         this.mDynamicAutoBrightnessRatio = convertSettingsRatioToWeightedRatio(this.mDynamicAutoBrightnessRatioValueSetting);
  4833.         Slog.d("PowerManagerService", "setRatioOfAutoBrightness : mDynamicAutoBrightnessRatio : " + this.mDynamicAutoBrightnessRatio);
  4834.         this.mLowHysteresisLux = -1;
  4835.         this.mHighHysteresisLux = -1;
  4836.         int j = (int)this.mLightSensorValue;
  4837.         this.mLightSensorValue = -1.0F;
  4838.         lightSensorChangedLocked(j, true);
  4839.       }
  4840.       return;
  4841.     }
  4842.   }
  4843.  
  4844.   public void setScreenBrightnessOverride(int paramInt)
  4845.   {
  4846.     this.mContext.enforceCallingOrSelfPermission("android.permission.DEVICE_POWER", null);
  4847.     synchronized (this.mLocks)
  4848.     {
  4849.       if (this.mScreenBrightnessOverride != paramInt)
  4850.       {
  4851.         this.mScreenBrightnessOverride = paramInt;
  4852.         Slog.d("PowerManagerService", "setScreenBrightnessOverride : mScreenBrightnessOverride : " + this.mScreenBrightnessOverride);
  4853.         if (isScreenOn())
  4854.           updateLightsLocked(this.mPowerState, 1);
  4855.       }
  4856.       return;
  4857.     }
  4858.   }
  4859.  
  4860.   public void setStayOnSetting(int paramInt)
  4861.   {
  4862.     this.mContext.enforceCallingOrSelfPermission("android.permission.WRITE_SETTINGS", null);
  4863.     Settings.System.putInt(this.mContext.getContentResolver(), "stay_on_while_plugged_in", paramInt);
  4864.   }
  4865.  
  4866.   public void setSystemPowerSaveMode(boolean paramBoolean)
  4867.   {
  4868.     Slog.d("PowerManagerService", "setSystemPowerSaveMode is called: " + paramBoolean);
  4869.     this.mSystemPowerSaveModeEnabled = paramBoolean;
  4870.     updateLightsLocked(this.mPowerState, 3);
  4871.   }
  4872.  
  4873.   // ERROR //
  4874.   void systemReady()
  4875.   {
  4876.     // Byte code:
  4877.     //   0: aload_0
  4878.     //   1: new 2990    android/hardware/SystemSensorManager
  4879.     //   4: dup
  4880.     //   5: aload_0
  4881.     //   6: getfield 2655   com/android/server/PowerManagerService:mHandlerThread   Landroid/os/HandlerThread;
  4882.     //   9: invokevirtual 2994  android/os/HandlerThread:getLooper  ()Landroid/os/Looper;
  4883.     //   12: invokespecial 2997 android/hardware/SystemSensorManager:<init> (Landroid/os/Looper;)V
  4884.     //   15: putfield 961   com/android/server/PowerManagerService:mSensorManager   Landroid/hardware/SensorManager;
  4885.     //   18: aload_0
  4886.     //   19: aload_0
  4887.     //   20: getfield 961   com/android/server/PowerManagerService:mSensorManager   Landroid/hardware/SensorManager;
  4888.     //   23: bipush 8
  4889.     //   25: invokevirtual 3001 android/hardware/SensorManager:getDefaultSensor (I)Landroid/hardware/Sensor;
  4890.     //   28: putfield 957   com/android/server/PowerManagerService:mProximitySensor Landroid/hardware/Sensor;
  4891.     //   31: aload_0
  4892.     //   32: getfield 1589  com/android/server/PowerManagerService:mUseSoftwareAutoBrightness   Z
  4893.     //   35: ifeq +27 -> 62
  4894.     //   38: aload_0
  4895.     //   39: aload_0
  4896.     //   40: getfield 961   com/android/server/PowerManagerService:mSensorManager   Landroid/hardware/SensorManager;
  4897.     //   43: iconst_5
  4898.     //   44: invokevirtual 3001 android/hardware/SensorManager:getDefaultSensor (I)Landroid/hardware/Sensor;
  4899.     //   47: putfield 1429  com/android/server/PowerManagerService:mLightSensor Landroid/hardware/Sensor;
  4900.     //   50: aload_0
  4901.     //   51: aload_0
  4902.     //   52: getfield 961   com/android/server/PowerManagerService:mSensorManager   Landroid/hardware/SensorManager;
  4903.     //   55: iconst_1
  4904.     //   56: invokevirtual 3001 android/hardware/SensorManager:getDefaultSensor (I)Landroid/hardware/Sensor;
  4905.     //   59: putfield 1435  com/android/server/PowerManagerService:mTiltSensor  Landroid/hardware/Sensor;
  4906.     //   62: aload_0
  4907.     //   63: getfield 1589  com/android/server/PowerManagerService:mUseSoftwareAutoBrightness   Z
  4908.     //   66: ifeq +129 -> 195
  4909.     //   69: aload_0
  4910.     //   70: iconst_3
  4911.     //   71: invokespecial 1056 com/android/server/PowerManagerService:setPowerState    (I)V
  4912.     //   74: aload_0
  4913.     //   75: aload_0
  4914.     //   76: getfield 1005  com/android/server/PowerManagerService:mContext Landroid/content/Context;
  4915.     //   79: ldc_w 3003
  4916.     //   82: invokevirtual 1354 android/content/Context:getSystemService    (Ljava/lang/String;)Ljava/lang/Object;
  4917.     //   85: checkcast 3005 android/app/AlarmManager
  4918.     //   88: putfield 1159  com/android/server/PowerManagerService:mAlarmManager    Landroid/app/AlarmManager;
  4919.     //   91: new 2677   android/content/Intent
  4920.     //   94: dup
  4921.     //   95: ldc 12
  4922.     //   97: aconst_null
  4923.     //   98: invokespecial 2690 android/content/Intent:<init>   (Ljava/lang/String;Landroid/net/Uri;)V
  4924.     //   101: astore_1
  4925.     //   102: aload_0
  4926.     //   103: aload_0
  4927.     //   104: getfield 1005 com/android/server/PowerManagerService:mContext Landroid/content/Context;
  4928.     //   107: iconst_0
  4929.     //   108: aload_1
  4930.     //   109: iconst_0
  4931.     //   110: invokestatic 3011 android/app/PendingIntent:getBroadcast  (Landroid/content/Context;ILandroid/content/Intent;I)Landroid/app/PendingIntent;
  4932.     //   113: putfield 1155 com/android/server/PowerManagerService:mAutoPowerOffPendingIntent   Landroid/app/PendingIntent;
  4933.     //   116: aload_0
  4934.     //   117: getfield 502  com/android/server/PowerManagerService:mLocks   Lcom/android/server/PowerManagerService$LockList;
  4935.     //   120: astore_2
  4936.     //   121: aload_2
  4937.     //   122: monitorenter
  4938.     //   123: ldc 89
  4939.     //   125: ldc_w 3013
  4940.     //   128: invokestatic 1214 android/util/Slog:d (Ljava/lang/String;Ljava/lang/String;)I
  4941.     //   131: pop
  4942.     //   132: aload_0
  4943.     //   133: iconst_1
  4944.     //   134: putfield 460  com/android/server/PowerManagerService:mDoneBooting Z
  4945.     //   137: aload_0
  4946.     //   138: getfield 1589 com/android/server/PowerManagerService:mUseSoftwareAutoBrightness   Z
  4947.     //   141: ifeq +63 -> 204
  4948.     //   144: aload_0
  4949.     //   145: getfield 1112 com/android/server/PowerManagerService:mAutoBrightessEnabled    Z
  4950.     //   148: ifeq +56 -> 204
  4951.     //   151: iconst_1
  4952.     //   152: istore 5
  4953.     //   154: aload_0
  4954.     //   155: iload 5
  4955.     //   157: invokespecial 2074    com/android/server/PowerManagerService:enableLightSensorLocked  (Z)V
  4956.     //   160: invokestatic 738  android/os/Binder:clearCallingIdentity  ()J
  4957.     //   163: lstore 6
  4958.     //   165: aload_0
  4959.     //   166: getfield 2046 com/android/server/PowerManagerService:mBatteryStats    Lcom/android/internal/app/IBatteryStats;
  4960.     //   169: aload_0
  4961.     //   170: invokespecial 2048    com/android/server/PowerManagerService:getPreferredBrightness   ()I
  4962.     //   173: invokeinterface 2053 2 0
  4963.     //   178: aload_0
  4964.     //   179: getfield 2046 com/android/server/PowerManagerService:mBatteryStats    Lcom/android/internal/app/IBatteryStats;
  4965.     //   182: invokeinterface 2056 1 0
  4966.     //   187: lload 6
  4967.     //   189: invokestatic 755  android/os/Binder:restoreCallingIdentity    (J)V
  4968.     //   192: aload_2
  4969.     //   193: monitorexit
  4970.     //   194: return
  4971.     //   195: aload_0
  4972.     //   196: bipush 15
  4973.     //   198: invokespecial 1056    com/android/server/PowerManagerService:setPowerState    (I)V
  4974.     //   201: goto -127 -> 74
  4975.     //   204: iconst_0
  4976.     //   205: istore 5
  4977.     //   207: goto -53 -> 154
  4978.     //   210: astore 9
  4979.     //   212: lload 6
  4980.     //   214: invokestatic 755  android/os/Binder:restoreCallingIdentity    (J)V
  4981.     //   217: goto -25 -> 192
  4982.     //   220: astore_3
  4983.     //   221: aload_2
  4984.     //   222: monitorexit
  4985.     //   223: aload_3
  4986.     //   224: athrow
  4987.     //   225: astore 8
  4988.     //   227: lload 6
  4989.     //   229: invokestatic 755  android/os/Binder:restoreCallingIdentity    (J)V
  4990.     //   232: aload 8
  4991.     //   234: athrow
  4992.     //
  4993.     // Exception table:
  4994.     //   from   to  target  type
  4995.     //   165    187 210 android/os/RemoteException
  4996.     //   123    151 220 finally
  4997.     //   154    165 220 finally
  4998.     //   187    192 220 finally
  4999.     //   192    194 220 finally
  5000.     //   212    217 220 finally
  5001.     //   221    223 220 finally
  5002.     //   227    235 220 finally
  5003.     //   165    187 225 finally
  5004.   }
  5005.  
  5006.   public long timeSinceScreenOn()
  5007.   {
  5008.     synchronized (this.mLocks)
  5009.     {
  5010.       if ((0x1 & this.mPowerState) != 0)
  5011.         return 0L;
  5012.       long l = SystemClock.elapsedRealtime() - this.mScreenOffTime;
  5013.       return l;
  5014.     }
  5015.   }
  5016.  
  5017.   public void updateBlockedUids(int paramInt, boolean paramBoolean)
  5018.   {
  5019.     LockList localLockList = this.mLocks;
  5020.     for (int i = 0; ; i++)
  5021.       try
  5022.       {
  5023.         if (i < this.mLocks.size())
  5024.         {
  5025.           WakeLock localWakeLock = (WakeLock)this.mLocks.get(i);
  5026.           if ((localWakeLock != null) && ((localWakeLock.uid == paramInt) || (localWakeLock.uid == 1000)) && (paramBoolean))
  5027.           {
  5028.             releaseWakeLockLocked(localWakeLock.binder, localWakeLock.flags, false);
  5029.             localWakeLock.isReleasedInternal = true;
  5030.           }
  5031.         }
  5032.         else
  5033.         {
  5034.           return;
  5035.         }
  5036.       }
  5037.       finally
  5038.       {
  5039.       }
  5040.   }
  5041.  
  5042.   public void updateWakeLockWorkSource(IBinder paramIBinder, WorkSource paramWorkSource)
  5043.   {
  5044.     int i = Binder.getCallingUid();
  5045.     int j = Binder.getCallingPid();
  5046.     if ((paramWorkSource != null) && (paramWorkSource.size() == 0))
  5047.       paramWorkSource = null;
  5048.     if (paramWorkSource != null)
  5049.       enforceWakeSourcePermission(i, j);
  5050.     int k;
  5051.     synchronized (this.mLocks)
  5052.     {
  5053.       k = this.mLocks.getIndex(paramIBinder);
  5054.       if (k < 0)
  5055.         throw new IllegalArgumentException("Wake lock not active");
  5056.     }
  5057.     WakeLock localWakeLock = (WakeLock)this.mLocks.get(k);
  5058.     WorkSource localWorkSource1 = localWakeLock.ws;
  5059.     if (paramWorkSource != null);
  5060.     for (WorkSource localWorkSource2 = new WorkSource(paramWorkSource); ; localWorkSource2 = null)
  5061.     {
  5062.       localWakeLock.ws = localWorkSource2;
  5063.       noteStopWakeLocked(localWakeLock, localWorkSource1);
  5064.       noteStartWakeLocked(localWakeLock, paramWorkSource);
  5065.       return;
  5066.     }
  5067.   }
  5068.  
  5069.   public void userActivity(long paramLong, boolean paramBoolean)
  5070.   {
  5071.     if (this.mContext.checkCallingOrSelfPermission("android.permission.DEVICE_POWER") != 0)
  5072.     {
  5073.       if (shouldLog(paramLong))
  5074.         Slog.w("PowerManagerService", "Caller does not have DEVICE_POWER permission.  pid=" + Binder.getCallingPid() + " uid=" + Binder.getCallingUid());
  5075.       return;
  5076.     }
  5077.     userActivity(paramLong, -1L, paramBoolean, 0, false, false);
  5078.   }
  5079.  
  5080.   public void userActivity(long paramLong, boolean paramBoolean, int paramInt)
  5081.   {
  5082.     userActivity(paramLong, -1L, paramBoolean, paramInt, false, false);
  5083.   }
  5084.  
  5085.   public void userActivity(long paramLong, boolean paramBoolean1, int paramInt, boolean paramBoolean2)
  5086.   {
  5087.     userActivity(paramLong, -1L, paramBoolean1, paramInt, paramBoolean2, false);
  5088.   }
  5089.  
  5090.   public void userActivityWithForce(long paramLong, boolean paramBoolean1, boolean paramBoolean2)
  5091.   {
  5092.     this.mContext.enforceCallingOrSelfPermission("android.permission.DEVICE_POWER", null);
  5093.     this.mUserActivityReason = "userActivityWithForce";
  5094.     userActivity(paramLong, -1L, paramBoolean1, 0, paramBoolean2, false);
  5095.   }
  5096.  
  5097.   private final class AutoPowerOffReceiver extends BroadcastReceiver
  5098.   {
  5099.     private AutoPowerOffReceiver()
  5100.     {
  5101.     }
  5102.  
  5103.     public void onReceive(Context paramContext, Intent paramIntent)
  5104.     {
  5105.       PowerManagerService.this.shutdown("AutoPowerOff");
  5106.     }
  5107.   }
  5108.  
  5109.   private final class BatteryReceiver extends BroadcastReceiver
  5110.   {
  5111.     private BatteryReceiver()
  5112.     {
  5113.     }
  5114.  
  5115.     public void onReceive(Context paramContext, Intent paramIntent)
  5116.     {
  5117.       synchronized (PowerManagerService.this.mLocks)
  5118.       {
  5119.         boolean bool = PowerManagerService.this.mIsPowered;
  5120.         PowerManagerService.access$902(PowerManagerService.this, PowerManagerService.this.mBatteryService.isPowered());
  5121.         PowerManagerService.LockList localLockList2;
  5122.         if (PowerManagerService.this.mIsPowered != bool)
  5123.         {
  5124.           PowerManagerService.access$1102(PowerManagerService.this, true);
  5125.           PowerManagerService.this.updateWakeLockLocked();
  5126.           localLockList2 = PowerManagerService.this.mLocks;
  5127.           if (!bool);
  5128.         }
  5129.         try
  5130.         {
  5131.           if (((0x1 & PowerManagerService.this.mPowerState) != 0) || (PowerManagerService.this.mUnplugTurnsOnScreen))
  5132.           {
  5133.             PowerManagerService.access$1402(PowerManagerService.this, "battery plug");
  5134.             PowerManagerService.this.forceUserActivityLocked();
  5135.           }
  5136.           return;
  5137.         }
  5138.         finally
  5139.         {
  5140.         }
  5141.       }
  5142.     }
  5143.   }
  5144.  
  5145.   private final class BootCompletedReceiver extends BroadcastReceiver
  5146.   {
  5147.     private BootCompletedReceiver()
  5148.     {
  5149.     }
  5150.  
  5151.     public void onReceive(Context paramContext, Intent paramIntent)
  5152.     {
  5153.       PowerManagerService.this.bootCompleted();
  5154.     }
  5155.   }
  5156.  
  5157.   private class DVFSLock
  5158.     implements IBinder.DeathRecipient
  5159.   {
  5160.     long acqTime;
  5161.     final IBinder binder;
  5162.     final int frequency;
  5163.     final int pid;
  5164.     final String tag;
  5165.     final int type;
  5166.     final int uid;
  5167.  
  5168.     DVFSLock(int paramInt1, int paramIBinder, IBinder paramString, String paramInt2, int paramInt3, int arg7)
  5169.     {
  5170.       this.type = paramInt1;
  5171.       this.frequency = paramIBinder;
  5172.       this.binder = paramString;
  5173.       this.tag = paramInt2;
  5174.       if (paramInt3 == PowerManagerService.this.MY_UID)
  5175.         paramInt3 = 1000;
  5176.       this.uid = paramInt3;
  5177.       int i;
  5178.       this.pid = i;
  5179.       try
  5180.       {
  5181.         paramString.linkToDeath(this, 0);
  5182.         return;
  5183.       }
  5184.       catch (RemoteException localRemoteException)
  5185.       {
  5186.         binderDied();
  5187.       }
  5188.     }
  5189.  
  5190.     public void binderDied()
  5191.     {
  5192.       synchronized (PowerManagerService.this.mDVFSLocks)
  5193.       {
  5194.         Slog.e("PowerManagerService", "DVFSLock : binderDied : tag : " + this.tag);
  5195.         PowerManagerService.this.releaseDVFSLockLocked(this.binder);
  5196.         return;
  5197.       }
  5198.     }
  5199.   }
  5200.  
  5201.   private class DVFSLockList extends ArrayList<PowerManagerService.DVFSLock>
  5202.   {
  5203.     private DVFSLockList()
  5204.     {
  5205.     }
  5206.  
  5207.     void addLock(PowerManagerService.DVFSLock paramDVFSLock)
  5208.     {
  5209.       if (getIndex(paramDVFSLock.binder) < 0)
  5210.         add(paramDVFSLock);
  5211.     }
  5212.  
  5213.     void dumpDVFSLockList()
  5214.     {
  5215.       while (true)
  5216.       {
  5217.         int j;
  5218.         int k;
  5219.         synchronized (PowerManagerService.this.mDVFSLocks)
  5220.         {
  5221.           int i = size();
  5222.           if (i == 0)
  5223.             return;
  5224.           Slog.d("PowerManagerService", "dumpDVFSLockList : DVFS_MAX_LIMIT");
  5225.           j = 0;
  5226.           if (j < i)
  5227.           {
  5228.             if (((PowerManagerService.DVFSLock)get(j)).type == 2)
  5229.               Slog.d("PowerManagerService", "    " + j + " : tag : " + ((PowerManagerService.DVFSLock)get(j)).tag + "  frequency : " + ((PowerManagerService.DVFSLock)get(j)).frequency + "  elapsed time : " + (SystemClock.elapsedRealtime() - ((PowerManagerService.DVFSLock)get(j)).acqTime));
  5230.           }
  5231.           else
  5232.           {
  5233.             Slog.d("PowerManagerService", "dumpDVFSLockList : DVFS_MIN_LIMIT");
  5234.             k = 0;
  5235.             if (k < i)
  5236.             {
  5237.               if (((PowerManagerService.DVFSLock)get(k)).type != 1)
  5238.                 break label384;
  5239.               Slog.d("PowerManagerService", "    " + k + " : tag : " + ((PowerManagerService.DVFSLock)get(k)).tag + "  frequency : " + ((PowerManagerService.DVFSLock)get(k)).frequency + "  elapsed time : " + (SystemClock.elapsedRealtime() - ((PowerManagerService.DVFSLock)get(k)).acqTime));
  5240.               break label384;
  5241.             }
  5242.             if (PowerManagerService.this.mCurrentDVFSMaxLock != null)
  5243.               Slog.d("PowerManagerService", "dumpDVFSLockList : mCurrentDVFSMaxLock : " + getIndex(PowerManagerService.this.mCurrentDVFSMaxLock.binder));
  5244.             if (PowerManagerService.this.mCurrentDVFSMinLock != null)
  5245.               Slog.d("PowerManagerService", "dumpDVFSLockList : mCurrentDVFSMinLock : " + getIndex(PowerManagerService.this.mCurrentDVFSMinLock.binder));
  5246.             return;
  5247.           }
  5248.         }
  5249.         j++;
  5250.         continue;
  5251.         label384: k++;
  5252.       }
  5253.     }
  5254.  
  5255.     int getIndex(IBinder paramIBinder)
  5256.     {
  5257.       int i = size();
  5258.       for (int j = 0; j < i; j++)
  5259.         if (((PowerManagerService.DVFSLock)get(j)).binder == paramIBinder)
  5260.           return j;
  5261.       return -1;
  5262.     }
  5263.  
  5264.     PowerManagerService.DVFSLock getMaxOfMinLock()
  5265.     {
  5266.       int i = size();
  5267.       int j = -1;
  5268.       int k = -1;
  5269.       int m = 0;
  5270.       if (m < i)
  5271.       {
  5272.         int n;
  5273.         if (((PowerManagerService.DVFSLock)get(m)).type == 1)
  5274.         {
  5275.           n = ((PowerManagerService.DVFSLock)get(m)).frequency;
  5276.           if (k != -1)
  5277.             break label65;
  5278.           k = n;
  5279.           j = m;
  5280.         }
  5281.         while (true)
  5282.         {
  5283.           m++;
  5284.           break;
  5285.           label65: if (n > k)
  5286.           {
  5287.             k = n;
  5288.             j = m;
  5289.           }
  5290.         }
  5291.       }
  5292.       if (j >= 0)
  5293.         return (PowerManagerService.DVFSLock)get(j);
  5294.       return null;
  5295.     }
  5296.  
  5297.     PowerManagerService.DVFSLock getMinOfMaxLock()
  5298.     {
  5299.       int i = size();
  5300.       int j = -1;
  5301.       int k = -1;
  5302.       int m = 0;
  5303.       if (m < i)
  5304.       {
  5305.         int n;
  5306.         if (((PowerManagerService.DVFSLock)get(m)).type == 2)
  5307.         {
  5308.           n = ((PowerManagerService.DVFSLock)get(m)).frequency;
  5309.           if (k != -1)
  5310.             break label65;
  5311.           k = n;
  5312.           j = m;
  5313.         }
  5314.         while (true)
  5315.         {
  5316.           m++;
  5317.           break;
  5318.           label65: if (n < k)
  5319.           {
  5320.             k = n;
  5321.             j = m;
  5322.           }
  5323.         }
  5324.       }
  5325.       if (j >= 0)
  5326.         return (PowerManagerService.DVFSLock)get(j);
  5327.       return null;
  5328.     }
  5329.  
  5330.     PowerManagerService.DVFSLock removeLock(IBinder paramIBinder)
  5331.     {
  5332.       int i = getIndex(paramIBinder);
  5333.       if (i >= 0)
  5334.         return (PowerManagerService.DVFSLock)remove(i);
  5335.       return null;
  5336.     }
  5337.   }
  5338.  
  5339.   private final class DockReceiver extends BroadcastReceiver
  5340.   {
  5341.     private DockReceiver()
  5342.     {
  5343.     }
  5344.  
  5345.     public void onReceive(Context paramContext, Intent paramIntent)
  5346.     {
  5347.       int i = paramIntent.getIntExtra("android.intent.extra.DOCK_STATE", 0);
  5348.       PowerManagerService.this.dockStateChanged(i);
  5349.     }
  5350.   }
  5351.  
  5352.   private class LockList extends ArrayList<PowerManagerService.WakeLock>
  5353.   {
  5354.     private LockList()
  5355.     {
  5356.     }
  5357.  
  5358.     void addLock(PowerManagerService.WakeLock paramWakeLock)
  5359.     {
  5360.       if (getIndex(paramWakeLock.binder) < 0)
  5361.         add(paramWakeLock);
  5362.     }
  5363.  
  5364.     int gatherState()
  5365.     {
  5366.       int i = 0;
  5367.       int j = size();
  5368.       for (int k = 0; k < j; k++)
  5369.       {
  5370.         PowerManagerService.WakeLock localWakeLock = (PowerManagerService.WakeLock)get(k);
  5371.         if ((localWakeLock.activated) && (PowerManagerService.this.isScreenLock(localWakeLock.flags)))
  5372.           i |= localWakeLock.minState;
  5373.       }
  5374.       return i;
  5375.     }
  5376.  
  5377.     int getIndex(IBinder paramIBinder)
  5378.     {
  5379.       int i = size();
  5380.       for (int j = 0; j < i; j++)
  5381.         if (((PowerManagerService.WakeLock)get(j)).binder == paramIBinder)
  5382.           return j;
  5383.       return -1;
  5384.     }
  5385.  
  5386.     int reactivateScreenLocksLocked()
  5387.     {
  5388.       int i = 0;
  5389.       int j = size();
  5390.       for (int k = 0; k < j; k++)
  5391.       {
  5392.         PowerManagerService.WakeLock localWakeLock = (PowerManagerService.WakeLock)get(k);
  5393.         if (PowerManagerService.this.isScreenLock(localWakeLock.flags))
  5394.         {
  5395.           localWakeLock.activated = true;
  5396.           i |= localWakeLock.minState;
  5397.         }
  5398.       }
  5399.       if (!PowerManagerService.this.isScreenBright())
  5400.         Slog.d("PowerManagerService", "reactivateScreenLocksLocked mProxIgnoredBecauseScreenTurnedOff=" + PowerManagerService.this.mProxIgnoredBecauseScreenTurnedOff);
  5401.       PowerManagerService.access$9902(PowerManagerService.this, false);
  5402.       return i;
  5403.     }
  5404.  
  5405.     PowerManagerService.WakeLock removeLock(IBinder paramIBinder)
  5406.     {
  5407.       int i = getIndex(paramIBinder);
  5408.       if (i >= 0)
  5409.         return (PowerManagerService.WakeLock)remove(i);
  5410.       return null;
  5411.     }
  5412.   }
  5413.  
  5414.   private class PokeLock
  5415.     implements IBinder.DeathRecipient
  5416.   {
  5417.     boolean awakeOnSet;
  5418.     IBinder binder;
  5419.     int pokey;
  5420.     String tag;
  5421.  
  5422.     PokeLock(int paramIBinder, IBinder paramString, String arg4)
  5423.     {
  5424.       this.pokey = paramIBinder;
  5425.       this.binder = paramString;
  5426.       Object localObject;
  5427.       this.tag = localObject;
  5428.       try
  5429.       {
  5430.         paramString.linkToDeath(this, 0);
  5431.         return;
  5432.       }
  5433.       catch (RemoteException localRemoteException)
  5434.       {
  5435.         binderDied();
  5436.       }
  5437.     }
  5438.  
  5439.     public void binderDied()
  5440.     {
  5441.       Slog.e("PowerManagerService", "PokeLock : binderDied()");
  5442.       PowerManagerService.this.setPokeLock(0, this.binder, this.tag);
  5443.     }
  5444.   }
  5445.  
  5446.   private final class ProximityFromCPReceiver extends BroadcastReceiver
  5447.   {
  5448.     private ProximityFromCPReceiver()
  5449.     {
  5450.     }
  5451.  
  5452.     public void onReceive(Context paramContext, Intent paramIntent)
  5453.     {
  5454.       PowerManagerService.access$1702(PowerManagerService.this, paramIntent.getStringExtra("cmd").equals("on"));
  5455.       Slog.d("PowerManagerService", "ProximityFromCPReceiver : onReceive : " + PowerManagerService.this.mBoolProximityCP);
  5456.       if (PowerManagerService.this.mBoolProximityCP)
  5457.       {
  5458.         PowerManagerService.this.mSensorManager.registerListener(PowerManagerService.this.mProximityListenerForDataCall, PowerManagerService.this.mProximitySensor, 3);
  5459.         return;
  5460.       }
  5461.       PowerManagerService.this.mSensorManager.unregisterListener(PowerManagerService.this.mProximityListenerForDataCall);
  5462.     }
  5463.   }
  5464.  
  5465.   class ScreenBrightnessAnimator extends HandlerThread
  5466.   {
  5467.     static final int ANIMATE_LIGHTS = 10;
  5468.     static final int ANIMATE_POWER_OFF = 11;
  5469.     private int currentMask;
  5470.     volatile int currentValue;
  5471.     private int duration;
  5472.     volatile int endSensorValue;
  5473.     volatile int endValue;
  5474.     private final String prefix;
  5475.     volatile int startSensorValue;
  5476.     private long startTimeMillis;
  5477.     volatile int startValue;
  5478.  
  5479.     public ScreenBrightnessAnimator(String paramInt, int arg3)
  5480.     {
  5481.       super(i);
  5482.       this.prefix = paramInt;
  5483.     }
  5484.  
  5485.     private void animateInternal(int paramInt1, boolean paramBoolean, int paramInt2)
  5486.     {
  5487.       int j;
  5488.       int i1;
  5489.       while (true)
  5490.       {
  5491.         synchronized (PowerManagerService.this.mScreenBrightnessAnimator)
  5492.         {
  5493.           if (this.currentValue != this.endValue)
  5494.           {
  5495.             int i = (int)(SystemClock.elapsedRealtime() - this.startTimeMillis);
  5496.             if (i < this.duration)
  5497.             {
  5498.               int k = this.endValue - this.startValue;
  5499.               j = Math.min(255, Math.max(0, this.startValue + k * i / this.duration));
  5500.               if ((paramInt2 > 0) && (j == this.currentValue))
  5501.               {
  5502.                 int n = this.duration / Math.abs(k);
  5503.                 paramInt2 = Math.min(this.duration - i, n);
  5504.                 if (k >= 0)
  5505.                   break label375;
  5506.                 i1 = -1;
  5507.                 break;
  5508.               }
  5509.               int m = this.endSensorValue - this.startSensorValue;
  5510.               PowerManagerService.access$7902(PowerManagerService.this, this.startSensorValue + m * i / this.duration);
  5511.               PowerManagerService.this.mScreenBrightnessHandler.removeMessages(10);
  5512.               Handler localHandler = PowerManagerService.this.mScreenBrightnessHandler;
  5513.               if (!paramBoolean)
  5514.                 localHandler.obtainMessage(11, 16, 0).sendToTarget();
  5515.               Message localMessage = localHandler.obtainMessage(10, paramInt1, j);
  5516.               PowerManagerService.this.mScreenBrightnessHandler.sendMessageDelayed(localMessage, paramInt2);
  5517.               return;
  5518.             }
  5519.             j = this.endValue;
  5520.             PowerManagerService.access$7902(PowerManagerService.this, this.endSensorValue);
  5521.             if (this.endValue <= 0)
  5522.               continue;
  5523.             PowerManagerService.access$7202(PowerManagerService.this, false);
  5524.           }
  5525.         }
  5526.         Slog.i("PowerManagerService", "Light Animator Finished currentValue=" + this.currentValue);
  5527.         synchronized (PowerManagerService.this.mDVFSLocks)
  5528.         {
  5529.           if ((PowerManagerService.this.mAMOLEDAnimationDVFSLock != null) && (PowerManagerService.this.mAMOLEDAnimationDVFSLock.isHeld()))
  5530.             PowerManagerService.this.mAMOLEDAnimationDVFSLock.release();
  5531.         }
  5532.       }
  5533.       while (true)
  5534.       {
  5535.         j += i1;
  5536.         break;
  5537.         label375: i1 = 1;
  5538.       }
  5539.     }
  5540.  
  5541.     public void animateTo(int paramInt1, int paramInt2, int paramInt3)
  5542.     {
  5543.       animateTo(paramInt1, PowerManagerService.this.mHighestLightSensorValue, paramInt2, paramInt3);
  5544.     }
  5545.  
  5546.     // ERROR //
  5547.     public void animateTo(int paramInt1, int paramInt2, int paramInt3, int paramInt4)
  5548.     {
  5549.       // Byte code:
  5550.       //   0: iconst_1
  5551.       //   1: istore 5
  5552.       //   3: aload_0
  5553.       //   4: getfield 26   com/android/server/PowerManagerService$ScreenBrightnessAnimator:this$0  Lcom/android/server/PowerManagerService;
  5554.       //   7: invokestatic 47   com/android/server/PowerManagerService:access$7000  (Lcom/android/server/PowerManagerService;)Lcom/android/server/PowerManagerService$ScreenBrightnessAnimator;
  5555.       //   10: astore 6
  5556.       //   12: aload 6
  5557.       //   14: monitorenter
  5558.       //   15: iload_3
  5559.       //   16: iconst_2
  5560.       //   17: iand
  5561.       //   18: ifne +42 -> 60
  5562.       //   21: iload_3
  5563.       //   22: iconst_4
  5564.       //   23: iand
  5565.       //   24: ifeq +14 -> 38
  5566.       //   27: aload_0
  5567.       //   28: getfield 26  com/android/server/PowerManagerService$ScreenBrightnessAnimator:this$0  Lcom/android/server/PowerManagerService;
  5568.       //   31: invokestatic 167 com/android/server/PowerManagerService:access$7400  (Lcom/android/server/PowerManagerService;)Lcom/android/server/LightsService$Light;
  5569.       //   34: iload_1
  5570.       //   35: invokevirtual 172    com/android/server/LightsService$Light:setBrightness    (I)V
  5571.       //   38: iload_3
  5572.       //   39: bipush 8
  5573.       //   41: iand
  5574.       //   42: ifeq +14 -> 56
  5575.       //   45: aload_0
  5576.       //   46: getfield 26  com/android/server/PowerManagerService$ScreenBrightnessAnimator:this$0  Lcom/android/server/PowerManagerService;
  5577.       //   49: invokestatic 175 com/android/server/PowerManagerService:access$7500  (Lcom/android/server/PowerManagerService;)Lcom/android/server/LightsService$Light;
  5578.       //   52: iload_1
  5579.       //   53: invokevirtual 172    com/android/server/LightsService$Light:setBrightness    (I)V
  5580.       //   56: aload 6
  5581.       //   58: monitorexit
  5582.       //   59: return
  5583.       //   60: aload_0
  5584.       //   61: invokevirtual 178    com/android/server/PowerManagerService$ScreenBrightnessAnimator:isAnimating ()Z
  5585.       //   64: ifeq +24 -> 88
  5586.       //   67: iload_3
  5587.       //   68: aload_0
  5588.       //   69: getfield 41  com/android/server/PowerManagerService$ScreenBrightnessAnimator:currentMask I
  5589.       //   72: ixor
  5590.       //   73: ifeq +15 -> 88
  5591.       //   76: ldc 114
  5592.       //   78: ldc 180
  5593.       //   80: invokestatic 183 android/util/Slog:w (Ljava/lang/String;Ljava/lang/String;)I
  5594.       //   83: pop
  5595.       //   84: aload_0
  5596.       //   85: invokevirtual 186    com/android/server/PowerManagerService$ScreenBrightnessAnimator:cancelAnimation ()V
  5597.       //   88: aload_0
  5598.       //   89: getfield 26  com/android/server/PowerManagerService$ScreenBrightnessAnimator:this$0  Lcom/android/server/PowerManagerService;
  5599.       //   92: invokestatic 190 com/android/server/PowerManagerService:access$7200  (Lcom/android/server/PowerManagerService;)Z
  5600.       //   95: ifeq +19 -> 114
  5601.       //   98: iconst_0
  5602.       //   99: istore 4
  5603.       //   101: iload_1
  5604.       //   102: ifle +12 -> 114
  5605.       //   105: aload_0
  5606.       //   106: getfield 26 com/android/server/PowerManagerService$ScreenBrightnessAnimator:this$0  Lcom/android/server/PowerManagerService;
  5607.       //   109: iconst_0
  5608.       //   110: invokestatic 112    com/android/server/PowerManagerService:access$7202  (Lcom/android/server/PowerManagerService;Z)Z
  5609.       //   113: pop
  5610.       //   114: aload_0
  5611.       //   115: aload_0
  5612.       //   116: getfield 49 com/android/server/PowerManagerService$ScreenBrightnessAnimator:currentValue    I
  5613.       //   119: putfield 63 com/android/server/PowerManagerService$ScreenBrightnessAnimator:startValue  I
  5614.       //   122: aload_0
  5615.       //   123: iload_1
  5616.       //   124: putfield 51 com/android/server/PowerManagerService$ScreenBrightnessAnimator:endValue    I
  5617.       //   127: aload_0
  5618.       //   128: aload_0
  5619.       //   129: getfield 26 com/android/server/PowerManagerService$ScreenBrightnessAnimator:this$0  Lcom/android/server/PowerManagerService;
  5620.       //   132: invokestatic 160    com/android/server/PowerManagerService:access$7900  (Lcom/android/server/PowerManagerService;)I
  5621.       //   135: putfield 80 com/android/server/PowerManagerService$ScreenBrightnessAnimator:startSensorValue    I
  5622.       //   138: aload_0
  5623.       //   139: iload_2
  5624.       //   140: putfield 78 com/android/server/PowerManagerService$ScreenBrightnessAnimator:endSensorValue  I
  5625.       //   143: aload_0
  5626.       //   144: iload_3
  5627.       //   145: putfield 41 com/android/server/PowerManagerService$ScreenBrightnessAnimator:currentMask I
  5628.       //   148: aload_0
  5629.       //   149: aload_0
  5630.       //   150: getfield 26 com/android/server/PowerManagerService$ScreenBrightnessAnimator:this$0  Lcom/android/server/PowerManagerService;
  5631.       //   153: invokestatic 194    com/android/server/PowerManagerService:access$3800  (Lcom/android/server/PowerManagerService;)F
  5632.       //   156: iload 4
  5633.       //   158: i2f
  5634.       //   159: fmul
  5635.       //   160: f2i
  5636.       //   161: putfield 61 com/android/server/PowerManagerService$ScreenBrightnessAnimator:duration    I
  5637.       //   164: aload_0
  5638.       //   165: invokestatic 57 android/os/SystemClock:elapsedRealtime  ()J
  5639.       //   168: putfield 59 com/android/server/PowerManagerService$ScreenBrightnessAnimator:startTimeMillis J
  5640.       //   171: iload_1
  5641.       //   172: aload_0
  5642.       //   173: getfield 49 com/android/server/PowerManagerService$ScreenBrightnessAnimator:currentValue    I
  5643.       //   176: if_icmpeq +124 -> 300
  5644.       //   179: iload_3
  5645.       //   180: iconst_3
  5646.       //   181: iand
  5647.       //   182: ifeq +130 -> 312
  5648.       //   185: iload 5
  5649.       //   187: istore 9
  5650.       //   189: aload_0
  5651.       //   190: getfield 51 com/android/server/PowerManagerService$ScreenBrightnessAnimator:endValue    I
  5652.       //   193: ifne +125 -> 318
  5653.       //   196: iload 5
  5654.       //   198: ifeq +41 -> 239
  5655.       //   201: iload 9
  5656.       //   203: ifeq +36 -> 239
  5657.       //   206: aload_0
  5658.       //   207: getfield 26 com/android/server/PowerManagerService$ScreenBrightnessAnimator:this$0  Lcom/android/server/PowerManagerService;
  5659.       //   210: invokestatic 88 com/android/server/PowerManagerService:access$6900  (Lcom/android/server/PowerManagerService;)Landroid/os/Handler;
  5660.       //   213: aconst_null
  5661.       //   214: invokevirtual 198   android/os/Handler:removeCallbacksAndMessages   (Ljava/lang/Object;)V
  5662.       //   217: aload_0
  5663.       //   218: getfield 26 com/android/server/PowerManagerService$ScreenBrightnessAnimator:this$0  Lcom/android/server/PowerManagerService;
  5664.       //   221: aload_0
  5665.       //   222: getfield 26 com/android/server/PowerManagerService$ScreenBrightnessAnimator:this$0  Lcom/android/server/PowerManagerService;
  5666.       //   225: invokestatic 201    com/android/server/PowerManagerService:access$8300  (Lcom/android/server/PowerManagerService;)I
  5667.       //   228: invokestatic 204    com/android/server/PowerManagerService:access$8400  (Lcom/android/server/PowerManagerService;I)I
  5668.       //   231: pop
  5669.       //   232: aload_0
  5670.       //   233: sipush 200
  5671.       //   236: putfield 61 com/android/server/PowerManagerService$ScreenBrightnessAnimator:duration    I
  5672.       //   239: iload 9
  5673.       //   241: ifeq +59 -> 300
  5674.       //   244: aload_0
  5675.       //   245: getfield 26 com/android/server/PowerManagerService$ScreenBrightnessAnimator:this$0  Lcom/android/server/PowerManagerService;
  5676.       //   248: invokestatic 141    com/android/server/PowerManagerService:access$8000  (Lcom/android/server/PowerManagerService;)Lcom/android/server/PowerManagerService$DVFSLockList;
  5677.       //   251: astore 10
  5678.       //   253: aload 10
  5679.       //   255: monitorenter
  5680.       //   256: aload_0
  5681.       //   257: getfield 26 com/android/server/PowerManagerService$ScreenBrightnessAnimator:this$0  Lcom/android/server/PowerManagerService;
  5682.       //   260: invokestatic 145    com/android/server/PowerManagerService:access$8100  (Lcom/android/server/PowerManagerService;)Lcom/android/server/PowerManagerService$UnsynchronizedDVFSLock;
  5683.       //   263: ifnull +26 -> 289
  5684.       //   266: aload_0
  5685.       //   267: getfield 26 com/android/server/PowerManagerService$ScreenBrightnessAnimator:this$0  Lcom/android/server/PowerManagerService;
  5686.       //   270: invokestatic 145    com/android/server/PowerManagerService:access$8100  (Lcom/android/server/PowerManagerService;)Lcom/android/server/PowerManagerService$UnsynchronizedDVFSLock;
  5687.       //   273: invokevirtual 151   com/android/server/PowerManagerService$UnsynchronizedDVFSLock:isHeld    ()Z
  5688.       //   276: ifne +13 -> 289
  5689.       //   279: aload_0
  5690.       //   280: getfield 26 com/android/server/PowerManagerService$ScreenBrightnessAnimator:this$0  Lcom/android/server/PowerManagerService;
  5691.       //   283: invokestatic 145    com/android/server/PowerManagerService:access$8100  (Lcom/android/server/PowerManagerService;)Lcom/android/server/PowerManagerService$UnsynchronizedDVFSLock;
  5692.       //   286: invokevirtual 207   com/android/server/PowerManagerService$UnsynchronizedDVFSLock:acquire   ()V
  5693.       //   289: aload 10
  5694.       //   291: monitorexit
  5695.       //   292: aload_0
  5696.       //   293: iload_3
  5697.       //   294: iload 5
  5698.       //   296: iconst_0
  5699.       //   297: invokespecial 37    com/android/server/PowerManagerService$ScreenBrightnessAnimator:animateInternal (IZI)V
  5700.       //   300: aload 6
  5701.       //   302: monitorexit
  5702.       //   303: return
  5703.       //   304: astore 7
  5704.       //   306: aload 6
  5705.       //   308: monitorexit
  5706.       //   309: aload 7
  5707.       //   311: athrow
  5708.       //   312: iconst_0
  5709.       //   313: istore 9
  5710.       //   315: goto -126 -> 189
  5711.       //   318: iconst_0
  5712.       //   319: istore 5
  5713.       //   321: goto -125 -> 196
  5714.       //   324: astore 11
  5715.       //   326: aload 10
  5716.       //   328: monitorexit
  5717.       //   329: aload 11
  5718.       //   331: athrow
  5719.       //
  5720.       // Exception table:
  5721.       //   from to  target  type
  5722.       //   27   38  304 finally
  5723.       //   45   56  304 finally
  5724.       //   56   59  304 finally
  5725.       //   60   88  304 finally
  5726.       //   88   98  304 finally
  5727.       //   105  114 304 finally
  5728.       //   114  179 304 finally
  5729.       //   189  196 304 finally
  5730.       //   206  239 304 finally
  5731.       //   244  256 304 finally
  5732.       //   292  300 304 finally
  5733.       //   300  303 304 finally
  5734.       //   306  309 304 finally
  5735.       //   329  332 304 finally
  5736.       //   256  289 324 finally
  5737.       //   289  292 324 finally
  5738.       //   326  329 324 finally
  5739.     }
  5740.  
  5741.     public void cancelAnimation()
  5742.     {
  5743.       animateTo(this.endValue, this.currentMask, 0);
  5744.     }
  5745.  
  5746.     public void dump(PrintWriter paramPrintWriter, String paramString)
  5747.     {
  5748.       paramPrintWriter.println(paramString);
  5749.       paramPrintWriter.println("  animating: start:" + this.startValue + ", end:" + this.endValue + ", duration:" + this.duration + ", current:" + this.currentValue);
  5750.       paramPrintWriter.println("  startSensorValue:" + this.startSensorValue + " endSensorValue:" + this.endSensorValue);
  5751.       paramPrintWriter.println("  startTimeMillis:" + this.startTimeMillis + " now:" + SystemClock.elapsedRealtime());
  5752.       paramPrintWriter.println("  currentMask:" + PowerManagerService.dumpPowerState(this.currentMask));
  5753.     }
  5754.  
  5755.     public int getCurrentBrightness()
  5756.     {
  5757.       synchronized (PowerManagerService.this.mScreenBrightnessAnimator)
  5758.       {
  5759.         int i = this.currentValue;
  5760.         return i;
  5761.       }
  5762.     }
  5763.  
  5764.     public boolean isAnimating()
  5765.     {
  5766.       while (true)
  5767.       {
  5768.         synchronized (PowerManagerService.this.mScreenBrightnessAnimator)
  5769.         {
  5770.           if (this.currentValue != this.endValue)
  5771.           {
  5772.             bool = true;
  5773.             return bool;
  5774.           }
  5775.         }
  5776.         boolean bool = false;
  5777.       }
  5778.     }
  5779.  
  5780.     protected void onLooperPrepared()
  5781.     {
  5782.       PowerManagerService.access$6902(PowerManagerService.this, new Handler()
  5783.       {
  5784.         public void handleMessage(Message paramAnonymousMessage)
  5785.         {
  5786.           int i = 1;
  5787.           while (true)
  5788.           {
  5789.             long l2;
  5790.             synchronized (PowerManagerService.this.mScreenBrightnessAnimator)
  5791.             {
  5792.               boolean bool1 = PowerManagerService.this.mAutoBrightessEnabled;
  5793.               int j = 0;
  5794.               if (bool1)
  5795.               {
  5796.                 boolean bool2 = PowerManagerService.this.mInitialAnimation;
  5797.                 j = 0;
  5798.                 if (!bool2)
  5799.                   j = i;
  5800.               }
  5801.               if (paramAnonymousMessage.what == 10)
  5802.               {
  5803.                 int m = paramAnonymousMessage.arg1;
  5804.                 int n = paramAnonymousMessage.arg2;
  5805.                 long l1 = SystemClock.uptimeMillis();
  5806.                 if ((m & 0x2) != 0)
  5807.                   PowerManagerService.this.mLcdLight.setBrightness(n, j);
  5808.                 l2 = SystemClock.uptimeMillis() - l1;
  5809.                 if ((m & 0x4) != 0)
  5810.                   PowerManagerService.this.mButtonLight.setBrightness(n);
  5811.                 if ((m & 0x8) != 0)
  5812.                   PowerManagerService.this.mKeyboardLight.setBrightness(n);
  5813.                 if (l2 > 100L)
  5814.                 {
  5815.                   Slog.e("PowerManagerService", "Excessive delay setting brightness: " + l2 + "ms, mask=" + m);
  5816.                   break label269;
  5817.                   PowerManagerService.ScreenBrightnessAnimator.this.currentValue = n;
  5818.                   PowerManagerService.ScreenBrightnessAnimator.this.animateInternal(m, false, i);
  5819.                 }
  5820.               }
  5821.               else
  5822.               {
  5823.                 if (paramAnonymousMessage.what != 11)
  5824.                   continue;
  5825.                 int k = paramAnonymousMessage.arg1;
  5826.                 PowerManagerService.this.nativeStartSurfaceFlingerAnimation(k);
  5827.               }
  5828.             }
  5829.             label269: if (l2 < 16L)
  5830.               i = 16;
  5831.           }
  5832.         }
  5833.       });
  5834.       try
  5835.       {
  5836.         PowerManagerService.access$7802(PowerManagerService.this, true);
  5837.         notifyAll();
  5838.         return;
  5839.       }
  5840.       finally
  5841.       {
  5842.       }
  5843.     }
  5844.   }
  5845.  
  5846.   private class SettingsObserver
  5847.     implements Observer
  5848.   {
  5849.     private SettingsObserver()
  5850.     {
  5851.     }
  5852.  
  5853.     private float getFloat(String paramString, float paramFloat)
  5854.     {
  5855.       ContentValues localContentValues = PowerManagerService.this.mSettings.getValues(paramString);
  5856.       if (localContentValues != null);
  5857.       for (Float localFloat = localContentValues.getAsFloat("value"); ; localFloat = null)
  5858.       {
  5859.         if (localFloat != null)
  5860.           paramFloat = localFloat.floatValue();
  5861.         return paramFloat;
  5862.       }
  5863.     }
  5864.  
  5865.     private int getInt(String paramString, int paramInt)
  5866.     {
  5867.       ContentValues localContentValues = PowerManagerService.this.mSettings.getValues(paramString);
  5868.       if (localContentValues != null);
  5869.       for (Integer localInteger = localContentValues.getAsInteger("value"); ; localInteger = null)
  5870.       {
  5871.         if (localInteger != null)
  5872.           paramInt = localInteger.intValue();
  5873.         return paramInt;
  5874.       }
  5875.     }
  5876.  
  5877.     public void update(Observable paramObservable, Object paramObject)
  5878.     {
  5879.       while (true)
  5880.       {
  5881.         float f;
  5882.         synchronized (PowerManagerService.this.mLocks)
  5883.         {
  5884.           PowerManagerService.access$2202(PowerManagerService.this, getInt("stay_on_while_plugged_in", 1));
  5885.           PowerManagerService.this.updateWakeLockLocked();
  5886.           int i = PowerManagerService.this.mScreenOffTimeoutSetting;
  5887.           PowerManagerService.access$2302(PowerManagerService.this, getInt("screen_off_timeout", 15000));
  5888.           PowerManagerService.access$2402(PowerManagerService.this, getInt("is_secured_lock", 0));
  5889.           int j = getInt("button_key_light", 1500);
  5890.           int k = PowerManagerService.this.mButtonOffTimeoutSetting;
  5891.           int m = 0;
  5892.           if (k != j)
  5893.           {
  5894.             PowerManagerService.access$2502(PowerManagerService.this, j);
  5895.             m = 1;
  5896.           }
  5897.           PowerManagerService.access$2602(PowerManagerService.this, getInt("screen_brightness", 192));
  5898.           PowerManagerService.access$2702(PowerManagerService.this, 0.0F);
  5899.           PowerManagerService.this.setScreenBrightnessMode(getInt("screen_brightness_mode", 0));
  5900.           PowerManagerService.this.setScreenOffTimeoutsLocked();
  5901.           if (i != PowerManagerService.this.mScreenOffTimeoutSetting)
  5902.             PowerManagerService.this.setTimeoutLocked(SystemClock.uptimeMillis(), PowerManagerService.this.mTimeoutTask.nextState);
  5903.           int n = PowerManagerService.this.mAutoPowerOffTimeoutSetting;
  5904.           PowerManagerService.access$3202(PowerManagerService.this, Settings.System.getInt(PowerManagerService.this.mContext.getContentResolver(), "auto_power_off", 0));
  5905.           if ((PowerManagerService.this.mAutoPowerOffTimeoutSetting > 0) && (n != PowerManagerService.this.mAutoPowerOffTimeoutSetting))
  5906.           {
  5907.             PowerManagerService.this.mHandler.removeCallbacks(PowerManagerService.this.mUpdateAutoPowerOffTimeTask);
  5908.             long l = 1000L + SystemClock.uptimeMillis();
  5909.             PowerManagerService.this.mHandler.postAtTime(PowerManagerService.this.mUpdateAutoPowerOffTimeTask, l);
  5910.             PowerManagerService.this.mAutoPowerOffPartialLock.acquire();
  5911.           }
  5912.           if ((m == 1) && (PowerManagerService.this.isScreenOn()))
  5913.           {
  5914.             Slog.d("PowerManagerService", "SettingsObserver : update : userActivity()");
  5915.             PowerManagerService.access$1402(PowerManagerService.this, "SettingsObserver1");
  5916.             PowerManagerService.this.userActivity(SystemClock.uptimeMillis(), -1L, false, 3, false, false);
  5917.             PowerManagerService.access$1402(PowerManagerService.this, "SettingsObserver2");
  5918.             PowerManagerService.this.userActivity(SystemClock.uptimeMillis(), -1L, false, 1, false, false);
  5919.           }
  5920.           PowerManagerService.access$3802(PowerManagerService.this, getFloat("window_animation_scale", 1.0F));
  5921.           f = getFloat("transition_animation_scale", 1.0F);
  5922.           PowerManagerService.access$3902(PowerManagerService.this, 0);
  5923.           if (PowerManagerService.this.mWindowScaleAnimation > 0.5F)
  5924.           {
  5925.             PowerManagerService.access$3976(PowerManagerService.this, 16);
  5926.             break label453;
  5927.             return;
  5928.           }
  5929.         }
  5930.         label453: if (f <= 0.5F);
  5931.       }
  5932.     }
  5933.   }
  5934.  
  5935.   private class SmartSleepNotificationTask
  5936.     implements Runnable
  5937.   {
  5938.     private SmartSleepNotificationTask()
  5939.     {
  5940.     }
  5941.  
  5942.     public void run()
  5943.     {
  5944.       PowerManagerService.access$4702(PowerManagerService.this, false);
  5945.       if ((PowerManagerService.this.mUserActivityAllowed) && (PowerManagerService.this.isScreenOn()) && ((0x2 & PowerManagerService.this.mWakeLockState) == 0))
  5946.       {
  5947.         PowerManagerService.access$4702(PowerManagerService.this, PowerManagerService.this.checkIntelligentSleep());
  5948.         if (!PowerManagerService.this.mFaceDetected)
  5949.         {
  5950.           PowerManagerService.this.mContext.sendBroadcast(PowerManagerService.this.mSmartSleepIntent);
  5951.           Slog.d("PowerManagerService", "SmartSleepNotificationTask::SmartSleepNotification : sendBroadcast done.");
  5952.         }
  5953.       }
  5954.     }
  5955.   }
  5956.  
  5957.   private class SmartSleepTask
  5958.     implements Runnable
  5959.   {
  5960.     private SmartSleepTask()
  5961.     {
  5962.     }
  5963.  
  5964.     public void run()
  5965.     {
  5966.       PowerManagerService.access$4702(PowerManagerService.this, false);
  5967.       if ((PowerManagerService.this.mUserActivityAllowed) && (PowerManagerService.this.isScreenOn()) && ((0x2 & PowerManagerService.this.mWakeLockState) == 0))
  5968.       {
  5969.         PowerManagerService.access$4702(PowerManagerService.this, PowerManagerService.this.checkIntelligentSleep());
  5970.         Slog.d("PowerManagerService", "SmartSleepTask::SmartSleep : mFaceDetected = " + PowerManagerService.this.mFaceDetected);
  5971.       }
  5972.     }
  5973.   }
  5974.  
  5975.   private class TimeoutTask
  5976.     implements Runnable
  5977.   {
  5978.     int nextState;
  5979.     long remainingTimeoutOverride;
  5980.  
  5981.     private TimeoutTask()
  5982.     {
  5983.     }
  5984.  
  5985.     public void run()
  5986.     {
  5987.       synchronized (PowerManagerService.this.mLocks)
  5988.       {
  5989.         if (this.nextState == -1)
  5990.           return;
  5991.         if ((PowerManagerService.this.mFaceDetected) && (PowerManagerService.this.mSmartSleepEnabled) && (PowerManagerService.this.mUserActivityAllowed))
  5992.         {
  5993.           PowerManagerService.access$4702(PowerManagerService.this, false);
  5994.           PowerManagerService.access$1402(PowerManagerService.this, "face detection");
  5995.           PowerManagerService.this.userActivity(SystemClock.uptimeMillis(), -1L, false, 0, true, true);
  5996.           Slog.v("PowerManagerService", "TimeoutTask::SmartSleep : mFaceDetected is true -> prevent to go DIM/OFF");
  5997.           return;
  5998.         }
  5999.       }
  6000.       PowerManagerService.access$5302(PowerManagerService.this, this.nextState);
  6001.       Slog.w("PowerManagerService", "Timer 0x" + Integer.toHexString(PowerManagerService.this.mPowerState) + "->0x" + Integer.toHexString(PowerManagerService.this.mUserState) + "|0x" + Integer.toHexString(PowerManagerService.this.mWakeLockState));
  6002.       PowerManagerService.this.printCurLock(3);
  6003.       if ((PowerManagerService.this.isScreenOn()) && ((0x1 & (this.nextState | PowerManagerService.this.mWakeLockState)) == 0))
  6004.         Slog.d("PowerManagerService", "Screen__Off : Timeout");
  6005.       PowerManagerService.this.setPowerState(this.nextState | PowerManagerService.this.mWakeLockState);
  6006.       long l = SystemClock.uptimeMillis();
  6007.       switch (this.nextState)
  6008.       {
  6009.       case 2:
  6010.       default:
  6011.       case 3:
  6012.       case 1:
  6013.       }
  6014.       while (true)
  6015.       {
  6016.         return;
  6017.         if (PowerManagerService.this.mDimDelay >= 0)
  6018.           PowerManagerService.this.setTimeoutLocked(l, this.remainingTimeoutOverride, 1);
  6019.         else
  6020.           PowerManagerService.this.setTimeoutLocked(l, this.remainingTimeoutOverride, 0);
  6021.       }
  6022.     }
  6023.   }
  6024.  
  6025.   private class UnsynchronizedDVFSLock
  6026.   {
  6027.     int mFrequency;
  6028.     boolean mHeld = false;
  6029.     String mTag;
  6030.     IBinder mToken;
  6031.     int mType;
  6032.  
  6033.     UnsynchronizedDVFSLock(int paramInt1, int paramString, String arg4)
  6034.     {
  6035.       this.mType = paramInt1;
  6036.       this.mFrequency = paramString;
  6037.       Object localObject;
  6038.       this.mTag = localObject;
  6039.       this.mToken = new Binder();
  6040.     }
  6041.  
  6042.     public void acquire()
  6043.     {
  6044.       long l = Binder.clearCallingIdentity();
  6045.       try
  6046.       {
  6047.         PowerManagerService.this.acquireDVFSLockLocked(this.mType, this.mFrequency, this.mToken, PowerManagerService.this.MY_UID, PowerManagerService.this.MY_PID, this.mTag);
  6048.         this.mHeld = true;
  6049.         return;
  6050.       }
  6051.       finally
  6052.       {
  6053.         Binder.restoreCallingIdentity(l);
  6054.       }
  6055.     }
  6056.  
  6057.     public boolean isHeld()
  6058.     {
  6059.       return this.mHeld;
  6060.     }
  6061.  
  6062.     public void release()
  6063.     {
  6064.       PowerManagerService.this.releaseDVFSLockLocked(this.mToken);
  6065.       this.mHeld = false;
  6066.     }
  6067.  
  6068.     public String toString()
  6069.     {
  6070.       return "UnsynchronizedDVFSLock(mType=0x" + Integer.toHexString(this.mType) + " mFrequency=" + this.mFrequency + " mHeld=" + this.mHeld + ")";
  6071.     }
  6072.   }
  6073.  
  6074.   private class UnsynchronizedWakeLock
  6075.   {
  6076.     int mCount = 0;
  6077.     int mFlags;
  6078.     boolean mHeld;
  6079.     boolean mRefCounted;
  6080.     String mTag;
  6081.     IBinder mToken;
  6082.  
  6083.     UnsynchronizedWakeLock(int paramString, String paramBoolean, boolean arg4)
  6084.     {
  6085.       this.mFlags = paramString;
  6086.       this.mTag = paramBoolean;
  6087.       this.mToken = new Binder();
  6088.       boolean bool;
  6089.       this.mRefCounted = bool;
  6090.     }
  6091.  
  6092.     public void acquire()
  6093.     {
  6094.       long l;
  6095.       if (this.mRefCounted)
  6096.       {
  6097.         int i = this.mCount;
  6098.         this.mCount = (i + 1);
  6099.         if (i != 0);
  6100.       }
  6101.       else
  6102.       {
  6103.         l = Binder.clearCallingIdentity();
  6104.       }
  6105.       try
  6106.       {
  6107.         PowerManagerService.this.acquireWakeLockLocked(this.mFlags, this.mToken, PowerManagerService.this.MY_UID, PowerManagerService.this.MY_PID, this.mTag, null);
  6108.         this.mHeld = true;
  6109.         return;
  6110.       }
  6111.       finally
  6112.       {
  6113.         Binder.restoreCallingIdentity(l);
  6114.       }
  6115.     }
  6116.  
  6117.     public boolean isHeld()
  6118.     {
  6119.       return this.mHeld;
  6120.     }
  6121.  
  6122.     public void release()
  6123.     {
  6124.       if (this.mRefCounted)
  6125.       {
  6126.         int i = -1 + this.mCount;
  6127.         this.mCount = i;
  6128.         if (i != 0);
  6129.       }
  6130.       else
  6131.       {
  6132.         PowerManagerService.this.releaseWakeLockLocked(this.mToken, 0, false);
  6133.         this.mHeld = false;
  6134.       }
  6135.       if (this.mCount < 0)
  6136.         throw new RuntimeException("WakeLock under-locked " + this.mTag);
  6137.     }
  6138.  
  6139.     public String toString()
  6140.     {
  6141.       return "UnsynchronizedWakeLock(mFlags=0x" + Integer.toHexString(this.mFlags) + " mCount=" + this.mCount + " mHeld=" + this.mHeld + ")";
  6142.     }
  6143.   }
  6144.  
  6145.   private class WakeLock
  6146.     implements IBinder.DeathRecipient
  6147.   {
  6148.     long acqTime;
  6149.     boolean activated = true;
  6150.     final IBinder binder;
  6151.     final int flags;
  6152.     boolean isReleasedInternal = false;
  6153.     int minState;
  6154.     final int monitorType;
  6155.     final int pid;
  6156.     final String tag;
  6157.     final int uid;
  6158.     WorkSource ws;
  6159.  
  6160.     WakeLock(int paramIBinder, IBinder paramString, String paramInt1, int paramInt2, int arg6)
  6161.     {
  6162.       this.flags = paramIBinder;
  6163.       this.binder = paramString;
  6164.       this.tag = paramInt1;
  6165.       int j;
  6166.       if (paramInt2 == PowerManagerService.this.MY_UID)
  6167.         j = 1000;
  6168.       while (true)
  6169.       {
  6170.         this.uid = j;
  6171.         int i;
  6172.         this.pid = i;
  6173.         int k;
  6174.         if ((paramInt2 != PowerManagerService.this.MY_UID) || ((!"KEEP_SCREEN_ON_FLAG".equals(this.tag)) && (!"KeyInputQueue".equals(this.tag))))
  6175.           if ((paramIBinder & 0x3F) == 1)
  6176.           {
  6177.             k = 0;
  6178.             label105: this.monitorType = k;
  6179.           }
  6180.         try
  6181.         {
  6182.           while (true)
  6183.           {
  6184.             paramString.linkToDeath(this, 0);
  6185.             return;
  6186.             j = paramInt2;
  6187.             break;
  6188.             k = 1;
  6189.             break label105;
  6190.             this.monitorType = -1;
  6191.           }
  6192.         }
  6193.         catch (RemoteException localRemoteException)
  6194.         {
  6195.           binderDied();
  6196.         }
  6197.       }
  6198.     }
  6199.  
  6200.     public void binderDied()
  6201.     {
  6202.       synchronized (PowerManagerService.this.mLocks)
  6203.       {
  6204.         Slog.e("PowerManagerService", "WakeLock : binderDied()");
  6205.         PowerManagerService.this.releaseWakeLockLocked(this.binder, 0, true);
  6206.         return;
  6207.       }
  6208.     }
  6209.   }
  6210. }
Advertisement
Add Comment
Please, Sign In to add comment