diff options
author | Jamie Gennis <jgennis@google.com> | 2011-01-13 12:57:21 -0800 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2011-01-13 12:57:21 -0800 |
commit | 3defffe06e6989506698ecdce1be3149a33774c1 (patch) | |
tree | 34bff5e8ee751dd2ceba4d399bce65b32a0c77cd /libs/surfaceflinger_client/ISurfaceComposer.cpp | |
parent | 57ce3909fc05b06585bf11b14a704340a0763401 (diff) | |
parent | f7acf162f8d682c6ebc9af41ca76795b79509193 (diff) | |
download | frameworks_base-3defffe06e6989506698ecdce1be3149a33774c1.zip frameworks_base-3defffe06e6989506698ecdce1be3149a33774c1.tar.gz frameworks_base-3defffe06e6989506698ecdce1be3149a33774c1.tar.bz2 |
Merge "Fix remote GraphicBuffer allocation in SurfaceFlinger." into honeycomb
Diffstat (limited to 'libs/surfaceflinger_client/ISurfaceComposer.cpp')
-rw-r--r-- | libs/surfaceflinger_client/ISurfaceComposer.cpp | 46 |
1 files changed, 14 insertions, 32 deletions
diff --git a/libs/surfaceflinger_client/ISurfaceComposer.cpp b/libs/surfaceflinger_client/ISurfaceComposer.cpp index a42b49d..2216824 100644 --- a/libs/surfaceflinger_client/ISurfaceComposer.cpp +++ b/libs/surfaceflinger_client/ISurfaceComposer.cpp @@ -26,7 +26,6 @@ #include <binder/IServiceManager.h> #include <ui/DisplayInfo.h> -#include <ui/GraphicBuffer.h> #include <surfaceflinger/ISurfaceComposer.h> @@ -65,6 +64,15 @@ public: return interface_cast<ISurfaceComposerClient>(reply.readStrongBinder()); } + virtual sp<IGraphicBufferAlloc> createGraphicBufferAlloc() + { + uint32_t n; + Parcel data, reply; + data.writeInterfaceToken(ISurfaceComposer::getInterfaceDescriptor()); + remote()->transact(BnSurfaceComposer::CREATE_GRAPHIC_BUFFER_ALLOC, data, &reply); + return interface_cast<IGraphicBufferAlloc>(reply.readStrongBinder()); + } + virtual sp<IMemoryHeap> getCblk() const { Parcel data, reply; @@ -170,25 +178,6 @@ public: data.writeInterfaceToken(ISurfaceComposer::getInterfaceDescriptor()); remote()->transact(BnSurfaceComposer::SIGNAL, data, &reply, IBinder::FLAG_ONEWAY); } - - virtual sp<GraphicBuffer> createGraphicBuffer(uint32_t w, uint32_t h, - PixelFormat format, uint32_t usage) const { - Parcel data, reply; - data.writeInterfaceToken(ISurfaceComposer::getInterfaceDescriptor()); - data.writeInt32(w); - data.writeInt32(h); - data.writeInt32(format); - data.writeInt32(usage); - remote()->transact(BnSurfaceComposer::CREATE_GRAPHIC_BUFFER, data, - &reply); - sp<GraphicBuffer> graphicBuffer; - bool nonNull = (bool)reply.readInt32(); - if (nonNull) { - graphicBuffer = new GraphicBuffer(); - reply.read(*graphicBuffer); - } - return graphicBuffer; - } }; IMPLEMENT_META_INTERFACE(SurfaceComposer, "android.ui.ISurfaceComposer"); @@ -209,6 +198,11 @@ status_t BnSurfaceComposer::onTransact( sp<IBinder> b = createClientConnection()->asBinder(); reply->writeStrongBinder(b); } break; + case CREATE_GRAPHIC_BUFFER_ALLOC: { + CHECK_INTERFACE(ISurfaceComposer, data, reply); + sp<IBinder> b = createGraphicBufferAlloc()->asBinder(); + reply->writeStrongBinder(b); + } break; case OPEN_GLOBAL_TRANSACTION: { CHECK_INTERFACE(ISurfaceComposer, data, reply); openGlobalTransaction(); @@ -267,18 +261,6 @@ status_t BnSurfaceComposer::onTransact( reply->writeInt32(f); reply->writeInt32(res); } break; - case CREATE_GRAPHIC_BUFFER: { - CHECK_INTERFACE(ISurfaceComposer, data, reply); - uint32_t w = data.readInt32(); - uint32_t h = data.readInt32(); - PixelFormat format = data.readInt32(); - uint32_t usage = data.readInt32(); - sp<GraphicBuffer> result(createGraphicBuffer(w, h, format, usage)); - reply->writeInt32(result != 0); - if (result != 0) { - reply->write(*result); - } - } break; case TURN_ELECTRON_BEAM_OFF: { CHECK_INTERFACE(ISurfaceComposer, data, reply); int32_t mode = data.readInt32(); |