this is needed for backward compatibility with somewhat buggy applications.
not a big deal, since the app can request another format explicitely.
Change-Id: Ic73f8acedf94ffc0115637efac28fa8ffaa7e5a4
The old dispatch mechanism has been left in place and continues to
be used by default for now. To enable native input dispatch,
edit the ENABLE_NATIVE_DISPATCH constant in WindowManagerPolicy.
Includes part of the new input event NDK API. Some details TBD.
To wire up input dispatch, as the ViewRoot adds a window to the
window session it receives an InputChannel object as an output
argument. The InputChannel encapsulates the file descriptors for a
shared memory region and two pipe end-points. The ViewRoot then
provides the InputChannel to the InputQueue. Behind the
scenes, InputQueue simply attaches handlers to the native PollLoop object
that underlies the MessageQueue. This way MessageQueue doesn't need
to know anything about input dispatch per-se, it just exposes (in native
code) a PollLoop that other components can use to monitor file descriptor
state changes.
There can be zero or more targets for any given input event. Each
input target is specified by its input channel and some parameters
including flags, an X/Y coordinate offset, and the dispatch timeout.
An input target can request either synchronous dispatch (for foreground apps)
or asynchronous dispatch (fire-and-forget for wallpapers and "outside"
targets). Currently, finding the appropriate input targets for an event
requires a call back into the WindowManagerServer from native code.
In the future this will be refactored to avoid most of these callbacks
except as required to handle pending focus transitions.
End-to-end event dispatch mostly works!
To do: event injection, rate limiting, ANRs, testing, optimization, etc.
Change-Id: I8c36b2b9e0a2d27392040ecda0f51b636456de25
Merge commit '71d73a0dfc110d0bdfc1b7ba385db3e2cfe007e5' into kraken
* commit '71d73a0dfc110d0bdfc1b7ba385db3e2cfe007e5':
Add a method to hide/show a SurfaceView's surface.
This can be used to move a surface offscreen to avoid the cost of compositing it.
This preserves the window and therefore the OpenGL context when used in h/w
accelerated apps.
Change-Id: I280295376601b17989d0fc8a271af66650016f09
1. MotionEvent.recycle() never set mRecycled to true so it couldn't actually
detect doubly-recycled events (unless the TRACK_RECYCLED_LOCATION debuging
flag was enabled).
2. MotionEvent.obtain() did not set mNext to null before returning the event
so it would unnecessarily retain a reference to other events in the
recycled event linked list until recycled again.
Change-Id: I93709c402d260691875f632dfc080a355f85fbb0
Merge commit 'b1110149cccc3b99e59ead34ca46e5ac026f6db9' into kraken
* commit 'b1110149cccc3b99e59ead34ca46e5ac026f6db9':
Use integer for loop counter instead of float
New test in FrameworkTest for the VelocityTracker class
Preserve '+' in phone numbers imported from SIM.
MessageQueue now uses a socket for internal signalling, and is prepared
to also handle any number of event input pipes, once the plumbing is
set up with ViewRoot / Looper to tell it about them as appropriate.
Change-Id: If9eda174a6c26887dc51b12b14b390e724e73ab3
Merge commit 'f78964490d8098387d51444c87bf520ad3f674e2' into kraken
* commit 'f78964490d8098387d51444c87bf520ad3f674e2':
Add new keycodes for the convenience of Japanese IMEs
Call register_localized_collators() with the current locale.
Fixed deserialization problem in DatePicker.
Fix for bug 2467152 files with spaces fail to open.
Set alpha value for newly created dim surface.
telephony: Fix CID when CID is unknown
Merge commit 'fc12b5be2ee49ba2392274d413bd5d759c03c346' into kraken
* commit 'fc12b5be2ee49ba2392274d413bd5d759c03c346':
Fix bug 2594126 Do not crash when ViewRoot is trying to play a UI
Merge commit 'b5fa4dff0c4756ef7868926d4f373645ac0b00a9' into froyo-plus-aosp
* commit 'b5fa4dff0c4756ef7868926d4f373645ac0b00a9':
Fix bug 2594126 Do not crash when ViewRoot is trying to play a UI
sound.
This CL doesn't fix why mView can be null in the first place, but
prevents a crash when mView is null and a UI sound is to be played.
Change-Id: I74ea03567e8e6ebebb6c95c80a473abf11e1163d
Merge commit '3b20c9e80533401d8c423977ef86460d789d4e1e' into kraken
* commit '3b20c9e80533401d8c423977ef86460d789d4e1e':
Fix a minor bug in transitions to left-edge-up landscape.
Merge commit '81ac367be66905a5b53b8e7e98160546802bd98b' into froyo-plus-aosp
* commit '81ac367be66905a5b53b8e7e98160546802bd98b':
Fix a minor bug in transitions to left-edge-up landscape.
Fix MAX_TRANSITION_TILT to remove the entry for upside-down
orientation, which should've been removed when that orientation itself
was removed. This was causing the phone to require further vertical
tilt for transitions to left-edge-up landscape, as compared to
right-edge-up landscape or portait mode.
Bug: 2639310
Change-Id: I8fe2e2baecd6a9c2cecae95d316b0d4e2f8ee251
Merge commit '8138cb49e47f9a9905a316a217757710185c66aa' into froyo-plus-aosp
* commit '8138cb49e47f9a9905a316a217757710185c66aa':
Make Surface.toString() show more useful info to help debug bug 2594388.
Merge commit 'bf73bbffc18f5abb5350fa3a410830c05ad10206' into froyo-plus-aosp
* commit 'bf73bbffc18f5abb5350fa3a410830c05ad10206':
Some debugging help for issue #2594388
WallpaperService doesn't always call onSurfaceDestroyed()
Just helps us see a little better what is going on.
Change-Id: Ibe8efd9e343e880ca31df446c8b36c7fa3722e87
this is used in a few places to get access to the android.view.Surface
native surface. use a macro instead. Also rename the field to mNativeSurface.
Change-Id: I1c6dea14abd6b8b1392c7f97b304115999355094
Bug #2549649
If the window had a different size than its content but the content had already
been measured with the appropriate size, the window would not be resized. This
happens in wrap_content windows (dialogs.) This change simply adds a new codition
to window resizing: if the window is wrap_content, not as big as it can be and
not as big as its content, it gets resized.
Change-Id: I1d82d03af5a15c9ad8dffa0511d5f6d522578285
We need to make sure, if the window size changes, to have onSurfaceChanged()
called for the surface to be redrawn.
Change-Id: Iad518199fa400de8059a77ed34d50d6eb93a6aff
I also realized the ROTATION_NN constants were misdocumented, they
actually align the opposite direction from the "orientation" angle
computed in the code (i.e. orientation=90 is left side up, ROTATION_90
is right side up). I just changed the comment here to keep the change
minimal; I'll update the code to be more consistent outside of this
release branch.
Bug: 2549875
Change-Id: I79c4286be582a21e730b25a8a24f2e1137c6e4cb
There was a really dumb bug that was causing us to not always apply
the new configuration. As a result of fixing this, there were new
glithes in the transition between car and regular mode, so further
work here to fix that. And since I was actually working during the
night and seeing night mode, I noticed how obnoxiously bright the
status bar is compared to the car home at night, so it now nicely
dims itself when we switch to the night config. Oh and in doing
that I also found and fixed a bug in dispatching config changes to
a window (where they wouldn't get dispatched if the window didn't
resize).
FINALLY... tweak the wallpaper enter/exit animations a bit to
make them a little smoother.
Change-Id: I4e062093cbcfbc919307799a794846db2920216f
release the Surface in SurfaceView when it's not visible, after it comes back from relayout(),
it should not be holding buffers at this point, but it's cleaner to have it in the released state.
also log a warning in Surface.finalize() when there is work to do, as it means Surface.release() wasn't
called when it should have.
Change-Id: Id637d4ec2916d8fd800b0344d8dec6cecce02051