diff options
| author | Jamie Gennis <jgennis@google.com> | 2011-01-12 18:30:40 -0800 |
|---|---|---|
| committer | Jamie Gennis <jgennis@google.com> | 2011-01-13 12:19:04 -0800 |
| commit | f7acf162f8d682c6ebc9af41ca76795b79509193 (patch) | |
| tree | b2f5246744f5a8c15f841f6a45da4a53679eff67 /include/surfaceflinger/ISurfaceComposer.h | |
| parent | e8d0e8a77690eca02f15b0d5e628be7cad5d0133 (diff) | |
| download | frameworks_base-f7acf162f8d682c6ebc9af41ca76795b79509193.zip frameworks_base-f7acf162f8d682c6ebc9af41ca76795b79509193.tar.gz frameworks_base-f7acf162f8d682c6ebc9af41ca76795b79509193.tar.bz2 | |
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
Diffstat (limited to 'include/surfaceflinger/ISurfaceComposer.h')
| -rw-r--r-- | include/surfaceflinger/ISurfaceComposer.h | 14 |
1 files changed, 6 insertions, 8 deletions
diff --git a/include/surfaceflinger/ISurfaceComposer.h b/include/surfaceflinger/ISurfaceComposer.h index 1bab7d7..56ed3a4 100644 --- a/include/surfaceflinger/ISurfaceComposer.h +++ b/include/surfaceflinger/ISurfaceComposer.h @@ -28,6 +28,7 @@ #include <ui/PixelFormat.h> #include <surfaceflinger/ISurfaceComposerClient.h> +#include <surfaceflinger/IGraphicBufferAlloc.h> namespace android { // ---------------------------------------------------------------------------- @@ -96,6 +97,10 @@ public: */ virtual sp<ISurfaceComposerClient> createClientConnection() = 0; + /* create a graphic buffer allocator + */ + virtual sp<IGraphicBufferAlloc> createGraphicBufferAlloc() = 0; + /* retrieve the control block */ virtual sp<IMemoryHeap> getCblk() const = 0; @@ -131,13 +136,6 @@ public: * This is an ASYNCHRONOUS call. */ virtual void signal() const = 0; - - /* Create a new GraphicBuffer for the client to use. SurfaceFlinger will - * not maintain a reference to the GraphicBuffer, so the underlying native - * handle will be freed once the client references are released. - */ - virtual sp<GraphicBuffer> createGraphicBuffer(uint32_t w, uint32_t h, - PixelFormat format, uint32_t usage) const = 0; }; // ---------------------------------------------------------------------------- @@ -151,7 +149,7 @@ public: BOOT_FINISHED = IBinder::FIRST_CALL_TRANSACTION, CREATE_CONNECTION, CREATE_CLIENT_CONNECTION, - CREATE_GRAPHIC_BUFFER, + CREATE_GRAPHIC_BUFFER_ALLOC, GET_CBLK, OPEN_GLOBAL_TRANSACTION, CLOSE_GLOBAL_TRANSACTION, |
