diff options
| author | 2009-11-12 18:45:53 -0800 | |
|---|---|---|
| committer | 2009-11-13 13:53:39 -0800 | |
| commit | 9db3d07b9620b4269ab33f78604a36327e536ce1 (patch) | |
| tree | 41e294f34b9695187af098cd42167489fb0c8fb0 /libs/ui/ISurface.cpp | |
| parent | 6c63ee4fc4acae4bbbbd2a49e0a68206221f0de0 (diff) | |
eclair snapshot
Diffstat (limited to 'libs/ui/ISurface.cpp')
| -rw-r--r-- | libs/ui/ISurface.cpp | 36 |
1 files changed, 28 insertions, 8 deletions
diff --git a/libs/ui/ISurface.cpp b/libs/ui/ISurface.cpp index d5e9f812a40b..4fb38ed98314 100644 --- a/libs/ui/ISurface.cpp +++ b/libs/ui/ISurface.cpp @@ -14,19 +14,25 @@ * limitations under the License. */ +#define LOG_TAG "ISurface" + #include <stdio.h> #include <stdint.h> #include <sys/types.h> -#include <utils/Parcel.h> -#include <utils/IMemory.h> +#include <binder/Parcel.h> +#include <binder/IMemory.h> #include <ui/ISurface.h> #include <ui/Overlay.h> +#include <ui/Surface.h> +#include <ui/GraphicBuffer.h> namespace android { +// ---------------------------------------------------------------------- + ISurface::BufferHeap::BufferHeap() : w(0), h(0), hor_stride(0), ver_stride(0), format(0), transform(0), flags(0) @@ -55,6 +61,8 @@ ISurface::BufferHeap::~BufferHeap() { } +// ---------------------------------------------------------------------- + class BpSurface : public BpInterface<ISurface> { public: @@ -63,6 +71,17 @@ public: { } + virtual sp<GraphicBuffer> requestBuffer(int bufferIdx, int usage) + { + Parcel data, reply; + data.writeInterfaceToken(ISurface::getInterfaceDescriptor()); + data.writeInt32(bufferIdx); + data.writeInt32(usage); + remote()->transact(REQUEST_BUFFER, data, &reply); + sp<GraphicBuffer> buffer = new GraphicBuffer(reply); + return buffer; + } + virtual status_t registerBuffers(const BufferHeap& buffers) { Parcel data, reply; @@ -112,16 +131,17 @@ IMPLEMENT_META_INTERFACE(Surface, "android.ui.ISurface"); // ---------------------------------------------------------------------- -#define CHECK_INTERFACE(interface, data, reply) \ - do { if (!data.enforceInterface(interface::getInterfaceDescriptor())) { \ - LOGW("Call incorrectly routed to " #interface); \ - return PERMISSION_DENIED; \ - } } while (0) - status_t BnSurface::onTransact( uint32_t code, const Parcel& data, Parcel* reply, uint32_t flags) { switch(code) { + case REQUEST_BUFFER: { + CHECK_INTERFACE(ISurface, data, reply); + int bufferIdx = data.readInt32(); + int usage = data.readInt32(); + sp<GraphicBuffer> buffer(requestBuffer(bufferIdx, usage)); + return GraphicBuffer::writeToParcel(reply, buffer.get()); + } case REGISTER_BUFFERS: { CHECK_INTERFACE(ISurface, data, reply); BufferHeap buffer; |