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
-~----------~----~----~----~------~----~------~--~---

Reply via email to