After debug into SurfaceFringer, I found the following code can work to set overlay position:
sp<SurfaceComposerClient> client = new SurfaceComposerClient(); // create pushbuffer surface sp<Surface> surface = client->createSurface(getpid(), 0, 320, 240, PIXEL_FORMAT_UNKNOWN, ISurfaceComposer::ePushBuffers); // get to the isurface sp<ISurface> isurface = Test::getISurface(surface); printf("isurface = %p\n", isurface.get()); // now request an overlay sp<OverlayRef> ref = isurface->createOverlay(320, 240, PIXEL_FORMAT_RGB_565); sp<Overlay> overlay = new Overlay(ref); /* Code to set position */ client->openTransaction(); surface->setPosition(30, 30); client->closeTransaction(); /* * 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); --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "android-framework" group. To post to this group, send email to android-framework@googlegroups.com To unsubscribe from this group, send email to android-framework+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/android-framework?hl=en -~----------~----~----~----~------~----~------~--~---