Commit Graph

4640 Commits

Author SHA1 Message Date
Craig Mautner
d9f254094e Merge "Do not reuse DisplayAdjustment in Display." 2013-06-28 20:00:56 +00:00
Craig Mautner
1abaa53dcc Do not reuse DisplayAdjustment in Display.
Because the DisplayAdjustment in Display can be modified it should not
use the reference of the DisplayAdjustment that is passed in to
construct the Display. Copy the members of the DisplayAdjustment
instead.

Fixes bug 9622994

Change-Id: I8201b02eba3ef35af3e01f10402cd5dafec1fb23
2013-06-28 12:03:32 -07:00
Craig Mautner
1e09cfaa68 Merge "More debug for 9404689." 2013-06-28 18:01:33 +00:00
Craig Mautner
f1f5054f7a More debug for 9404689.
Changing focus to PhoneWindow.

Change-Id: I75c2ce6b1a20729daf8d2b7f83b2a871e1a7e642
2013-06-28 10:43:07 -07:00
Romain Guy
db4ae2b10e am dbfb2ab4: am 93d46952: am 67603c6e: Recreate TextureView\'s display list on attach Bug #9425270
* commit 'dbfb2ab4a760f0da910758467a7b9fccf09e97f5':
  Recreate TextureView's display list on attach Bug #9425270
2013-06-27 14:57:40 -07:00
Romain Guy
dbfb2ab4a7 am 93d46952: am 67603c6e: Recreate TextureView\'s display list on attach Bug #9425270
* commit '93d46952db60090ae22bc8197659a06ae23cb58b':
  Recreate TextureView's display list on attach Bug #9425270
2013-06-27 14:52:33 -07:00
Craig Mautner
8cbafbe6d2 Merge "Add debug for specific bug." 2013-06-27 19:29:05 +00:00
Craig Mautner
e7c58b6d7d Add debug for specific bug.
To be removed once the bug is fixed.

Change-Id: Ie273d4503bb0b534af0e9efe8f45c573766e9a74
2013-06-27 11:52:04 -07:00
Romain Guy
67603c6e1b Recreate TextureView's display list on attach
Bug #9425270

When a TextureView is detached from its window and immediately
re-attached, the display list is not destroyed but reused as is.
TextureView will however destroy the layer and surface texture
reference by the display list.

The solution is to force TextureView to invalidate its display
list on re-attach if it previously had a surface/layer pair.

Change-Id: I475096ffa7e5709155c4c943bf1bfaaaedbd4a1d
2013-06-27 10:58:10 -07:00
Romain Guy
e3b0a0117a Refcount 9-patches and properly handle GC events
This change adds refcounting of Res_png_9patch instances, the native
data structure used to represent 9-patches. The Dalvik NinePatch class
now holds a native pointer instead of a Dalvik byte[]. This pointer
is used whenever we need to draw the 9-patch (software or hardware.)

Since we are now tracking garbage collection of NinePatch objects
libhwui's PatchCache must keep a list of free blocks in the VBO
used to store the meshes.

This change also removes unnecessary instances tracking from
GLES20DisplayList. Bitmaps and 9-patches are refcounted at the
native level and do not need to be tracked by the Dalvik layer.

Change-Id: Ib8682d573a538aaf1945f8ec5a9bd5da5d16f74b
2013-06-26 17:15:08 -07:00
Alan Viverette
57b867f3f5 Merge "Minor ListView clean up. Exposes View.pointInView() as hidden API." 2013-06-26 22:12:28 +00:00
Alan Viverette
3d15a2b8f4 Minor ListView clean up. Exposes View.pointInView() as hidden API.
Change-Id: Ia628f8438fac5af2471efd8558c8876fae3dafb0
2013-06-25 17:27:37 -07:00
Romain Guy
e981c516e7 Merge "Make sure we have a valid EGL context before drawing Bug #9404946" 2013-06-25 02:23:08 +00:00
Romain Guy
cc6b7caff0 Make sure we have a valid EGL context before drawing
Bug #9404946

Run another EGL context check after invoking user code to ensure
we have a valid context/surface pair before drawing the display list.

Change-Id: Iefb0ced7900ce0c54eb81b62d24ec00700bdce47
2013-06-24 19:19:21 -07:00
Dianne Hackborn
8c84109b9f Use FastPrintWriter... everywhere.
One problem this turned up is, because FastPrintWriter does
its own buffering, a lot of code that used to use PrintWriter
would fail -- if it pointed to a StringWriter, there was no
buffering, so it could just immediately get the result.  Now
you need to first flush the FastPrintWriter.

Also added some new constructors to specify the size of buffer
that FastPrintWriter should use.

Change-Id: If48cd28d7be0b6b3278bbb69a8357e6ce88cf54a
2013-06-24 18:16:48 -07:00
Craig Mautner
07f36c738e Merge "Add activity token to display system." 2013-06-24 18:31:54 +00:00
Chet Haase
edaf0794bb Merge "Fix ViewGroupOverlay's handling of invalidating viewgroups" 2013-06-24 16:37:55 +00:00
Craig Mautner
48d0d18867 Add activity token to display system.
First step in adding activity specific information to displays.
Replace CompatibilityInfoHolder with DisplayAdjustmentsHolder that
holds an activity token in addition to the CompatibilityInfo.

Change-Id: Ie113cd8dd9c62e0b5311204e039a4829096bea68
2013-06-22 15:30:13 -07:00
Chet Haase
e4a2d7c48e Fix ViewGroupOverlay's handling of invalidating viewgroups
Invalidating a view property (alpha, rotation, etc.) causes an
invalidation process that does not work correctly when the view is
in a ViewOverlay. Specifically, if the view is not directly in the
overlay, but is instead inside a hierarchy which is within the overlay,
then the invalidation process stops at the ViewOverlay itself, because
the ViewOverlay has no "parent" view.

The fix is to override the invalidateChildInParentFast() method, just
like we override invalidateChildInParent(), to forward the invalidation
to the host view.

Issue #9389230 Animations not running for nested views under ViewGroupOverlay

Change-Id: I03fcef10ed1c8a91cb26d5d9d6945634b0b695b5
2013-06-21 17:49:36 -07:00
Romain Guy
35c70f94ef Merge "When destroying a surface, only unmake current if necessary Bug #9404946" 2013-06-21 23:44:32 +00:00
Romain Guy
c8ba0b4616 When destroying a surface, only unmake current if necessary
Bug #9404946

The Calendar app destroys one of its popup windows during a draw
traversal. Without this patch, we end up with no current context
nor surface after we're done gathering display lists. This means
that all of our EGL/GL calls will either fail or have undefined
behaviors. This could explain the PBO crash we are seeing with
the monkeys. Without a proper GL context, the driver returns NULL
when we map the PBO in CPU memory.

Change-Id: I210cf724be73da909a7621f807298a9f4a58e61d
2013-06-21 16:40:30 -07:00
Chet Haase
2ea7f8b9c5 Refactoring/simplifying Transition code/API
Transitions used to be three phase:
- captureValues(): get all relevant property values in the
affected view targets
- setup(): set appropriate start values for affected views
prior to any transitions being played
- play(): create/play Animators for affected views

Now the second and third phases have been collapsed (and named
"play()"). This single step sets initial values for target views
and creates any Animators that should be played during the transition.
The transition mechanism stores these Animators and then starts
them at the appropriate time in the overall transition.

Issue #9507585 Transitions: Simplify Transition.play() design

Change-Id: I3fc67599b38fe49eee885dc5d32444db90b7703b
2013-06-21 16:07:14 -07:00
Romain Guy
27e0bf6278 Safely dispose of the resize buffer
We just ensure there is a valid EGL context before
we destroy the associated layer.
2013-06-21 14:07:07 -07:00
Chet Haase
6ebe3de331 Fix transitions on disappearing view hiearchies
Previously, Fade transitions did not work correctly on hirearchies; they
only handled individual views. in particular, they would side-effect all
fading views by removing them from their parent to fade them out in the
overlay of the scene root. This worked for the fade-out transition itself,
but caused problems when those same hierarchies were added back in and
another Fade was run on the hierarchy, because now all of the views inside
that parent node had been removed, so they didn't fade in at all.

The fix was to add logic in Visibility to detect when a disappearing
view was inside a hierarchy that was also disappearing, and to skip the
fade on the views inside that hierarchy, leaving only the top-most
disappearing view to be faded out, thus preserving the hierarchy under
that faded-out group.

Along the way, there were various cleanups, fixes, and refactorings in the
transition code, and slight API modifications.

Issue #9406371 Transitions: Removing view hierarchy not working correctly
Issue #9470255 Transitions: Separate different transitions by Scene Root

Change-Id: I42e80dac6097fee740f651dcc0535f2c57c11ebb
2013-06-20 15:35:04 -07:00
Svetoslav
9dafebb817 Correctly update the source of recurring subtree change accessibility events.
Change-Id: I0b0fd9224a5208b274e5c889a27417ef13579849
2013-06-18 16:36:15 -07:00
Jeff Brown
a506a6ec94 Add an API to allow for creating private virtual displays.
This change enables applications to create a private virtual
display that renders its content to a surface of its own creation.
The display is private in the sense that only the application
that owns the display is allowed to place windows upon it.
Mirroring and blanking is also disabled for these displays.

Bug: 9192512
Change-Id: I852ea07f0c7df1d244e354e3daca3a6960285ca0
2013-06-18 15:32:41 -07:00
Svetoslav
e89f48bfb1 Crash in ViewRootImpl when accessibility is on.
We fire view subtree mutation events every X amount of time.
It was possible that the runnable that fires an event to be
scheduled more than once while this should not happen. As
a result there was a crash since we did not expect to have
a second run and nullified a reference.

bug:9422804

Change-Id: I914e163b026cd217e1536ab0ed3a6b11113c2c73
2013-06-18 14:43:47 -07:00
Svetoslav
3fcf1eda18 Update Javadoc references
Change-Id: I2e4834070de6ebd55e6350f31f9f8e619cb0ff2d
2013-06-18 13:30:35 -07:00
Svetoslav
3577a283e1 Adding traits APIs to AccessibilityNodeInfo.
This change adds several traits and properties to AccessibilityNodeInfo
aiming to allow better description of native Android components to
accessibility services as well as mapping web content to native Android
node info tree.

Change-Id: I36b893cbaa6213c9d02d805e9dc36b6d792b4961
2013-06-18 10:41:48 -07:00
Scott Main
f78484b0b1 am ea893536: am c4473d10: am 27a8508e: add attributes reference for splimotionevents and layoutmode
* commit 'ea8935362da192508a4ff945b47e0c7ff1239679':
  add attributes reference for splimotionevents and layoutmode
2013-06-17 18:41:29 -07:00
Scott Main
ea8935362d am c4473d10: am 27a8508e: add attributes reference for splimotionevents and layoutmode
* commit 'c4473d10ed747fb1e84efff7183023e0ecc1a493':
  add attributes reference for splimotionevents and layoutmode
2013-06-17 18:39:18 -07:00
Scott Main
27a8508ee1 add attributes reference for splimotionevents and layoutmode
Change-Id: Id78f2957c994fc30a0837084f22766c8cfa70fe8
2013-06-18 01:33:33 +00:00
Romain Guy
fb5c905097 Merge "Cancel layer update when a layer is about to be destroyed Bug #9310706" 2013-06-17 20:39:45 +00:00
Romain Guy
e93482f5ea Cancel layer update when a layer is about to be destroyed
Bug #9310706

Change-Id: I73eea6314c326f15a979617e3a05b525935f0d3f
2013-06-17 13:35:03 -07:00
Romain Guy
4ffa23379f Merge "Lazily allocate seldom-used data structures" 2013-06-17 18:34:34 +00:00
Romain Guy
6410c0aaf1 Lazily allocate seldom-used data structures
Change-Id: I8d6b9d2d821168329206c01ed6539a1466af272f
2013-06-17 11:34:09 -07:00
Romain Guy
65aaec3d39 Merge "Lazily allocate seldom-used data structures" 2013-06-17 18:23:42 +00:00
Romain Guy
16c0318474 Lazily allocate seldom-used data structures
Change-Id: I8d6b9d2d821168329206c01ed6539a1466af272f
2013-06-17 11:21:58 -07:00
Craig Mautner
636f119e2f Merge "Complete doDie() before executing addView()." 2013-06-17 13:59:50 +00:00
Craig Mautner
8f303ad970 Complete doDie() before executing addView().
If WindowManager.addView() is called soon after
WindowManager.removeView() then the MSG_DIE in the ViewRootImpl
mHandler queue may not have had time to execute. This will cause
WindowManagerGlobal to throw an exception since the DecorView
is being added before it has been removed.

This fix detects that situation by saving all Views that are queued
up for ViewRootImpl.doDie(). If addView() is called for one of these
Views then doDie() is called immediately and not called when MSG_DIE
eventually makes its way through the queue.

This change also makes doDie() non-reentrant by only allowing it to
carry out its functions the first time it is called. This keeps
dispatchDetachedWindows() from causing destruction by recursively
calling back into doDie(). This is usually caused by calling
dismissDialog() from within dispatchDetachedWindow().

Fixes bug 9404689.
Fixes bug 9406261.

Change-Id: Id4fc8054e273215d82366428fef51b9ba98385fe
2013-06-15 10:52:45 -07:00
John Spurlock
80f00c1f23 Remove concept of system bar from window manager.
It was already hardcoded to false, this change removes the dead code.

Change-Id: I5e543344e60f69cb9882a70ba29f7c09404ad9fc
2013-06-14 13:20:17 -04:00
Romain Guy
4969fecf07 Merge "Fix possible NPE when a ViewRoot doesn't have a view" 2013-06-13 22:27:26 +00:00
Romain Guy
70d4c5a0fe Fix possible NPE when a ViewRoot doesn't have a view
Change-Id: I8f76a657fa44fc5c7e0bec3e609eaf49e269910f
2013-06-13 15:26:50 -07:00
Craig Mautner
f76c17f0cb Merge "Add debug for specific bug." 2013-06-13 13:53:27 +00:00
Craig Mautner
9e105e0a9a Add debug for specific bug.
To be removed once the bug is fixed.

Change-Id: I83bd5b9fd722826c59b1178303fc4e7feb8eefd2
2013-06-12 20:19:00 -07:00
Romain Guy
7112fddbe2 Merge "Restore buildLayer()'s old behavior; it's synchronous again Bug #9193833" 2013-06-13 01:19:46 +00:00
Romain Guy
405436021d Restore buildLayer()'s old behavior; it's synchronous again
Bug #9193833

Change-Id: I4ee07e65c0a8967f0b55da030ecaad6dfc46136f
2013-06-12 15:31:28 -07:00
Craig Mautner
037aa8d434 Centralize all system InputEventReceiver monitors.
Implement all system level InputEvent monitors as new
InputEventListeners. Only one InputChannel required and monitoring
can be enabled or disabled by registering with WindowManagerService.

Change-Id: I64714ab858342ed183c62b421098478ffb6637bc
2013-06-12 10:59:16 -07:00
Romain Guy
a4cda4d643 Merge "Make constants final" 2013-06-11 01:26:23 +00:00
Romain Guy
fadd208144 Make constants final
Change-Id: Ifd54e55011ab63a10ddf851529ce4779447133e0
2013-06-10 17:03:47 -07:00