160 Commits

Author SHA1 Message Date
Mathias Agopian
436c627ca4 make sure conditions will return when the status of a surface is not NO_ERROR 2009-09-10 16:55:13 -07:00
Andy McFadden
b9e52a07b7 Fix sim-eng build.
Appears to have been broken by:

commit 9779b221e999583ff89e0dfc40e56398737adbb3
Author: Mathias Agopian <mathias@google.com>
Date:   Mon Sep 7 16:32:45 2009 -0700

    fix [2068105] implement queueBuffer/lockBuffer/dequeueBuffer properly

For some reason we don't like to have "-lpthread" globally -- it's a no-op
on device builds, but required for many host tools and all sim binaries --
so adding the use of pthread calls requires adding the library explicitly.
2009-09-09 08:02:54 -07:00
Mathias Agopian
9779b221e9 fix [2068105] implement queueBuffer/lockBuffer/dequeueBuffer properly
Rewrote SurfaceFlinger's buffer management from the ground-up.
The design now support an arbitrary number of buffers per surface, however the current implementation is limited to four. Currently only 2 buffers are used in practice.

The main new feature is to be able to dequeue all buffers at once (very important when there are only two). 

A client can dequeue all buffers until there are none available, it can lock all buffers except the last one that is used for composition. The client will block then, until a new buffer is enqueued.

The current implementation requires that buffers are locked in the same order they are dequeued and enqueued in the same order they are locked. Only one buffer can be locked at a time.

eg. Allowed sequence:   DQ, DQ, LOCK, Q, LOCK, Q
eg. Forbidden sequence: DQ, DQ, LOCK, LOCK, Q, Q
2009-09-07 16:32:45 -07:00
Dianne Hackborn
a8f6018d6c Work on issue #2079167: Flickering issue across multiple UI
This addresses a few parts of the bug:

- There was a small issue in the window manager where we could show a window
  too early before the transition animation starts, which was introduced
  by the recent wallpaper work.  This was the cause of the flicker when
  starting the dialer for the first time.

- There was a much larger problem that has existing forever where moving
  an application token to the front or back was not synchronized with the
  application animation transaction.  This was the cause of the flicker
  when hanging up (now that the in-call screen moves to the back instead
  of closing and we always have a wallpaper visible).  The approach to
  solving this is to have the window manager go ahead and move the app
  tokens (it must in order to keep in sync with the activity manager), but
  to delay the actual window movement: perform the movement to front when
  the animation starts, and to back when it ends.  Actually, when the
  animation ends, we just go and completely rebuild the window list to
  ensure it is correct, because there can be ways people can add windows
  while in this intermediate state where they could end up at the wrong
  place once we do the delayed movement to the front or back.  And it is
  simply reasuring to know that every time we finish a full app transition,
  we re-evaluate the world and put everything in its proper place.

Also included in this change are a few little tweaks to the input system,
to perform better logging, and completely ignore input devices that do not
have any of our input classes.  There is also a little cleanup of evaluating
configuration changes to not do more work than needed when an input
devices appears or disappears, and to only log a config change message when
the config is truly changing.

Change-Id: Ifb2db77f8867435121722a6abeb946ec7c3ea9d3
2009-09-02 17:20:25 -07:00
Mike Lockwood
36dad72251 EventHub: Fix file descriptor leak.
Signed-off-by: Mike Lockwood <lockwood@android.com>
2009-08-28 13:30:03 -07:00
Mathias Agopian
9e2be20cc5 fix [2070341] [FAST BLOCKER] can't successfully setup erc52 2009-08-21 15:44:17 -07:00
Mathias Agopian
18b6b49ea5 fix a bug that caused the PixelFormat viewed by Surface to be wrong.
what happened is that the efective pixel format is calculated by SF but Surface nevew had access to it directly.
in particular this caused query(FORMAT) to return the requested format instead of the effective format.
2009-08-19 17:46:26 -07:00
Mathias Agopian
b2f8450db8 fix [2063336] Surface.lockSurface throws IllegalArgumentException when out of memory 2009-08-19 17:10:18 -07:00
Mathias Agopian
321abdb092 make sure to update a surface's usage bits when it changes, instead of only the first time.
also fixed a few locking issues in Surface and commented how each member is protected.
2009-08-14 18:52:17 -07:00
Mathias Agopian
5cec4742b3 second take, hopefully this time it doesn't break one of the builds: "SurfaceFlinger will now allocate buffers based on the usage specified by the clients. This allows to allocate the right kind of buffer automatically, without having the user to specify anything." 2009-08-11 23:32:29 -07:00
Fred Quintana
64e89a8aff Revert "SurfaceFlinger will now allocate buffers based on the usage specified by the clients. This allows to allocate the right kind of buffer automatically, without having the user to specify anything."
This reverts commit 8b76a0ac6fbf07254629ed1ea86af014d5abe050.
2009-08-11 20:49:35 -07:00
Mathias Agopian
8b76a0ac6f SurfaceFlinger will now allocate buffers based on the usage specified by the clients. This allows to allocate the right kind of buffer automatically, without having the user to specify anything.
This change makes SurfaceHolder.setType(GPU) obsolete (it's now ignored).
Added an API to android_native_window_t to allow extending the functionality without ever breaking binary compatibility. This is used to implement the new set_usage() API. This API needs to be called by software renderers because the default is to use usage flags suitable for h/w.
2009-08-11 16:12:56 -07:00
Mathias Agopian
509dae53c5 added EGLUtils::strerror 2009-08-07 16:37:21 -07:00
Mathias Agopian
6693f23654 better error handling 2009-08-06 20:46:44 -07:00
Android (Google) Code Review
c1879a0933 Merge change 20365
* changes:
  oops, EGLConfig of value zero may be valid
2009-08-06 17:15:11 -07:00
Mathias Agopian
d7ef08c08d oops, EGLConfig of value zero may be valid 2009-08-06 17:14:10 -07:00
Android (Google) Code Review
43a6d88e4e Merge changes 20345,20346,20347
* changes:
  update most gl tests to use EGLUtils
  added two EGL helpers for selecting a config matching a certain pixelformat or native window type
  added NATIVE_WINDOW_FORMAT attribute to android_native_window_t
2009-08-06 16:27:47 -07:00
Mathias Agopian
265d9c076a added two EGL helpers for selecting a config matching a certain pixelformat or native window type 2009-08-06 16:05:39 -07:00
Mathias Agopian
25ec00fd13 added NATIVE_WINDOW_FORMAT attribute to android_native_window_t 2009-08-06 16:04:29 -07:00
Iliyan Malchev
fc2ebc473b EventHub: pass the name of each input device up to Java
Signed-off-by: Iliyan Malchev <malchev@google.com>
2009-08-06 14:52:13 -07:00
Android (Google) Code Review
573963e3a8 Merge change 20133
* changes:
  don't crash when SurfaceBuffer::writeToParcel is given a null argument
2009-08-05 12:52:51 -07:00
Mathias Agopian
4e0df8ede8 don't crash when SurfaceBuffer::writeToParcel is given a null argument 2009-08-05 12:22:30 -07:00
Dianne Hackborn
0dd7cb4b4e Finish implementation of multiple pointer support for MotionEvent.
The major things going on here:

- The MotionEvent API is now extended to included "pointer ID" information, for
  applications to keep track of individual fingers as they move up and down.
  PointerLocation has been updated to take advantage of this.

- The input system now has logic to generate MotionEvents with the new ID
  information, synthesizing an identifier as new points are down and trying to
  keep pointer ids consistent across events by looking at the distance between
  the last and next set of pointers.

- We now support the new multitouch driver protocol, and will use that instead
  of the old one if it is available.  We do NOT use any finger id information
  coming from the driver, but always synthesize pointer ids in user space.
  (This is simply because we don't yet have a driver reporting this information
  from which to base an implementation on.)

- Increase maximum number of fingers to 10.  This code has only been used
  with a driver that reports up to 2, so no idea how more will actually work.

- Oh and the input system can now detect and report physical DPAD devices.
2009-08-04 20:53:52 -07:00
Mathias Agopian
abac01052c be more robust when errors occur upon EGL surface creation (ie: don't crash) 2009-07-31 14:47:00 -07:00
Android (Google) Code Review
1a20bae18c Merge change 9287
* changes:
  fixed some issues with the software renderer when surfaces are made current.
2009-07-30 18:46:48 -07:00
Mathias Agopian
5b5c914487 fixed some issues with the software renderer when surfaces are made current.
there was several issues:
- when a surface was made non-current, the last frame wasn't shown and the buffer could stay locked
- when a surface was made current the 2nd time, it would not dequeue a new buffer

now, queue/dequeue are done when the surface is made current.

for this to work, a new query() hook had to be added on android_native_window_t, it allows to retrieve some attributes of a window (currently only width and height).
2009-07-30 18:14:56 -07:00
Android (Google) Code Review
e7f03253f9 Merge change 9070
* changes:
  Adding resizeInput and setAttributes for overlay
2009-07-30 14:37:48 -07:00
Mathias Agopian
5e631892fb Fix a debug statement in BufferMapper 2009-07-30 12:24:41 -07:00
Benny Wong
4ccee716f8 Adding resizeInput and setAttributes for overlay 2009-07-29 17:53:38 -07:00
Android (Google) Code Review
8ed7d69f65 Merge change 5892
* changes:
  Hardware overlay support
2009-07-20 10:50:52 -07:00
Mike Lockwood
15431a9482 EventHub: Compare name instead of id when excluding event input devices.
Signed-off-by: Mike Lockwood <lockwood@android.com>
2009-07-17 00:10:10 -04:00
Benny Wong
6d2090e214 Hardware overlay support
Enable hardware overlay support for camera and video playback use cases
2009-07-16 14:31:20 -07:00
Mike Lockwood
1d9dfc5dcf EventHub: Add support for excluding devices from being opened by as a keyboard.
This will be used to avoid unnecessarily listening to data from sensors
that function as event devices.

Signed-off-by: Mike Lockwood <lockwood@android.com>
2009-07-16 11:51:42 -04:00
Dianne Hackborn
e3dd884815 Implement virtual button support.
The kernel can now publish a property describing the layout of virtual
hardware buttons on the touchscreen.  These outside of the display
area (outside of the absolute x and y controller range the driver
reports), and when the user presses on them a key event will be
generated rather than a touch event.

This also includes a number of tweaks to the absolute controller
processing to make things work better on the new screens.  For
example, we now reject down events outside of the display area.

Still left to be done is the ability to cancel a key down event,
so the user can slide up from the virtual keys to the touch screen
without causing a virtual key to execute.
2009-07-14 18:51:53 -07:00
Mathias Agopian
8d9a5eff42 fix [1964315] crash in the surface.cpp while browsing 2009-07-13 18:29:59 -07:00
Dave Sparks
6698d16b95 resolved conflicts for merge of 04c7d0f8 to master 2009-07-08 17:26:05 -07:00
Dave Sparks
59c1a93529 Add timestamps to video frames to improve A/V sync.
Bug 1927069.
2009-07-08 15:59:25 -07:00
Mathias Agopian
181a9811e4 should fix sim build 2009-07-06 18:07:26 -07:00
Mathias Agopian
03a9a3449a Merge commit 'goog/master' into merge_master 2009-07-06 14:16:55 -07:00
Android (Google) Code Review
fee47b699f am c7396025: Merge change 6084 into donut
Merge commit 'c7396025e59524e7ef639fd86fc23123939ee91c'

* commit 'c7396025e59524e7ef639fd86fc23123939ee91c':
  Return CAMERA_ERROR_SERVER_DIED to camera app when camera service dies (bug 1956726)
2009-07-06 11:02:33 -07:00
Mathias Agopian
d763b5d919 get rid of references to MemoryDealer in SurfaceFlinger 2009-07-02 18:50:51 -07:00
James Dong
a1b653d41d Return CAMERA_ERROR_SERVER_DIED to camera app when camera service dies (bug 1956726) 2009-07-02 10:04:20 -07:00
Mathias Agopian
dfe983bd79 Merge commit 'goog/master' into merge_master 2009-07-01 18:33:18 -07:00
Wu-cheng Li
0795684839 am b8a10fe4: Allow setPreviewDisplay after startPreview.
Merge commit 'b8a10fe45657f2dcc50cae8a06805f8438a6937e'

* commit 'b8a10fe45657f2dcc50cae8a06805f8438a6937e':
  Allow setPreviewDisplay after startPreview.
2009-07-01 11:20:08 -07:00
Wu-cheng Li
b8a10fe456 Allow setPreviewDisplay after startPreview. 2009-07-01 01:41:25 +08:00
Mathias Agopian
276826bae2 Region::makeBoundsSelf() efficiently turns a region to its bounds 2009-06-29 18:46:37 -07:00
Android (Google) Code Review
1f7300818f am c44989d6: Merge change 5350 into donut
Merge commit 'c44989d6c7bcc761fb37f54fd37aac2070ba8e5e'

* commit 'c44989d6c7bcc761fb37f54fd37aac2070ba8e5e':
  move ui/Time.cpp to core/jni, since this is the only place it is used
2009-06-25 15:11:09 -07:00
Mathias Agopian
864c0d50cd move ui/Time.cpp to core/jni, since this is the only place it is used 2009-06-25 14:39:56 -07:00
Mathias Agopian
26c28b16f3 make use of new eglGetRenderBufferANDROID extension to clean-up a bit a few hacks added recently 2009-06-25 00:09:27 -07:00
Mathias Agopian
cbc4c9f8d5 hack copybit back in for video playback on msm7k. we have h/w accelerated video again 2009-06-24 20:39:16 -07:00