Commit Graph

60 Commits

Author SHA1 Message Date
Dianne Hackborn
713df150b9 Add app ops for wake locks.
Currently only supports auditing, not disabling.

Change-Id: Ie85f02c29b490d96e073f54d59e165d48c7c00c9
2013-05-20 16:49:46 -07:00
Dianne Hackborn
fa012b35b8 Improve watchdog error reporting.
We now keep track of all the threads that are stopped, and
print stacks for all of them.  Also more threads are now adding
themselves to the watchdog.

Unfortunately the stack we get from threads is far less useful
than the stacks from the ANR report, because these don't include
any information about the lock the thread is blocked on and what
thread is holding that lock.  For example, here is a test of the
log output from causing a hang in the system process:

W/Watchdog( 5205): *** WATCHDOG KILLING SYSTEM PROCESS: com.android.server.am.ActivityManagerService, main thread
W/Watchdog( 5205): foreground thread stack trace:
W/Watchdog( 5205):     at com.android.server.am.ActivityManagerService.monitor(ActivityManagerService.java:14333)
W/Watchdog( 5205):     at com.android.server.Watchdog$HandlerChecker.run(Watchdog.java:142)
W/Watchdog( 5205):     at android.os.Handler.handleCallback(Handler.java:730)
W/Watchdog( 5205):     at android.os.Handler.dispatchMessage(Handler.java:92)
W/Watchdog( 5205):     at android.os.Looper.loop(Looper.java:137)
W/Watchdog( 5205):     at android.os.HandlerThread.run(HandlerThread.java:61)
W/Watchdog( 5205): main thread stack trace:
W/Watchdog( 5205):     at com.android.server.am.ActivityManagerService.broadcastIntent(ActivityManagerService.java:12252)
W/Watchdog( 5205):     at android.app.ContextImpl.sendBroadcastAsUser(ContextImpl.java:1158)
W/Watchdog( 5205):     at com.android.server.DropBoxManagerService$3.handleMessage(DropBoxManagerService.java:161)
W/Watchdog( 5205):     at android.os.Handler.dispatchMessage(Handler.java:99)
W/Watchdog( 5205):     at android.os.Looper.loop(Looper.java:137)
W/Watchdog( 5205):     at com.android.server.ServerThread.initAndLoop(SystemServer.java:1050)
W/Watchdog( 5205):     at com.android.server.SystemServer.init2(SystemServer.java:1125)
W/Watchdog( 5205):     at com.android.server.SystemServer.init1(Native Method)
W/Watchdog( 5205):     at com.android.server.SystemServer.main(SystemServer.java:1116)
W/Watchdog( 5205):     at java.lang.reflect.Method.invokeNative(Native Method)
W/Watchdog( 5205):     at java.lang.reflect.Method.invoke(Method.java:525)
W/Watchdog( 5205):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:774)
W/Watchdog( 5205):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:590)
W/Watchdog( 5205):     at dalvik.system.NativeStart.main(Native Method)
I/Process ( 5205): Sending signal. PID: 5205 SIG: 9

Change-Id: I8ff9892d8d072d8dc599a73de4bdb75e3b1a6e97
2013-05-13 18:01:54 -07:00
Nick Kralevich
dbcf2d7482 PowerManagerService: Don't reboot directly.
Instead of calling the reboot system call ourselves, send
a message to init asking it to reboot the system. Init is in
a better position to make sure the system is cleanly shutdown.

Get rid of CAP_SYS_BOOT from system_server.

Bug: 8646621
Change-Id: I200722412844ad8d99e35a442021c6263c3ebc05
2013-05-08 13:42:10 -07:00
Jaikumar Ganesh
6d0c1d78f1 Sensor values changes.
1. Remove Sensor Event Pool.
2. Allocate fixed array values for each Sensor added.
   - Needed for backward compatibility.
3. Use SDK checks for backward compatibility for
   rotation vector.

b/8165631

Change-Id: I2d2cf10d3460478ed7af8e6188343f4bb033503c
2013-04-11 10:25:35 -07:00
Sascha Prueter
b70d9df780 am 1ec3c2cc: am 28608bbb: am d692ea6d: am b5e4835e: Merge "Improve heuristics for detecting wireless chargers." into jb-mr1.1-dev
* commit '1ec3c2ccedde5cd8ff6e94c9b1566a913d5e8db0':
  Improve heuristics for detecting wireless chargers.
2013-01-11 10:53:49 -08:00
Jeff Brown
3b971598ed Improve heuristics for detecting wireless chargers.
On some devices, we need to apply heuristics to determine whether
the device is docked on a wireless charger because the charging
circuits do not provide sufficient information to know whether
the device is on the charger unless it is actually receiving
power.

The previous heuristics only considered the battery level to
suppress spurious dock signals.

The new heuristics also take into account whether the device
appears to have moved from its previous position on the dock.

Bug: 7744185
Change-Id: I5ba885dac25b37840b6db46b8a0f30968a06776c
2013-01-10 10:01:56 -08:00
Jeff Brown
d90a56fadc Merge "Track app and display wakelocks separately." 2012-12-12 16:49:30 -08:00
Jeff Brown
27f7a866f5 Track app and display wakelocks separately.
Change the power manager to use two different kernel wakelocks
to distinguish between an application or the display keeping the
CPU alive.  This may help make the output of "dumpsys batteryinfo"
easier to interpret.

Bug: 7726759
Change-Id: Iaff96ad74030d00200617b459679ea16390a8da5
2012-12-12 16:20:17 -08:00
Jeff Brown
84e2756c0f Play a tone when wireless charging begins.
Only plays a tone if the battery level is below 95% which
is the same heuristic used when determining whether to turn
the screen on.

Use new low battery and wireless charging sounds on Mako.

Bug: 7371658
Change-Id: Ia4527ec398d024ee418a4287e1fcbf0ec83bcc24
2012-12-11 12:55:03 -08:00
Jeff Brown
7f3994ec2a Pin electron beam surface to natural orientation.
If a rotation occurred while the electron beam surface was showing,
the surface may have appeared in the wrong orientation.  We fix this
problem by adjusting the transformation matrix of the electron beam
surface according to the display orientation whenever a display
transaction occurs.

The rotation itself is allowed to proceed but it is not visible
to the user.  We must let this happen so that the lock screen
is correctly oriented when the screen is turned back on.

Note that the electron beam surface serves two purposes.

First, it is used to play the screen off animation.
When the animation is finished, the surface remains visible but is
solid black.  Then we turn the screen off.

Second, when we turn the screen back on we leave the electron beam
surface showing until the window manager is ready to show the
new content.  This prevents the user from seeing a flash of the
old content while the screen is being turned on.  When everything is
ready, we dismiss the electron beam.

It's important for the electron beam to remain visible for
the entire duration from just before the screen is turned off until
after the screen is turned on and is ready to be seen.  This is
why we cannot fix the bug by deferring rotation or otherwise
getting in the way of the window manager doing what it needs
to do to get the screen ready when the screen is turned on again.

Bug: 7479740
Change-Id: I2fcf35114ad9b2e00fdfc67793be6df62c8dc4c3
2012-12-04 14:40:23 -08:00
Craig Mautner
6edb6db512 Ignore invalid combination of PowerManager flags.
ACQUIRE_CAUSES_WAKEUP is supposed to be ignored if combined with
PARTIAL_WAKE_LOCK. Instead it was being carried out for any values
of the WakeLock level.

This change reverts behavior to closely match
previous releases of the framework by only honoring
ACQUIRE_CAUSES_WAKEUP for screen wake lock levels. The only
difference being that in previous releases ACQUIRE_ could have been
combined with PROXIMITY_SCREEN_OFF_WAKE_LOCK (it never was) and
now such a combination will ignore the ACQUIRE_ flag.

Bug 7532258 fixed.

Change-Id: I46e848d8fd1b57e54c63141bf3d4f353986b5bdf
2012-11-21 13:19:39 -08:00
Jeff Brown
32dafe25ac Reduce screen on/off latency.
Reduce latency of screen on/off and improve how it is synchronized with
backlight changes.  Screen state changes are no longer posted to vsync
which should save time.  What's more, the state change occurs on a
separate thread so we no longer run the risk of blocking the Looper
for a long time while waiting for the screen to turn on or off.

Bug: 7382919
Bug: 7139924
Change-Id: I375950d1b07e22fcb94efb82892fd817e2f780dc
2012-10-19 18:04:27 -07:00
John Spurlock
ed108f3d12 Frameworks base: Promote dream setting defaults to config.
So that:
 - the values can be shared (to fix assoc bug)
 - the values can be customized in product overlays

Bug:7373284
Change-Id: I37f037082523a3d975f6014f36afa28c60117372
2012-10-19 11:32:03 -04:00
Jeff Brown
ec6aa59454 Dream when user activity times out while docked if appropriate.
If the user has requested that dreams start when docked and a user
activity timeout occurs, then start dreaming assuming all of the
other usual conditions are appropriate for dreaming (the device is
powered, etc.).

Previously dreams only started when the device was initial docked
but not if the device fell asleep while remaining docked.

Bug: 7281240
Change-Id: I72c3f854fd1ae8e6615f4fa6e4c4ecd8de37c84b
2012-10-17 20:30:25 -07:00
Jeff Brown
016ff14f12 Stop dreaming if the battery not charging effectively.
If the user activity timeout expired and the battery appears
to be draining faster than it is charging then stop dreaming
and go to sleep.

Bug: 7312455
Change-Id: I1b9d89e5b2647c72c455d2792e3778a2fe6a4e34
2012-10-15 16:56:20 -07:00
Jeff Brown
ab887a09ad Cleanup some internal documentation.
Bug: 7312455
Change-Id: Idefd71f2e9d1abe1b2671dac9702edf7f5fbc118
2012-10-15 16:01:37 -07:00
Jeff Brown
20767b2d1e Don't consider the boot completed until the animation is over.
This fixes a problem where the screen times out shortly after
boot before the user has had a chance to interact with the device.
Now we wait until the boot animation has completed then set
boot completed, poke user activity and start the countdown.

Bug: 7316397
Change-Id: Ie5a0b1012d265e655d33cc8fba49ca349f48f1de
2012-10-09 19:06:25 -07:00
Jeff Brown
10428748f9 Prevent full wake lock from keeping device awake while dreaming.
A dream may itself hold a wake lock in order to keep the screen
bright as it runs.  However this wake lock also causes the device
to stay awake even when it is not plugged in which is undesirable.

This change makes full wake locks behave differently when napping
or dreaming.  The wake lock still keeps the screen bright but
it does not prevent the device from falling asleep.  This is
similar to our policy of ignoring full wake locks completely when
the device is manually put to sleep by the user.

Bug: 7295909
Change-Id: Id99e82d2143ae1a81629281d6407d7527efb8137
2012-10-09 15:52:31 -07:00
Jeff Brown
9e316a1a2a Blank or unblank all displays as need.
Ensures that both the internal display and HDMI are blanked
or unblanked in tandem.

Bug: 7309812
Change-Id: Ie8b96d393e8bb20d23c92f3320142d9f7cf42aff
2012-10-08 19:23:15 -07:00
Jeff Brown
9fca9e9698 Ensure that dreams show while docked.
Fixed a race between the UiModeManagerService and PowerManagerService
both of which are trying to wake the device when docked / powered.

Bug: 7281240
Change-Id: Ia41fef48f17f2a2eb56549437d295f9a86c95af2
2012-10-05 15:21:06 -07:00
Jeff Brown
c38c9be031 Coordinate screen on with the window manager.
Bug: 7267457
Change-Id: Ic2c322253639e1f0b2e4e72a7b145025d0240f93
2012-10-05 14:39:23 -07:00
Jeff Brown
5430835934 Ensure we send at least one wakeup/gotosleep transition.
This fixes an issue where the device would not lock immediately
when the user quickly pressed power off / power on even if
configured to do so.  We were suppressing the screen off
and wake up broadcast in this case.

Now we make sure to always send at least one broadcast to
indicate the transition.  We still collapse back-to-back
full cycle transitions though so as not to end up enqueuing
useless broadcasts.

Bug: 7061116
Change-Id: I7211c5fd963c271c2b0aceb4d2f746063c629079
2012-10-04 18:03:11 -07:00
Jeff Brown
93cbbb25a5 Allow phone to go to sleep while in call.
Bug: 7279383
Change-Id: Ia05490218f40a1843507b95ff48fa07910e582d4
2012-10-04 16:22:04 -07:00
Dianne Hackborn
c428aae642 Fix issue #7267494, issue #7212347
7267494 Calendar is not syncing
Check for whether a content provider is dead before returning
it.  This is kind-of a band-aid, but probably the right thing
to do; I'm just not sure exactly the full details of why this
problem is happening.  Hopefully this "fixes" it, though I don't
have a way to repro to tell.

7212347 System power off dialog is only visible to user 0
Make it visible.  Also turn on some battery debugging stuff and
clean it up so we can just keep it.

Change-Id: I5add25bf2a763c8dfe1df23bc5c753a9ea5d157a
2012-10-03 18:07:23 -07:00
Jeff Brown
645832dd2b Ensure dreams can be started when not powered.
Previously dreams could not be started unless plugged in.
Now we allow them to start but they will eventually stop
if a user activity timeout occurs and no screen wakelocks
are held.

Bug: 7253639
Change-Id: I84703e144ca6d4aba1ef9437f04a201c3dde8a49
2012-10-03 14:57:03 -07:00
Jeff Brown
ff532540f1 Improve the screen dim duration calculation.
Take into account whether the screen off timeout is very short.
If so, we use a shorter dim timeout.  Don't allow the dim
time to be more than 20% of the total screen on time so that
the screen remains bright at least 80% of the time even when
the timeout is short.

Bug: 7273646
Change-Id: Iccea764b90f0d8b1df7009d26160c6bcf6eabe5b
2012-10-02 21:18:04 -07:00
Jeff Brown
f3fb895269 Implement screen on hack for wireless chargers.
We can't accurately detect whether the device is resting
on a wireless charger unless it is actually charging.
So we need to tweak the screen on when plugged / unplugged
policy accordingly to avoid spurious wakeups.

Bug: 7234284
Change-Id: I624b559e2e92b8813b12090bc20eca5f5158997e
2012-10-02 20:57:05 -07:00
Jeff Brown
a4d8204e30 Fix some synchronization issues in BatteryService.
Some of the BatteryService state was being locked
sometimes and it wasn't at all consistent.

Bug: 7158734
Change-Id: I46e75f66fde92c5a577a80a6bd99c9573066f3c1
2012-10-02 19:11:19 -07:00
Jeff Brown
9ba8d78186 Fix CTS test failures.
Bug: 7001730
Change-Id: I5649b601c310458de5d64b549a407e251d745b7c
2012-10-01 17:34:07 -07:00
Jeff Brown
1e3b98d47d New internal API to eliminate poke locks.
Added a new WindowManager.LayoutParams inputFeatures flag
to disable automatic user activity behavior when an input
event is sent to a window.

Added a new WindowManager.LayoutParams field userActivityTimeout.

Bug: 7165399
Change-Id: I204eafa37ef26aacc2c52a1ba1ecce1eebb0e0d9
2012-10-01 14:27:34 -07:00
Jeff Brown
edce6a7978 Remove clearUserActivityTimeout().
This function is not implemented and not needed.

Bug: 7165399
Change-Id: Ib1c50fabad6292ccf670404ba70aeb1242c4614d
2012-09-30 16:23:05 -07:00
Jeff Brown
7f813202cb Merge "Get rid of preventScreenOn()." into jb-mr1-dev 2012-09-28 19:05:52 -07:00
Jeff Brown
120664816a Get rid of preventScreenOn().
Bug: 7165399
Change-Id: I1968265ecd74fff4d85efd2ca03b1983425ea518
2012-09-28 18:21:36 -07:00
Dianne Hackborn
be87e2f588 Fix issue #7255954: API Review: rename Dream to DreamService
Change-Id: I89ecf2c3ec4fef09c0495aa68de11576f9cfd872
2012-09-28 17:42:39 -07:00
Jeff Brown
62c82e4d92 Make DreamManagerService more robust.
Clearly isolated the DreamManagerService and DreamController
responsibilities.  DreamManagerService contains just enough logic to
manage the global synchronous behaviors.  All of the asynchronous
behaviors are in DreamController.

Added a new PowerManager function called nap() to request the device
to start napping.  If it is a good time to nap, then the
PowerManagerService will call startDream() on the DreamManagerService
to start dreaming.

Fixed a possible multi-user issue by explicitly tracking for
which user a dream service is being started and stopping dreams
when the current user changes.  The user id is also passed to
bindService() to ensure that the dream has the right environment.

Fix interactions with docks and the UI mode manager.  It is
important that we always send the ACTION_DOCK_EVENT broadcast
to the system so that it can configure audio routing and the like.
When docked, the UI mode manager starts a dock app if there is
one, otherwise it starts a dream.

This change resolves issues with dreams started for reasons other
than a user activity timeout.

Bug: 7204211
Change-Id: I3193cc8190982c0836319176fa2e9c4dcad9c01f
2012-09-26 15:24:27 -07:00
Jeff Brown
d49359631b Handle user switched for settings changes.
Move OVERLAY_DISPLAY_DEVICES to Global.

Bug: 7127417
Change-Id: I632648ac5b01408512f59424f3bb55162431bea4
2012-09-25 15:26:51 -07:00
John Spurlock
f4f6b4c8b0 Fire "dreaming started" and "dreaming stopped" broadcasts.
Dream manager now fires broadcast intents when entering + exiting
dreamland (except when testing).

Power manager can now listen for dreams ending, using polling only
as a backstop.

Also:
 - Bullet-proof dream-manager/dream against known failure modes
 - Add new read/write dream permissions
 - Refactor dream-manager to delegate work + state management into
   a new DreamController class, via a handler

Bug:6999949
Bug:7152024
Change-Id: I986bb7812209d8c95ae1d660a5eee5998a7b08b1
2012-09-19 17:36:50 -04:00
Christopher Tate
ad73532041 Refer to STAY_ON_WHILE_PLUGGED_IN in the global namespace
This is the one relevant setting that moved from System to Global,
a move that we do not automatically redirect on writes.

Change-Id: I7b26d0c364695c4a10a7cd477db3dfcfe89d7ef5
2012-09-07 14:19:43 -07:00
Craig Mautner
4ccbdd1770 Check proximity detector before powering off.
Do not automatically power off if the proximity detector wakelock is
active.

Fixes bug 7047455.

Change-Id: I44e30bf388292e5c476dfb5d0de9226d21853e4d
2012-08-28 17:12:52 -07:00
Jeff Brown
d59db50ab0 Merge "Initialize screen state earlier in the boot process." into jb-mr1-dev 2012-08-25 13:46:49 -07:00
Jeff Brown
f75724b3d3 Initialize screen state earlier in the boot process.
The system depends on receiving reliable vsync signals from
surface flinger during the boot process.  If it doesn't get them
because the screen is off then a hang may occur.

This isn't a problem when surface flinger manages the screen
blanking itself but it is a problem for devices that still
rely on early-suspend.  When early-suspend is involved, the
screen may be off without surface flinger knowing.  This is a
problem because surface flinger will only synthesize fake
vsyncs when it knows the screen is off, otherwise relying
on the hardware to generate vsync signals itself.  Unfortunately,
the hardware won't generate vsync signals if the screen was
turned off by early-suspend, so we have a problem.

Bug: 6975688
Change-Id: Iaf4527f716bf4ea72cc3e6fdaf060855697b02f2
2012-08-25 13:41:35 -07:00
Jeff Brown
a2910d0abb Make it easier to create asynchronous Handlers.
There are potentially very many Handlers owned by services
that should not be blocked by barriers introduced by UI traversals
occurring on the same thread (if that ever happens).
Add some convenience constructors to make it easy to switch
these Handlers over to being async.

Bug: 7057752
Change-Id: I64d9bffe81e7c52ada4cfad4e89d4340153f4688
2012-08-25 13:40:26 -07:00
John Spurlock
10fb224623 Disable screensavers if below first battery warning level.
Don't activate on sleep if below the threshold, and quit any currently
running dream when the threshold is reached.

Bug:6999949
Change-Id: I961b350d24ee6f95e502228aaa57312b0ffbadc1
2012-08-23 16:23:18 -04:00
John Spurlock
21b53df7c3 Merge "Add framework support for multiple dreams." into jb-mr1-dev 2012-08-23 10:44:05 -07:00
John Spurlock
1a868b7981 Add framework support for multiple dreams.
Bug:7028665
Change-Id: I4fba6b8e39dc07af4490c621ac3bc7b3867371b2
2012-08-22 16:49:20 -04:00
Jeff Brown
5d03a53681 Fix auto-brightness adjustment sentinel value.
Change-Id: I1b0da4566eb350333d3c3b09a96266627260baa3
2012-08-22 13:22:02 -07:00
Jeff Brown
aa202a6dc3 Add a mechanism to adjust auto-brightness at night.
Uses the twilight service to determine the hours of
sunrise and sunset.  Shortly after sunset or before sunrise
gradually start to apply a gamma correction factor to the
auto-brightness calculations to make the screen a little
dimmer at night.

The effect is relatively small and is mostly noticeable
in dark rooms.  This is just a first pass at the algorithm,
we can tweak the adjustment later to ensure that it has even less
impact in moderate or bright environments.

Change-Id: Idf89022a5d0bb52975e04779352d53fa63371178
2012-08-22 00:02:41 -07:00
Jeff Brown
330560f53b Add support for auto-brightness adjust, but leave it disabled.
Auto-brightness adjustment applies a gamma correction factor
between 1/3 and 3 depending on the setting.  This feature
is disabled for now.

Change-Id: I2b300b5c455da545bea56b2bae5bc7903e30f30e
2012-08-21 22:27:42 -07:00
Jeff Brown
9630704ed3 Power manager rewrite.
The major goal of this rewrite is to make it easier to implement
power management policies correctly.  According, the new
implementation primarily uses state-based rather than event-based
triggers for applying changes to the current power state.

For example, when an application requests that the proximity
sensor be used to manage the screen state (by way of a wake lock),
the power manager makes note of the fact that the set of
wake locks changed.  Then it executes a common update function
that recalculates the entire state, first looking at wake locks,
then considering user activity, and eventually determining whether
the screen should be turned on or off.  At this point it may
make a request to a component called the DisplayPowerController
to asynchronously update the display's powe state.  Likewise,
DisplayPowerController makes note of the updated power request
and schedules its own update function to figure out what needs
to be changed.

The big benefit of this approach is that it's easy to mutate
multiple properties of the power state simultaneously then
apply their joint effects together all at once.  Transitions
between states are detected and resolved by the update in
a consistent manner.

The new power manager service has is implemented as a set of
loosely coupled components.  For the most part, information
only flows one way through these components (by issuing a
request to that component) although some components support
sending a message back to indicate when the work has been
completed.  For example, the DisplayPowerController posts
a callback runnable asynchronously to tell the PowerManagerService
when the display is ready.  An important feature of this
approach is that each component neatly encapsulates its
state and maintains its own invariants.  Moreover, we do
not need to worry about deadlocks or awkward mutual exclusion
semantics because most of the requests are asynchronous.

The benefits of this design are especially apparent in
the implementation of the screen on / off and brightness
control animations which are able to take advantage of
framework features like properties, ObjectAnimator
and Choreographer.

The screen on / off animation is now the responsibility
of the power manager (instead of surface flinger).  This change
makes it much easier to ensure that the animation is properly
coordinated with other power state changes and eliminates
the cause of race conditions in the older implementation.

The because of the userActivity() function has been changed
so that it never wakes the device from sleep.  This change
removes ambiguity around forcing or disabling user activity
for various purposes.  To wake the device, use wakeUp().
To put it to sleep, use goToSleep().  Simple.

The power manager service interface and API has been significantly
simplified and consolidated.  Also fixed some inconsistencies
related to how the minimum and maximum screen brightness setting
was presented in brightness control widgets and enforced behind
the scenes.

At present the following features are implemented:

- Wake locks.
- User activity.
- Wake up / go to sleep.
- Power state broadcasts.
- Battery stats and event log notifications.
- Dreams.
- Proximity screen off.
- Animated screen on / off transitions.
- Auto-dimming.
- Auto-brightness control for the screen backlight with
  different timeouts for ramping up versus ramping down.
- Auto-on when plugged or unplugged.
- Stay on when plugged.
- Device administration maximum user activity timeout.
- Application controlled brightness via window manager.

The following features are not yet implemented:

- Reduced user activity timeout for the key guard.
- Reduced user activity timeout for the phone application.
- Coordinating screen on barriers with the window manager.
- Preventing auto-rotation during power state changes.
- Auto-brightness adjustment setting (feature was disabled
  in previous version of the power manager service pending
  an improved UI design so leaving it out for now).
- Interpolated brightness control (a proposed new scheme
  for more compactly specifying auto-brightness levels
  in config.xml).
- Button / keyboard backlight control.
- Change window manager to associated WorkSource with
  KEEP_SCREEN_ON_FLAG wake lock instead of talking
  directly to the battery stats service.
- Optionally support animating screen brightness when
  turning on/off instead of playing electron beam animation
  (config_animateScreenLights).

Change-Id: I1d7a52e98f0449f76d70bf421f6a7f245957d1d7
2012-08-15 03:06:24 -07:00
John Spurlock
b9ba2b6768 Fix screen timeout determination for starting dream.
It turns out OFF_BECAUSE_OF_TIMEOUT is not the best indicator
of actual screen timeout.

For example, it is the reason passed down when acquiring a wake lock.
This was causing us to launch Dreams in the wrong situations, and
deadlocking on calls to WindowManager.

This fix simply adds an additional check ensuring the intention is to
turn the screen off.

Change-Id: If8adff446b5b1fcb19424b45878b75bfd0552b90
2012-08-09 14:47:49 -04:00