Commit Graph

1222 Commits

Author SHA1 Message Date
Jean-Baptiste Queru
d45c61dfcf am 1314bdb2: am e88fa50b: Merge from open-source gingerbread
* commit '1314bdb2b22ae3613c3e08ae278dbc70f90b965c':
  fix failing thread object run
2011-01-30 16:32:44 -08:00
Jean-Baptiste Queru
9bfc45e3c3 am e88fa50b: Merge from open-source gingerbread
* commit 'e88fa50be8d6709ef58b7aeb01c5efa059bcac2e':
  fix failing thread object run
2011-01-30 16:19:59 -08:00
Jean-Baptiste Queru
02bac86968 Merge from open-source gingerbread
Change-Id: I56f2ed37187796807fbf0de15274a85164f9432c
2011-01-30 15:30:03 -08:00
Jamie Gennis
c043fa28b9 am 62884505: Merge "Reset ANativeWindow crop on buffer geometry changes." into honeycomb
* commit '628845056282a0c5b1a212ce5aeeaac092b91ec8':
  Reset ANativeWindow crop on buffer geometry changes.
2011-01-30 15:03:03 -08:00
Jamie Gennis
da04384f18 Merge "Reset ANativeWindow crop on buffer geometry changes." into honeycomb 2011-01-30 15:00:44 -08:00
The Android Open Source Project
b36560f33e Mass merge from gingerbread - do not merge
Change-Id: I45dc3596bf4211d8f91c64f2d1d00588878df629
2011-01-30 12:40:38 -08:00
Dianne Hackborn
402960177f am a1f5e82f: am a30063d8: am 25eb0464: Merge "Normalize output from aapt d"
* commit 'a1f5e82f37c77af7b1d630b5bca715d1742f1234':
  Normalize output from aapt d
2011-01-29 23:07:48 -08:00
Dianne Hackborn
a8eea2f3d9 am a30063d8: am 25eb0464: Merge "Normalize output from aapt d"
* commit 'a30063d80c08434ac3c7316f338c6d54110449ab':
  Normalize output from aapt d
2011-01-29 23:04:50 -08:00
Dianne Hackborn
73431999ab Merge "Normalize output from aapt d" 2011-01-29 22:53:20 -08:00
Jamie Gennis
68f9127e88 Reset ANativeWindow crop on buffer geometry changes.
This changes the ANativeWindow API and the two implementations to reset
the window's crop rectangle to be uncropped when the window's buffer
geometry is changed.

Bug: 3359604
Change-Id: I64283dc8382ae687787ec0bebe6a5d5b4a0dcd6b
2011-01-28 18:21:54 -08:00
Jamie Gennis
e8c431b142 am 2a8f8d57: Merge "Quiet the SurfaceFlingerClient dequeueBuffer error." into honeycomb
* commit '2a8f8d57d23a171eaa367faa143f45fdd2f9cc1c':
  Quiet the SurfaceFlingerClient dequeueBuffer error.
2011-01-28 14:15:44 -08:00
Jamie Gennis
155c93ad47 Merge "Quiet the SurfaceFlingerClient dequeueBuffer error." into honeycomb 2011-01-28 14:12:57 -08:00
Jamie Gennis
749172269a Quiet the SurfaceFlingerClient dequeueBuffer error.
This is a temporary WAR for the case where dequeueBuffer is called when
all the buffers owned by a SurfaceTexture are not available - either
they're the current texture buffer or the next one.  Currently, an error
is returned in that case, and this change just prevents that error from
being logged.  In the future this will be fixed to not return an error
in that case.

Bug: 3356050
Change-Id: Ic6cc304881a63ce134cfd0bcb4265e3e3fa94b6a
2011-01-28 12:08:18 -08:00
Dianne Hackborn
311559851f am 256a09b2: Merge "Fix issue #3392073: At times soft keyboard comes up in..." into honeycomb
* commit '256a09b2fa5cc06775818428de771c7957403452':
  Fix issue #3392073: At times soft keyboard comes up in...
2011-01-27 22:50:56 -08:00
Dianne Hackborn
11e0746577 Fix issue #3392073: At times soft keyboard comes up in...
...gallery while attaching picture to gmail message

In various places we could block switching the IME target incorrectly.

Change-Id: I7e647fb35f4ea6f2e39eb7efd911420ea9ee64fa
2011-01-27 21:56:33 -08:00
Mathias Agopian
830423f797 am 72abf01a: Merge "Fix the ISurfaceComposer onTransact switch." into gingerbread
* commit '72abf01a8b6958ac1f86d36302a8462c4f51fd9d':
  Fix the ISurfaceComposer onTransact switch.
2011-01-27 11:24:33 -08:00
Ritu Srivastava
5ee1a0c5ee fix failing thread object run
A previously exited Thread object refuses to run again, if the
thread-id of the caller, conincides with the thread-id it previously
used in the worker thread. Hence reset the previously used worker
thread-id to -1 when it exits.

 Signed-off-by: Ritu Srivastava <rsrivast@sta.samsung.com>

Change-Id: I873925c312a43ec8a16392b98cc959042ff6bfd2

Signed-off-by: Madan Ankapura <mankapur@sta.samsung.com>
2011-01-25 21:48:54 -08:00
Mathias Agopian
275e627ef6 am 239fd805: Merge "fix [3361121] hang in glClear() - device unresponsive, OTA fails (DO NOT MERGE)" into gingerbread
* commit '239fd805ef7c0e4116b0a89e20caaf287e91f017':
  fix [3361121] hang in glClear() - device unresponsive, OTA fails (DO NOT MERGE)
2011-01-25 14:46:40 -08:00
Mathias Agopian
c92ba8851e am 1955a5c9: Merge "partially fix [3306150] HTML5 video with H/W acceleration blackout (DO NOT MERGE)" into gingerbread
* commit '1955a5c9da421dc89bb1a1dd3d3193159192cde9':
  partially fix [3306150] HTML5 video with H/W acceleration blackout (DO NOT MERGE)
2011-01-25 14:46:35 -08:00
Mathias Agopian
59f71e7feb am d3fcd0a1: Merge "minor clean-up. SurfaceFlinger doesn\'t need libpixelflinger.so. (DO NOT MERGE)" into gingerbread
* commit 'd3fcd0a1c923498921107bb44fbc8b24582a170a':
  minor clean-up. SurfaceFlinger doesn't need libpixelflinger.so. (DO NOT MERGE)
2011-01-25 14:46:22 -08:00
Mathias Agopian
d1a99ec6b2 fix [3361121] hang in glClear() - device unresponsive, OTA fails (DO NOT MERGE)
Generally we never want to lock a buffer for write access if it is at
the "head" on the surfaceflinger side. The only exception (1) is when
the buffer is not currently in use AND there is at least one queued
buffer -- in which case, SurfaceFlinger will never use said buffer
anymore, because on the next composition around, it will be able to
retire the first queued buffer.

The logic above relies on SurfaceFlinger always retiring
and locking a buffer before composition -- unfortunately this
didn't happen during a screenshot.

This could leave us in a situation where a buffer is locked by the
application for write, and used by SurfaceFlinger for texturing,
causing a hang.

Here, we fix this issue by never assuming the exception (1), it was
intended as an optimization allowing ANativeWindow::lockBuffer() to
return sooner and was justified when most of SF composition was
done in software. The actual buffer locking is now ensured by
gralloc. We could have handled screenshots in a similar way to
a regular composition, but it could have caused glitches on screen,
essentially, taking a screenshot could cause to skip a frame.

now that we removed the notion of a "inUse" buffer in surfaceflinger
a lot of code can be simplified / removed.

noteworthy, the whole concept of "unlockClient" wrt. "compositionComplete"
is also gone.
2011-01-25 14:19:13 -08:00
Mathias Agopian
53a67e1663 partially fix [3306150] HTML5 video with H/W acceleration blackout (DO NOT MERGE)
We used to guarantee that a layer in SurfaceFlinger would never be
destroyed before all references (to its ISurface) on the client
side would be released. At some point, this guarantee got
relaxed to allow to free gralloc resources sooner. This last
change was incorrect, because:
- in implementations with reference-counting the gralloc resources
wouldn't be released anyways, until all the mapping were gone
- in implementations without ref counting, the client side
would most likely crash or do something bad
- it also caused the SharedBufferStack slot to be reallocated
to another surface, which could be problematic if the client
continued to use the surface after the window manager destroyed it.

So, we essentially reinstate the guarantee that layers won't be
destroyed until after all references to their ISurface are
released.

NOTE: This doesn't entirely fix 3306150 because there is another
problem there where the Browser continues to use a surface after it
has been destroyed.

also improve SurfaceFlinger 'dumpsys' log

list the purgatory, which shows windows that have been closed,
but for which the client still has references.
2011-01-25 14:19:13 -08:00
Mathias Agopian
a0c6b76173 minor clean-up. SurfaceFlinger doesn't need libpixelflinger.so. (DO NOT MERGE)
Change-Id: I1ddbbbec4fa5b2521ef3787bc28efe1bc90d0060
2011-01-25 14:18:15 -08:00
Jeff Brown
d1de37fdab am 265cf2e7: Merge "Fix getSwitchState."
* commit '265cf2e76bef9ee369a7d43d567a22a0c39355ef':
  Fix getSwitchState.
2011-01-22 21:32:58 -08:00
Mathias Agopian
747104ad43 am 4707dc73: am 72abf01a: Merge "Fix the ISurfaceComposer onTransact switch." into gingerbread
* commit '4707dc73e236b7055644401b73cd30164b7ad157':
  Fix the ISurfaceComposer onTransact switch.
2011-01-21 10:15:34 -08:00
Mathias Agopian
78efe9773e Merge "clean-up unneeded code" into honeycomb 2011-01-20 12:25:26 -08:00
Mathias Agopian
2bd1d95efe clean-up unneeded code
now that we removed the notion of a "inUse" buffer in surfaceflinger
a lot of code can be simplified / removed.

noteworthy, the whole concept of "unlockClient" wrt. "compositionComplete"
is also gone.

Change-Id: I210413d4c8c0998dae05c8620ebfc895d3e6233d
2011-01-20 12:10:11 -08:00
Jeff Brown
cb203b228b Fix getSwitchState.
InputReader::getSwitchState always returns AKEY_STATE_UNKNOWN
because SwitchInputMapper::getSources() returns 0 which cannot
match any source mask including AINPUT_SOURCE_ANY.  As a result
initial lid switch detection is broken.

This change adds a new source constant AINPUT_SOURCE_SWITCH
that indicates that the source has switches.

Change-Id: I5321ecf0ce84f1c2b4535f6c163d3f4dcf9b7a9b
2011-01-19 20:35:47 -08:00
Mathias Agopian
d5ea3db6a3 Use EGL_NATIVE_VISUAL_ID to select EGLConfig
EGLUtils::selectConfigForPixelFormat() now uses EGL_NATIVE_VISUAL_ID
to select a config with the proper format. this is more robust and
future proof.

Change-Id: I7245d904adab1e339f062b9b498ddd9324cfe7a4
2011-01-19 18:21:15 -08:00
Mathias Agopian
48b888aab9 improve SurfaceFlinger 'dumpsys' log
list the purgatory, which shows windows that have been closed,
but for which the client still has references.

Change-Id: I5168bb88cb328d5d77d71d0871deb9190f493126
2011-01-19 16:15:53 -08:00
Mathias Agopian
226b2432b1 am a0bafb47: Merge "Use EGL_NATIVE_VISUAL_ID to select EGLConfig" into gingerbread
* commit 'a0bafb471385767f7c9c91efe7fd828b069b2e97':
  Use EGL_NATIVE_VISUAL_ID to select EGLConfig
2011-01-19 11:33:36 -08:00
Mathias Agopian
af6bba52c9 Merge "Use EGL_NATIVE_VISUAL_ID to select EGLConfig" into gingerbread 2011-01-19 11:31:07 -08:00
Mathias Agopian
ed8a50c9c5 fix [3361121] hang in glClear() - device unresponsive, OTA fails
Generally we never want to lock a buffer for write access if it is at
the "head" on the surfaceflinger side. The only exception (1) is when
the buffer is not currently in use AND there is at least one queued
buffer -- in which case, SurfaceFlinger will never use said buffer
anymore, because on the next composition around, it will be able to
retire the first queued buffer.

The logic above relies on SurfaceFlinger always retiring
and locking a buffer before composition -- unfortunately this
didn't happen during a screenshot.

This could leave us in a situation where a buffer is locked by the
application for write, and used by SurfaceFlinger for texturing,
causing a hang.

Here, we fix this issue by never assuming the exception (1), it was
intended as an optimization allowing ANativeWindow::lockBuffer() to
return sooner and was justified when most of SF composition was
done in software. The actual buffer locking is now ensured by
gralloc. We could have handled screenshots in a similar way to
a regular composition, but it could have caused glitches on screen,
essentially, taking a screenshot could cause to skip a frame.

Change-Id: I1f226b1ebdf6918439b687c2723955d55b842c55
2011-01-18 15:51:30 -08:00
Jeff Brown
98e88a7d7a am 41395459: Merge "Filter virtual keys after touches. (DO NOT MERGE)" into gingerbread
* commit '41395459e676cf9ab4059e08446656f145662c2d':
  Filter virtual keys after touches.  (DO NOT MERGE)
2011-01-18 14:38:27 -08:00
Jeff Brown
8fb7545953 Merge "Filter virtual keys after touches. (DO NOT MERGE)" into gingerbread 2011-01-18 14:31:31 -08:00
Mathias Agopian
7ad57ff34f am 72abf01a: Merge "Fix the ISurfaceComposer onTransact switch." into gingerbread
* commit '72abf01a8b6958ac1f86d36302a8462c4f51fd9d':
  Fix the ISurfaceComposer onTransact switch.
2011-01-18 11:26:51 -08:00
Mathias Agopian
788ce5d908 Use EGL_NATIVE_VISUAL_ID to select EGLConfig
EGLUtils::selectConfigForPixelFormat() now uses EGL_NATIVE_VISUAL_ID
to select a config with the proper format. this is more robust and
future proof.

Change-Id: Ib85e0974160945d838956b50a3cac4de78618957
2011-01-16 17:57:20 -08:00
Jamie Gennis
238bec1ceb Fix the ISurfaceComposer onTransact switch.
Two of the cases in the ISurfaceComposer onTransact switch statement
were missing 'break' statements at the end, and would fall through to
the next case block. This change adds those break statements.

Change-Id: I6dcc84263d3ea03d94612c667103283846b3dee1
2011-01-16 17:34:07 -08:00
Jamie Gennis
c4d4aeab52 Implement SurfaceTexture frame-available callback.
This change implements the onFrameAvailable callback for the
SurfaceTexture java class.  It includes the C++ SurfaceTexture code as
well as the JNI and Java code to enable the callback.

Change-Id: Ifd8b8e7ad46ee70cba6da1c2e96dab8045d1ea30
2011-01-16 17:28:39 -08:00
Jamie Gennis
a214c64d7f Fix SurfaceTexture transform matrix.
Change-Id: I31520c547cafa5cc85cd0f73883ab3a9ff4648e2
2011-01-16 16:35:01 -08:00
Jamie Gennis
73e8b9e524 Compare GraphicBuffers using handles.
This change fixes a bug in SurfaceTextureClient where GraphicBuffers
were being compared using pointer comparison rather than handles.

Change-Id: Ib8989af94be32d4efd86e020a732f5143088a863
2011-01-15 17:00:06 -08:00
Mathias Agopian
b353fd9746 Merge "Fix error reporting in Surface::cancelBuffer()" into honeycomb 2011-01-14 19:27:32 -08:00
Jeff Brown
9346643577 Make getFallbackAction return false when there is none.
Change-Id: Id17c0f7269e4a228f4e5f11c54614fec508222a2
2011-01-14 17:54:38 -08:00
Mathias Agopian
a317f1ba7f Fix error reporting in Surface::cancelBuffer()
when we validate the surface there, most errors are in fact allowed
because it is legal to cancel a buffer after a surface has been
destroyed (for instance). in that case make sure to not log
error messages as they are very confusing.

Change-Id: Iecdfbaf6d9ee5da54d56cd7ea7a0d430c30934b0
2011-01-14 11:04:34 -08:00
Jamie Gennis
9a78c90cd4 Fix remote GraphicBuffer allocation in SurfaceFlinger.
This change fixes a horrible hack that I did to allow application
processes to create GraphicBuffer objects by making a binder call to
SurfaceFlinger.  This change introduces a new binder interface
specifically for doing this, and does it in such a way that
SurfaceFlinger will maintain a reference to the buffers until the app is
done with them.

Change-Id: Icb240397c6c206d7f69124c1497a829f051cb49b
2011-01-13 12:19:04 -08:00
Jamie Gennis
e5366c567a Add logging to SurfaceTextureClient.
Change-Id: I984c3b9c88f8af613a50138188ff1b770e2de6b4
2011-01-13 12:19:03 -08:00
Jamie Gennis
0579d57502 Merge "Fix a bug in SurfaceTexture::dequeueBuffer." into honeycomb 2011-01-13 12:13:56 -08:00
Eric Laurent
15025254eb Fix issue 3302649.
The cause of the problem is that AudioTrack::start() can fail if it is called from a newly created
thread that has the same ID as the AudioTrack callback thread that has just been stopped and not yet exited.
This is possible as the thread ID used by the Thread class is not the TID.

The fix consists in clearing the thread ID before exiting the thread loop.

Change-Id: I8b5f6a63feeaeb9a01267380e85f6f1456e7aa01
2011-01-12 18:28:25 -08:00
Eric Laurent
2ad398bba5 am bec4abaa: Merge "Fix issue 3302649." into gingerbread
* commit 'bec4abaa12bf6759f354b54119c5524cf9339e7b':
  Fix issue 3302649.
2011-01-12 13:52:42 -08:00
Jamie Gennis
235c424c9a Fix a bug in SurfaceTexture::dequeueBuffer.
This change fixes a bug that allowed the most recently queued buffer to
be returned by dequeueBuffer.  At the next updateTexImage call, the
dequeued buffer would be set as the contents of the texture even though
the client could be writing to it.

Change-Id: I53dc14eed13262475627d5551337df57fd78fe00
2011-01-12 11:28:38 -08:00