#include #include #include #include #include #include #include #include using namespace android; namespace android { class Test { public: static const sp& getISurface(const sp& s) { return s->getISurface(); } }; }; int main(int argc, char** argv) { // set up the thread-pool sp proc(ProcessState::self()); ProcessState::self()->startThreadPool(); // create a client to surfaceflinger sp client = new SurfaceComposerClient(); // create pushbuffer surface sp surface = client->createSurface(getpid(), 0, 320, 240, PIXEL_FORMAT_UNKNOWN, ISurfaceComposer::ePushBuffers); // get to the isurface sp isurface = Test::getISurface(surface); printf("isurface = %p\n", isurface.get()); // now request an overlay sp ref = isurface->createOverlay(320, 240, PIXEL_FORMAT_RGB_565); sp overlay = new Overlay(ref); /* * here we can use the overlay API */ overlay_buffer_t buffer; overlay->dequeueBuffer(&buffer); printf("buffer = %p\n", buffer); void* address = overlay->getBufferAddress(buffer); printf("address = %p\n", address); overlay->queueBuffer(buffer); return 0; }