| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
| |
Change-Id: Ib182455fad5e5b3f3f59b3ff24f59dcd7f638292
|
|
|
|
|
|
|
|
|
|
|
|
| |
This change adds a process-global cache of previously deserialized Surface
objects so that if a Surface object wrapping the same ISurface gets received
again the same Surface can be used. This is important because the 'tail'
pointer in the SharedBufferClient is stored only on the client side, and needs
to be the same for all the Surface objects wrapping an ISurface instance. This
solves the problem by making there only be one Surface object wrapping an
ISurface per process.
Change-Id: I4bf0b8787885c56277622fca053022d2bb638902
|
|
|
|
|
|
|
| |
Not yet hooked up to anything in the NDK, but requires renaming
the existing android_native_window_t type everywhere.
Change-Id: Iffee6ea39c93b8b34e20fb69e4d2c7c837e5ea2e
|
|
|
|
|
|
|
|
|
| |
Surfaces can now be parcelized and sent to remote
processes. When a surface crosses a process
boundary, it looses its connection with the
current process and gets attached to the new one.
Change-Id: I39c7b055bcd3ea1162ef2718d3d4b866bf7c81c0
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
this is called for each relayout() and used to create a full Surface (cpp)
which in turn did some heavy work (including an IPC with surfaceflinger),
most of the time to destroy it immediatelly when the returned surface
(the one in the parcel) was the same.
we now more intelligentely read from the parcel and construct the new
object only if needed.
Change-Id: Idfd40d9ac96ffc6d4ae5fd99bcc0773e131e2267
|
|
|
|
| |
Change-Id: If3c5655d1231f8f0c49ba68f972b1b20c93b3f87
|
|
|
|
|
|
|
| |
the most important change here is the renaming of
ISurfaceFlingerClient to ISurfaceComposerClient
Change-Id: I94e18b0417f50e06f21377446639c61f65f959b3
|
|
|
|
|
|
|
|
|
|
|
|
| |
SurfaceComposerClient now only exist on the WindowManager side,
the client side uses the new SurfaceClient class, which only
exposes what a client needs.
also instead of keeping mappings from IBinder to SurfaceComposerClients
we have a SurfaceClient per Surface (referring to the same IBinder), this
is made possible by the fact that SurfaceClient is very light.
Change-Id: I6a1f7015424f07871632a25ed6a502c55abfcfa6
|
| |
|
|
|
|
|
|
|
|
| |
edges
we were incorrectly flagging push_buffer surfaces as invalid
Change-Id: I4dfd4ffbbe8a71f7e23e835db8d71966416c29bb
|
|
|
|
|
|
|
|
|
| |
the new native_window_set_buffers_geometry allows
to specify a size and format for all buffers to be
dequeued. the buffer will be scalled to the window's
size.
Change-Id: I2c378b85c88d29cdd827a5f319d5c704d79ba381
|
|
|
|
|
|
|
| |
we need to mark the buffers that need to be reallocated,
NOT the buffer's indices.
Change-Id: I809e2e1b03b56c4d2ab983c25523dae99aa1da74
|
|
|
|
|
|
|
| |
this method can be used to change the number of buffers
associated to a native window. the default is two.
Change-Id: I608b959e6b29d77f95edb23c31dc9b099a758f2f
|
|
|
|
|
|
|
|
| |
this change introduces R/W locks in the right places.
on the server-side, it guarantees that setBufferCount()
is synchronized with "retire" and "resize".
on the client-side, it guarantees that setBufferCount()
is synchronized with "dequeue", "lockbuffer" and "queue"
|
|
|
|
| |
Change-Id: I1c46c07aa1483aee4d4ebd8745638a2c462cc1b3
|
|
|
|
| |
Change-Id: I32683bfe0916918757280db89113595867acd5a7
|
|
|
|
| |
Change-Id: I12bf13a62018ce1349bab7be0b0cad7fad13fee8
|
|
|
|
|
|
| |
added buffers should now be labeled properly.
Change-Id: I28aa753fbe89ab89134e7753575319478934c7fa
|
|\
| |
| |
| |
| |
| |
| | |
Merge commit '900b6157f5dee2ed7b2c73cf320b2baf293230ff' into kraken
* commit '900b6157f5dee2ed7b2c73cf320b2baf293230ff':
Only hold a weak pointer on SurfaceComposerClients
|
| |
| |
| |
| | |
Change-Id: I0249c6d796b35af9ba08cbccd463a1f5cf779ecd
|
| |
| |
| |
| |
| |
| | |
there is a new resize() api, which currently only allows growing.
Change-Id: Ia37b81b73be466d2491ffed7f3a23cd8e113c6fe
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
the new TextureMagager class now handle texture creation and upload
as well as EGL image creation and binding to GraphicBuffers. This is
used indirectly by Layer and directly by LayerBuffer
the new BufferManager class handles the set of buffers used for a
Layer (Surface), it abstracts how many buffer there is as well as
the use of EGLimage vs. regular texture ops (glTexImage2D).
Change-Id: I2da1ddcf27758e6731400f6cc4e20bef35c0a39a
|
| |
| |
| |
| | |
Change-Id: I604f58d3fcd2d09ec7998123c627401081345cd6
|
| |
| |
| |
| |
| |
| | |
Also added a very simple SharedBufferStack unit test.
Change-Id: I253dbbe98a53c966b78d22d4d6dd59f8aefc8c40
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
the reason for the above change is that waitForCondition() had become
large over time, mainly to handle error cases, using inlines to
evaluate the condition doesn't buys us much anymore while it increases
code size.
Change-Id: I2595d850832628954b900ab8bb1796c863447bc7
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
incorrectly.
in the undoDequeue() case, 'tail' was recalculated from 'available' and 'head'
however there was a race between this and retireAndLock(), which could cause
'tail' to be recalculated wrongly.
the interesting thing though is that retireAndLock() shouldn't have any impact
on the value of 'tail', which is client-side only attribute.
we fix the race by saving the value of 'tail' before dequeue() and restore it
in the case of undoDequeue(), since we know it doesn't depend on retireAndLock().
Change-Id: I4bcc4d16b6bc4dd93717ee739c603040b18295a0
|
| |
| |
| |
| | |
Change-Id: I83438b40effd21538f1c74396dc665254b9d5ab6
|
| |
| |
| |
| |
| |
| |
| | |
hooked up the new method up to Surface.cpp
the actual crop is not implemented in SF yet
Change-Id: Ic6e313c98fd880f127a051a0ccc71808bd689751
|
| |
| |
| |
| |
| |
| |
| | |
also increase the dirtyregion size from 1 to 6 rectangles.
Overall we now need 27KiB process instead of 4KiB
Change-Id: Iebda5565015158f49d9ca8dbcf55e6ad04855be3
|
|/
|
|
|
|
| |
There was a bug where we were we could be reallocating buffers for no reason.
Change-Id: Ieb8a81a289da9339ab7faf987cd3a73428943c1a
|
|
|
|
|
|
|
|
|
|
|
| |
Condition must be initialized with SHARED for the old behavior, where
they can be used accross processes.
Updated the two places android that require SHARED conditions.
PRIVATE conditions (and mutexes) use more efficient syscalls.
Change-Id: I9a281a4b88206e92ac559c66554e886b9c62db3a
|
|
|
|
|
|
|
|
| |
the framebuffer implementation doesn't do anything special with this
but the surfaceflinger implementation makes sure the surface is not used
by two APIs simultaneously.
Change-Id: Id4ca8ef7093d68846abc2ac814327cc40a64b66b
|
|
|
|
|
|
| |
Also add "tail" to the debug dump().
Change-Id: I04b1ea375dfc9ddcc22f0c6b6cd01300e507572e
|
|
|
|
|
| |
Updated the window manager to use this new facility.
Surfaces name are now printed by "dumpsys".
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|