summaryrefslogtreecommitdiffstats
path: root/libs/surfaceflinger_client/SharedBufferStack.cpp
Commit message (Collapse)AuthorAgeFilesLines
* allow re-targetting of surfacesMathias Agopian2010-06-081-0/+4
| | | | | | | | | 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
* split surface management from surface's buffers managementMathias Agopian2010-06-041-3/+6
| | | | Change-Id: If3c5655d1231f8f0c49ba68f972b1b20c93b3f87
* more clean-up in preparation of bigger changesMathias Agopian2010-05-281-4/+6
| | | | | | | the most important change here is the renaming of ISurfaceFlingerClient to ISurfaceComposerClient Change-Id: I94e18b0417f50e06f21377446639c61f65f959b3
* fix [2712278] The preview buffer left some black borders in left and bottom ↵Mathias Agopian2010-05-251-6/+0
| | | | | | | | edges we were incorrectly flagging push_buffer surfaces as invalid Change-Id: I4dfd4ffbbe8a71f7e23e835db8d71966416c29bb
* added the notion of fixed-size buffersMathias Agopian2010-05-241-2/+14
| | | | | | | | | 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
* fix a bug when reallocating a window's buffers is neededMathias Agopian2010-05-241-2/+2
| | | | | | | we need to mark the buffers that need to be reallocated, NOT the buffer's indices. Change-Id: I809e2e1b03b56c4d2ab983c25523dae99aa1da74
* added native_window_set_buffer_count()Mathias Agopian2010-05-211-0/+3
| | | | | | | this method can be used to change the number of buffers associated to a native window. the default is two. Change-Id: I608b959e6b29d77f95edb23c31dc9b099a758f2f
* fix the threading issue for setBuffercount()Mathias Agopian2010-05-201-40/+55
| | | | | | | | 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"
* fix a bug where queueBuffer() would fail after the SharedbufferStack is resizedMathias Agopian2010-05-171-2/+17
| | | | Change-Id: I12bf13a62018ce1349bab7be0b0cad7fad13fee8
* fix some bugs in SharedBufferStack::resizeMathias Agopian2010-05-171-2/+4
| | | | | | added buffers should now be labeled properly. Change-Id: I28aa753fbe89ab89134e7753575319478934c7fa
* SharedBufferStack now can grow up to 16 buffers.Mathias Agopian2010-05-121-6/+85
| | | | | | there is a new resize() api, which currently only allows growing. Change-Id: Ia37b81b73be466d2491ffed7f3a23cd8e113c6fe
* Refactor some code in surfaceflinger in preparation of upcoming changesMathias Agopian2010-05-121-0/+1
| | | | | | | | | | | | 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
* make sure the server-side validates pointers/indices visible on the client sideMathias Agopian2010-04-301-1/+15
| | | | Change-Id: I604f58d3fcd2d09ec7998123c627401081345cd6
* Add support for enqueuing buffers in arbitrary orderMathias Agopian2010-04-281-21/+39
| | | | | | Also added a very simple SharedBufferStack unit test. Change-Id: I253dbbe98a53c966b78d22d4d6dd59f8aefc8c40
* cleanup. waitForCondition() now uses polymorphsim instead of templtesMathias Agopian2010-04-281-3/+39
| | | | | | | | | 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
* fix a race condition in undoDequeue(), where 'tail' could be computed ↵Mathias Agopian2010-04-281-24/+11
| | | | | | | | | | | | | | | 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
* better fix for [2420565] Surface.lockCanvas() updates the dirty region too oftenMathias Agopian2010-04-211-2/+6
| | | | Change-Id: I83438b40effd21538f1c74396dc665254b9d5ab6
* added setCrop() to android_native_window_tMathias Agopian2010-04-201-16/+39
| | | | | | | hooked up the new method up to Surface.cpp the actual crop is not implemented in SF yet Change-Id: Ic6e313c98fd880f127a051a0ccc71808bd689751
* add support for up to 16 buffers per surfaceMathias Agopian2010-04-201-8/+34
| | | | | | | also increase the dirtyregion size from 1 to 6 rectangles. Overall we now need 27KiB process instead of 4KiB Change-Id: Iebda5565015158f49d9ca8dbcf55e6ad04855be3
* libutils Condition are now PRIVATE by defaultMathias Agopian2010-03-191-1/+1
| | | | | | | | | | | 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
* Fix a small bug where we could compute SharedBufferStack's tail incorrectly.Mathias Agopian2010-03-081-2/+5
| | | | | | Also add "tail" to the debug dump(). Change-Id: I04b1ea375dfc9ddcc22f0c6b6cd01300e507572e
* split libsurfaceflinger_client and libcamera_client out of libuiMathias Agopian2010-02-111-0/+424