Commit Graph

131 Commits

Author SHA1 Message Date
Jamie Gennis
5e67f87430 Add incStrong and decStrong methods to android_native_{window,buffer}_t.
This change adds the methods necessary to use sp<> to handle refcounting
android_native_window_t and android_native_buffer_t.  The new methods forward
the refcounting operations to the corresponding android_native_base_t
functions.

Change-Id: I7de8e262728e439bc1efdf69374a2a9f6f432ced
2010-05-10 17:33:32 -07:00
Mathias Agopian
cc08e688f5 added setCrop() to android_native_window_t
hooked up the new method up to Surface.cpp
the actual crop is not implemented in SF yet

Change-Id: Ic6e313c98fd880f127a051a0ccc71808bd689751
2010-04-20 13:36:29 -07:00
Mathias Agopian
5629eb1676 when a zero dimension buffer is allocated, turn the allocation into
a 1x1 buffer instead of Nx1 (or 1xN)

Change-Id: I27eeb15e83e13002dd9405f4e52b54f7dffc0fe7
2010-04-15 15:23:25 -07:00
The Android Open Source Project
529973acc2 merge from open-source master
Change-Id: I975030d9572463bc69245bcffa25c47d7acb2b51
2010-04-08 11:27:55 -07:00
Chih-Wei Huang
e5f56fb1b4 Add keycodes PageUp and PageDown
This is useful for applications like web browser.

Change-Id: Ie9262d5b75de87ecd0971407a7c3ce9aa6e4998e
2010-04-02 14:39:20 -07:00
Mathias Agopian
c8620b60d6 fix [2545826] calling into gralloc with external lock held
Change-Id: I2d0e017382404c684c768a0dd0423d574213f10a
2010-03-25 14:34:49 -07:00
Mathias Agopian
e156e6478f Add a new connect/disconnect API to android_native_window_t
it's used to keep track of which API owns the surface.

Change-Id: I1021c5905c020efc3c428e561b38189377168b22
2010-03-11 15:05:52 -08:00
Mathias Agopian
98e71ddaed remove a dependency of GraphicBuffer (libui) on Parcel (libbinder).
Add a Flattenable interface to libutils which can be used to flatten
an object into bytestream + filedescriptor stream.
Parcel is modified to handle Flattenable. And GraphicBuffer implements
Flattenable.

Except for the overlay classes libui is now independent of libbinder.
2010-02-21 23:27:25 -08:00
Mathias Agopian
b6121422ef Remove a dependency of Region (libui) on Parcel (libbinder). 2010-02-17 20:26:47 -08:00
Mathias Agopian
3db2164051 fix a bug I introduced recently where YUV formats would crash the system 2010-02-16 20:43:39 -08:00
Mathias Agopian
54ed4f6282 get rid off the YUV formats at the libui layer 2010-02-16 17:33:37 -08:00
Mathias Agopian
9cce325fae split libsurfaceflinger_client and libcamera_client out of libui 2010-02-11 13:16:22 -08:00
Wu-cheng Li
a05c822704 Add exposure compensation parameter.
bug:2375993
2010-02-09 18:28:50 +08:00
Wu-cheng Li
391f3f8b5e Add float support for set and get in CameraParameters.
bug:2375989
bug:2375987
2010-01-31 17:03:10 +08:00
Wu-cheng Li
077c40fee3 Add focal length and view angle API.
bug:2375989,2375987
2010-01-30 20:36:04 +08:00
Chih-Chung Chang
f091e833d3 Add support for setting camera display orientation. 2010-01-26 11:07:07 -08:00
Wu-cheng Li
88eeff5270 Change key to KEY_SUPPORTED_JPEG_THUMBNAIL_SIZES for consistency.
bug:2375986
2010-01-25 15:20:23 +08:00
Chih-Chung Chang
5994a330ac Add support for 180/270 degrees rotation. 2010-01-22 16:30:39 -08:00
Chih-Chung Chang
52e7200b6e Add an orientation parameter for overlay, so we can do camera preview in portrait mode. 2010-01-21 20:20:08 -08:00
Mathias Agopian
963abad79a fix some aspects of [2258746] native crash in launcher2
Surface::validate() could sometimes dereference a null pointer before checking it wasn't null.
This will prevent the application to crash when given bad parameters or used incorrectly.
However, the bug above probably has another cause.
2009-11-13 15:26:29 -08:00
Mathias Agopian
6fee064809 fix[2228133] pixelflinger ignores the "vertical stride" leading to artifacts when playing back video
we lost the concept of vertical stride when moving video playback to EGLImage.
Here we bring it back in a somewhat hacky-way that will work only for the
softgl/mdp backend.
2009-11-02 17:48:33 -08:00
Wu-cheng Li
986e0dcf7a Use image rect information to display zoomed picture. 2009-10-29 13:20:26 +08:00
Mathias Agopian
54ba51dff2 fix [2143798] Need to figure out how to do video
Use EGLImageKHR instead of copybit directly.
    We now have the basis to use streaming YUV textures (well, in fact
    we already are). When/if we use the GPU instead of the MDP we'll
    need to make sure it supports the appropriate YUV format.

    Also make sure we compile if EGL_ANDROID_image_native_buffer is not supported
2009-10-27 13:13:29 -07:00
Mathias Agopian
e700501d0e fix [2170319] gmail bulk operation checkbox latency on passion
This also fixes [2152536] ANR in browser

When SF is enqueuing buffers faster than SF dequeues them.
The update flag in SF is not counted and under some situations SF will only
dequeue the first buffer. The state at this point is not technically
corrupted, it's valid, but just delayed by one buffer.

In the case of the Browser ANR, because the last enqueued buffer was delayed
the resizing of the current buffer couldn't happen.

The system would always fall back onto its feet if anything -else- in
tried to draw, because the "late" buffer would be picked up then.
2009-10-07 16:44:10 -07:00
Mathias Agopian
3330b20303 fix [2167050] glTexImage2D code path buggy in SurfaceFlinger
When EGLImage extension is not available, SurfaceFlinger will fallback to using
glTexImage2D and glTexSubImage2D instead, which requires 50% more memory and an
extra copy. However this code path has never been exercised and had some bugs
which this patch fix.

Mainly the scale factor wasn't computed right when falling back on glDrawElements.
We also fallback to this mode of operation if a buffer doesn't have the adequate
usage bits for EGLImage usage.

This changes only code that is currently not executed. Some refactoring was needed to
keep the change clean. This doesn't change anything functionaly.
2009-10-06 17:00:25 -07:00
Wu-cheng Li
e6a550d02f Add zoom functions and sendCommand.
b2060030
2009-10-06 13:25:10 -07:00
Wu-cheng Li
eb16a09f59 Change FLASH_MODE_VIDEO_LIGHT to FLASH_MODE_TORCH. 2009-09-28 13:51:59 -07:00
Wu-cheng Li
cc6ce203be Add camera parameter key constants and documentation. 2009-09-25 14:23:56 -07:00
Mathias Agopian
dd3423c624 fix [2132563] stuck in boot animation (framebuffer_device_open: Failed to create flip chain) 2009-09-23 15:49:32 -07:00
Mathias Agopian
74faca212e Android side of the fix for [2121211] Sholes has stutter during animations
a new method, compostionComplete() is added to the framebuffer hal, it is used by surfaceflinger to signal the driver that the composition is complete, BEFORE it releases its client. This gives a chance to the driver to
2009-09-17 16:18:16 -07:00
Mathias Agopian
68a6afeb26 fix [2122448] android_native_window_t::setUsage() only reallocates the first buffer
Take 2. We needed to check that the usage flags are "good enough" as opposed to "the same".

This reverts commit 8f17a762fe9e9f31e4e86cb60ff2bfb6b10fdee6.
2009-09-15 19:21:31 -07:00
Mathias Agopian
3910f5467a Revert "fix [2122448] android_native_window_t::setUsage() only reallocates the first buffer"
This reverts commit 486aa963b63e20b7910e1004cebb4f0afabbd80f.
2009-09-15 18:57:06 -07:00
Mathias Agopian
d18afab9d6 fix [2122448] android_native_window_t::setUsage() only reallocates the first buffer 2009-09-15 17:34:04 -07:00
Chih-Chung Chang
00900eb354 Fix 2083478: Camera needs an auto-focus cancel API
Change-Id: I13bda991b32aee47e82b5cf9d43b3021c416a9a2
2009-09-15 18:29:03 +08:00
Mathias Agopian
cbb288bfe8 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
Mathias Agopian
1c97d2ebe1 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
37b2a3744c really be more friendly with C 2009-08-17 12:33:20 -07:00
Mathias Agopian
ba5972ffdc 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
238a66e67b be more friendly with C 2009-08-13 18:27:10 -07:00
Mathias Agopian
ccde199f7c Surface::GPU and Surface::HARDWARE are now deprecated; they will be set automatically if needed.
this also ripples into the window manager API by making some constant there deprecated as well.
2009-08-13 18:19:32 -07:00
Dima Zavin
fae3e73b61 ui: make native_window_set_usage be a static inline
Signed-off-by: Dima Zavin <dima@android.com>
2009-08-13 16:52:24 -07:00
Benny Wong
4c8fb0a184 Modified the camera HAL interface to use the same generic callback architecture as camera services 2009-08-13 10:46:28 -07:00
Mathias Agopian
5221271375 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
b2fd4665e6 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
df37b62c62 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
Andreas Huber
e186431c33 Expose a variation of the createRenderer API that works on a plain Surface. 2009-08-10 12:58:05 -07:00
Mathias Agopian
8c12c7aec3 added EGLUtils::strerror 2009-08-07 16:37:21 -07:00
Android (Google) Code Review
b2001065b9 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
6cf50a770d 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
6b1f41004f added NATIVE_WINDOW_FORMAT attribute to android_native_window_t 2009-08-06 16:04:29 -07:00