11522 Commits

Author SHA1 Message Date
Sascha Prueter
2588648b52 am 203f69f0: Merge "Call setSize to sync Surface to SurfaceFlinger. DO NOT MERGE" into jb-mr1.1-dev
* commit '203f69f0998d982205b1c9f550576024654e6bc3':
  Call setSize to sync Surface to SurfaceFlinger. DO NOT MERGE
2012-12-07 12:38:15 -08:00
Craig Mautner
4abf3f987f Call setSize to sync Surface to SurfaceFlinger. DO NOT MERGE
RecentsActivity screenshots are called for very quickly after
WindowStateAnimator prepareSurface(). Without enough delay the
Surface.setLayer call does not propagate to the SurfaceFlinger
and the screenshot is incorrect (black) because it stops sampling
the layers too early.

This fix calls Surface.setSize() for each sampled Surface in
screenshots. setSize forces the SurfaceFlinger to process all
transactions queued before returning from closeTransaction.

Bug 7552304 fixed.

Change-Id: I1911dfa0b09cab713c55f5ba0c612496337a77df

Conflicts:

	services/java/com/android/server/wm/WindowManagerService.java
2012-12-07 11:21:35 -08:00
Victoria Lease
bc36b52372 am 7b085571: Merge "DO NOT MERGE Adjust update interval when expiring location requests." into jb-mr1.1-dev
* commit '7b0855715bc6cb14e3ca67d815915d2172f0bc12':
  DO NOT MERGE Adjust update interval when expiring location requests.
2012-12-05 14:06:33 -08:00
Victoria Lease
7b0855715b Merge "DO NOT MERGE Adjust update interval when expiring location requests." into jb-mr1.1-dev 2012-12-05 14:03:28 -08:00
Victoria Lease
5959bf2d3c DO NOT MERGE Adjust update interval when expiring location requests.
Cherry-pick I88b419c92940b7e536d48b26e5fc0f72f3c9e73d

This is a more complete solution for this issue that disables
location providers when expiring their last request *and* adjusts
update intervals when expiring any request. This should help
further limit battery drain when a high-frequency-update app
exits, as it allows the system to throttle the update interval
back down to something appropriate for the remaining listeners.

Bug: 7611837
Change-Id: I7629a90f4c693be4bf96d662bd3a8b06dae0b089
2012-12-05 12:15:16 -08:00
Jeff Brown
61e21940ff am 7fcb5dc5: Merge "Pin electron beam surface to natural orientation." into jb-mr1.1-dev
* commit '7fcb5dc5e9fbad0f183f425e88e576aaca98b0d7':
  Pin electron beam surface to natural orientation.
2012-12-04 17:18:52 -08:00
Jeff Brown
7fcb5dc5e9 Merge "Pin electron beam surface to natural orientation." into jb-mr1.1-dev 2012-12-04 17:15:34 -08:00
satok
dc5b21a548 am 487f8e93: Merge "Fix an issue on installing 3rd-party IME by a non-primary user" into jb-mr1.1-dev
* commit '487f8e93b0b5e2949fbfa6b60fd5e0a7a3e4d5b7':
  Fix an issue on installing 3rd-party IME by a non-primary user
2012-12-04 17:12:10 -08:00
satok
487f8e93b0 Merge "Fix an issue on installing 3rd-party IME by a non-primary user" into jb-mr1.1-dev 2012-12-04 17:09:57 -08:00
Victoria Lease
1d20e05e48 am 82a76800: Merge "DO NOT MERGE Notify provider when disposing last UpdateRecord" into jb-mr1.1-dev
* commit '82a76800ad78b7aa6e2bde2f6512e4ffbe21873f':
  DO NOT MERGE Notify provider when disposing last UpdateRecord
2012-12-04 16:32:18 -08:00
Sascha Prueter
8f7eddbef3 am 652d8fc9: Merge "PRIORITY_MIN notifications should be truly ambient." into jb-mr1.1-dev
* commit '652d8fc944c011eb15202f678588723aa9f38a84':
  PRIORITY_MIN notifications should be truly ambient.
2012-12-04 16:32:05 -08:00
John Spurlock
9c902ca473 am 33669f35: Merge "Kill dreams that do not create a timely service connection." into jb-mr1.1-dev
* commit '33669f35e4b63bec10bb7202b94340ebd41fbb10':
  Kill dreams that do not create a timely service connection.
2012-12-04 16:31:33 -08:00
Victoria Lease
e0fa1b387f DO NOT MERGE Notify provider when disposing last UpdateRecord
Cherry-pick of Id48151eb7de40164258cde7da220a4d6bb34b89a

Location providers were not being notified of the change in status
when the last UpdateRecord was removed due to numUpdates exhaustion
or request expiry. Oops! Enjoy some free battery life!

Bug: 7611837
Change-Id: I66303b355be4e4a56a81efb5406c9353b2588595
2012-12-04 15:42:22 -08:00
Sascha Prueter
652d8fc944 Merge "PRIORITY_MIN notifications should be truly ambient." into jb-mr1.1-dev 2012-12-04 15:13:17 -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
Daniel Sandler
526fa0e6d5 PRIORITY_MIN notifications should be truly ambient.
If your notification is set to MIN priority, it will never
attempt to interrupt the user, either by an icon (already
implemented), or (new in this patch) by LED, vibration, or
sound.

Bug: 7648785
Change-Id: Ia0f8e010e62029d8d8ef1955dd20b7c79fb68398
2012-12-04 17:01:12 -05:00
John Spurlock
33669f35e4 Merge "Kill dreams that do not create a timely service connection." into jb-mr1.1-dev 2012-12-04 13:45:50 -08:00
John Spurlock
006f567c21 Kill dreams that do not create a timely service connection.
Implement a timeout between when the dream binds and
when the dream creates the service connection.  If
the connection is not created within a certain amount of
time, stop the dream.

This fixes the current bug where a dream that crashes in
onCreate (or the ctor) can put the dream controller in a
bad state until the screen is turned off.

The timeout is equal to the service restart delay in
activity manager (ActiveServices) to avoid restarting
(and recrashing).

Bug:7596707
Change-Id: I3e11efc6af0b79ec4cb0fbc94e4e109c7602ddac
2012-12-04 15:10:04 -05:00
Matthew Xie
8b283df989 am b6b4f171: Merge "Change getName and getAddress permission to BLUETOOTH" into jb-mr1.1-dev
* commit 'b6b4f171ff38ccac833edb2a1ad7f725ed068d46':
  Change getName and getAddress permission to BLUETOOTH
2012-12-04 11:25:14 -08:00
Matthew Xie
af5ddbfcf5 Change getName and getAddress permission to BLUETOOTH
The permissions were set as BLUETOOTH_ADMIN by mistake. Correct them
bug 7665249

Change-Id: Ic1bdbeb25e8f55d886f9a8d38920cbb769dd38ca
2012-12-04 10:47:43 -08:00
satok
81f8b7c667 Fix an issue on installing 3rd-party IME by a non-primary user
Bug: 7573552

Currently IMMS doesn't receive install/uninstall messages. Accordingly enabled IMEs' list is not refreshed properly.

Change-Id: I25e9798a65f528dd270cd6bb1f14b1d887194787
2012-12-04 21:16:59 +09:00
Dianne Hackborn
23307cbb6b am e0a676a3: Merge "Fix issue #7649590: Background windows sometimes not being hidden for secondary users" into jb-mr1.1-dev
* commit 'e0a676a3bb0e7b9aced9359a021e4c5d2ffef752':
  Fix issue #7649590: Background windows sometimes not being hidden for secondary users
2012-12-03 15:54:34 -08:00
Dianne Hackborn
e0a676a3bb Merge "Fix issue #7649590: Background windows sometimes not being hidden for secondary users" into jb-mr1.1-dev 2012-12-03 15:51:47 -08:00
Dianne Hackborn
bb4ca5271a Fix issue #7649590: Background windows sometimes not being hidden for secondary users
There are two things going on here:

(1) In secondary users, some times theme information such as whether
the window is full screen opaque was not being retrieved, so the window
manager didn't know that it could hide the windows behind the app.
This would just be a performance problem, except that:

(2) There appear to be a number of applications that declare that they
are full screen opaque, when in fact they are not.  Instead they are
using window surfaces with an alpha channel, and setting some pixels
in their window to a non-opaque alpha level.  This will allow you to
see whatever is behind the app.  If the system happens to completely
remove the windows behind the app, and somebody is filling the frame
buffer with black, then you will see what the app intends -- those
parts of its UI blended with black.  If one of those cases doesn't
hold (and though we have never guaranteed they would, in practice this
is generally what happens), then you will see something else.

At any rate, if nothing else than for performance reasons, we need to
fix issue #1.

It turns out what is happening here is that the AttributeCache used
by the activity manager and window manager to retreive theme and other
information about applications has not yet been updated for multi-user.

One of the things we retrieve from this is the theme information telling
the window manager whether an application's window should be treated
as full screen opaque, allowing it to hide any windows behind it.  In
the current implementation, the AttributeCache always retrieves this
information about the application as the primary user (user 0).

So, if you have an application that is installed on a secondary user but
not installed on the primary user, when the AttributeCache tries to retrieve
the requested information for it, then from the perspective of the primary user
it considers the application not installed, and is not able to retrieve that
info.

The change here makes AttributeCache multi-user aware, keeping all of its
data separately per-user, and requiring that callers now provide the user
they want to retrieve information for.  Activity manager and window manager
are updated to be able to pass in the user when needed.  This required some
fiddling of the window manager to have that information available -- in
particular it needs to be associated with the AppWindowToken.

Change-Id: I4b50b4b3a41bab9d4689e61f3584778e451343c8
2012-12-03 14:09:06 -08:00
Zhihai Xu
fb9947ad77 am 40973c53: Merge "BT is still on after enable flight mode, and reboot the DUT" into jb-mr1.1-dev
* commit '40973c53acc86b576081fb720d7d6b23c55202ad':
  BT is still on after enable flight mode, and reboot the DUT
2012-12-03 11:50:25 -08:00
Zhihai Xu
40973c53ac Merge "BT is still on after enable flight mode, and reboot the DUT" into jb-mr1.1-dev 2012-12-03 11:47:34 -08:00
Jeff Sharkey
1f8f283975 am ed3fba65: Merge "Avoid null mobile interfaces." into jb-mr1.1-dev
* commit 'ed3fba653864101d3dd335941f082104aad8f532':
  Avoid null mobile interfaces.
2012-12-03 11:38:31 -08:00
Zhihai Xu
401202b5fe BT is still on after enable flight mode, and reboot the DUT
bug 7275625
Change-Id: I4f8952a06152eb5f5775c1f616f6383e4f20e352
2012-12-03 11:36:21 -08:00
Jeff Sharkey
ed3fba6538 Merge "Avoid null mobile interfaces." into jb-mr1.1-dev 2012-12-03 11:32:51 -08:00
Amith Yamasani
32df98d52d am c566b43d: Fix crosstalk between users for widgets hosted in lockscreen
* commit 'c566b43d02596cba437e9a2723e9f989297cca72':
  Fix crosstalk between users for widgets hosted in lockscreen
2012-11-30 18:44:36 -08:00
Jeff Sharkey
6a328afbab Avoid null mobile interfaces.
Bug: 7634215
Change-Id: I6745f6a78c07ba11d98b4562a6b53386112ef652
2012-11-30 17:49:39 -08:00
Amith Yamasani
c566b43d02 Fix crosstalk between users for widgets hosted in lockscreen
This was initially about the Clock widget crashing repeatedly on some
devices with multiple users. Turned out that there were race conditions
when switching users that could result in remote views of one user calling
back to the RemoteViewsAdapter in keyguard that in turn sent an incorrect widget id
to a different user's widget, resulting in a crash.

Since KeyguardHostView is instantiated in the same process for different users,
it needs to carry a user identity to pass along to AppWidgetService so that
remote views services were bound to the correct user and callbacks were attached and
detached properly.

Added some aidl calls that take the userId to do the binding properly. A more
complete fix might be needed in the future so that all calls from Keyguard carry
the user id.

Also, there was a problem in comparing host uid for secondary users, since Settings
for a secondary user has a different uid than keyguard. Not an issue on single-user
systems. Changed the host.uid comparison to accomodate for the secondary user.

Bug: 7450247
Change-Id: Idbc36e3c60023cac74174f6cb7f2b2130dd3052c
2012-11-30 17:28:08 -08:00
Craig Mautner
f967500eba am 46732445: Merge "Include child windows when looking for insertion point." into jb-mr1.1-dev
* commit '46732445b4c02c225544851cb6cf848ec0583494':
  Include child windows when looking for insertion point.
2012-11-30 16:42:56 -08:00
Craig Mautner
7b1aa77a9b Include child windows when looking for insertion point.
After finding a window in the window list we turn around and look in
the AppWindowToken.windows list for it. If it is a child of a window
in that list we should use the parent windows index as the search
result. Instead we gave up and ended up inserting the window at the
beginning of the windows list.

Bug 7357465 fixed.

Change-Id: If77f343b8597bfbb0b7fa41dedf7972d78d03020
2012-11-30 16:14:45 -08:00
Martijn Coenen
f77445cd48 am b1a01ab0: Merge "Allow the NFC process to call Bluetooth APIs." into jb-mr1.1-dev
* commit 'b1a01ab01c2aa5136f7781c3a6ec682590e38ac4':
  Allow the NFC process to call Bluetooth APIs.
2012-11-30 11:09:43 -08:00
Martijn Coenen
b1a01ab01c Merge "Allow the NFC process to call Bluetooth APIs." into jb-mr1.1-dev 2012-11-30 11:08:07 -08:00
Dianne Hackborn
1bd7d5e47e am 675814d4: Merge "Maybe fix issue #7596986: Frequent runtime restarts; IAE at..." into jb-mr1.1-dev
* commit '675814d488579582e0214cc720d9ccc310173f25':
  Maybe fix issue #7596986: Frequent runtime restarts; IAE at...
2012-11-30 10:45:02 -08:00
Dianne Hackborn
675814d488 Merge "Maybe fix issue #7596986: Frequent runtime restarts; IAE at..." into jb-mr1.1-dev 2012-11-30 10:42:15 -08:00
Dianne Hackborn
ed74c10f13 am aae329ef: Merge "Don\'t apply transformation fudge when not rotating." into jb-mr1.1-dev
* commit 'aae329ef0f68e30897faef55c86548dab0eadf37':
  Don't apply transformation fudge when not rotating.
2012-11-29 17:56:58 -08:00
Dianne Hackborn
aae329ef0f Merge "Don't apply transformation fudge when not rotating." into jb-mr1.1-dev 2012-11-29 17:53:47 -08:00
Dianne Hackborn
4b16969b00 Don't apply transformation fudge when not rotating.
There is this stupid fudge factor applied to window transformations
when doing a screen rotation animation.  We need this when rotating,
but when not rotating it causes very visible artifacts.  Historically
the non-rotation case only happened due to configuration changes, so
wasn't that big a deal.  Now however that we use this when switching
users, it is more annoying.  So get rid of it for such cases.

Change-Id: I6b343866c1bad9b16984b4a629917c2f1bb37b9e
2012-11-29 17:51:24 -08:00
Dianne Hackborn
40ca751ba0 am ebec2315: Merge "Always report user switched after unfreezing screen." into jb-mr1.1-dev
* commit 'ebec2315353941890471aa901e87f19f681d007a':
  Always report user switched after unfreezing screen.
2012-11-29 16:41:44 -08:00
Dianne Hackborn
ebec231535 Merge "Always report user switched after unfreezing screen." into jb-mr1.1-dev 2012-11-29 16:38:23 -08:00
Dianne Hackborn
6c5406acd7 Maybe fix issue #7596986: Frequent runtime restarts; IAE at...
...android.os.Parcel.nativeAppendFrom(Native Method)

The failing stack trace is:

11-20 20:29:04.365 19154 19170 E AndroidRuntime: java.lang.IllegalArgumentException
11-20 20:29:04.365 19154 19170 E AndroidRuntime:        at android.os.Parcel.nativeAppendFrom(Native Method)
11-20 20:29:04.365 19154 19170 E AndroidRuntime:        at android.os.Parcel.appendFrom(Parcel.java:428)
11-20 20:29:04.365 19154 19170 E AndroidRuntime:        at android.os.Bundle.writeToParcel(Bundle.java:1613)
11-20 20:29:04.365 19154 19170 E AndroidRuntime:        at android.os.Parcel.writeBundle(Parcel.java:605)
11-20 20:29:04.365 19154 19170 E AndroidRuntime:        at android.location.Location.writeToParcel(Location.java:903)
11-20 20:29:04.365 19154 19170 E AndroidRuntime:        at android.os.Parcel.writeParcelable(Parcel.java:1254)
11-20 20:29:04.365 19154 19170 E AndroidRuntime:        at android.os.Parcel.writeValue(Parcel.java:1173)
11-20 20:29:04.365 19154 19170 E AndroidRuntime:        at android.os.Parcel.writeMapInternal(Parcel.java:591)
11-20 20:29:04.365 19154 19170 E AndroidRuntime:        at android.os.Bundle.writeToParcel(Bundle.java:1619)
11-20 20:29:04.365 19154 19170 E AndroidRuntime:        at android.os.Parcel.writeBundle(Parcel.java:605)
11-20 20:29:04.365 19154 19170 E AndroidRuntime:        at android.location.Location.writeToParcel(Location.java:903)
11-20 20:29:04.365 19154 19170 E AndroidRuntime:        at android.os.Parcel.writeParcelable(Parcel.java:1254)
11-20 20:29:04.365 19154 19170 E AndroidRuntime:        at android.os.Parcel.writeValue(Parcel.java:1173)
11-20 20:29:04.365 19154 19170 E AndroidRuntime:        at android.os.Parcel.writeMapInternal(Parcel.java:591)
11-20 20:29:04.365 19154 19170 E AndroidRuntime:        at android.os.Bundle.writeToParcel(Bundle.java:1619)
11-20 20:29:04.365 19154 19170 E AndroidRuntime:        at android.os.Parcel.writeBundle(Parcel.java:605)
11-20 20:29:04.365 19154 19170 E AndroidRuntime:        at android.content.Intent.writeToParcel(Intent.java:6660)
11-20 20:29:04.365 19154 19170 E AndroidRuntime:        at android.app.ApplicationThreadProxy.scheduleReceiver(ApplicationThreadNative.java:763)
11-20 20:29:04.365 19154 19170 E AndroidRuntime:        at com.android.server.am.BroadcastQueue.processCurBroadcastLocked(BroadcastQueue.java:230)
11-20 20:29:04.365 19154 19170 E AndroidRuntime:        at com.android.server.am.BroadcastQueue.processNextBroadcast(BroadcastQueue.java:777)

This is odd because where we do Bundle.writeToParcel(), we are just writing the Parcel
we have with its current length.  There is no way this should be able to fail like this...
unless the Bundle is changed while we are running?

Hm.

It looks like the location manager is holding on to Location objects which have a
Bundle of extras.  It is that Bundle of extras that the crash is happening on.
And the bundle extras can be changed as it operates.  And there are places where
the raw Location object is returned from the location manager, which means the
caller can be olding on to a Location object whose extras can be changed at any
time by other threads in the location manager.

So that seem suspicious.

This change should take care of all these places in the location manager, by
making sure to copy the location object before it goes out of the location
manager.

In addition, add some code to the activity manager to not bring down the entire
system if there is a problem trying to send one of these broadcasts.  There is
no need, we can just skip the broadcast as bad.

Change-Id: I3043c1e06f9d2931a367f831b6a970d71b0d0621
2012-11-29 16:33:54 -08:00
Zhihai Xu
ec7a8b6f74 am e1a867f6: Merge " BluetoothManagerService call should allow SYSTEM_UID" into jb-mr1.1-dev
* commit 'e1a867f68d3727908be1c2cfc90a5ba6a5785c17':
  BluetoothManagerService call should allow SYSTEM_UID
2012-11-29 16:06:17 -08:00
Zhihai Xu
e1a867f68d Merge " BluetoothManagerService call should allow SYSTEM_UID" into jb-mr1.1-dev 2012-11-29 16:03:49 -08:00
Zhihai Xu
6eb7652b04 BluetoothManagerService call should allow SYSTEM_UID
bug 7561429

Change-Id: I1483bfe1361f71c7ae3529ea496b33504b95413e
2012-11-29 15:41:04 -08:00
Dianne Hackborn
4d78abfca7 Always report user switched after unfreezing screen.
Change-Id: I58172896892a07e72a3430e56e4d2944d388c7c9
2012-11-29 15:10:18 -08:00
Colin Cross
418af9323f am 05db19bc: Merge "trigger kernel blocked stack trace on system server watchdog" into jb-mr1.1-dev
* commit '05db19bc55962374812775bf7d980d83ca4f6c3e':
  trigger kernel blocked stack trace on system server watchdog
2012-11-29 12:49:46 -08:00
Colin Cross
05db19bc55 Merge "trigger kernel blocked stack trace on system server watchdog" into jb-mr1.1-dev 2012-11-29 12:47:54 -08:00