hi,
i'm testing my overlay library, implemented to support multiple overlay instances.
so, i'm implementing the class "Test", defined in android (/surfaceflinger/tests/overlays/overlays.cpp).
///////////////////////////////////CODE Begins////////////////////////
// create a client to surfaceflinger
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 ENDS///////////////////////
till the "ISurface" creation, everything is fine.
but when i try to create the overlay, as
sp<OverlayRef> ovlyRef = mSurface->createOverlay(320, 240, PIXEL_FORMAT_RGB_565)
i'm getting the NULL ovlyRef.
further debugging revealed that, the failure is that i'm getting owner = 0.
hence no Overlay is getting created.
sp<OverlayRef> LayerBuffer::SurfaceLayerBuffer::createOverlay(
uint32_t w, uint32_t h, int32_t format) {
sp<OverlayRef> result = NULL;
sp<LayerBuffer> owner(getOwner());
if (owner != 0)
result = owner->createOverlay(w, h, format);
else
LOGE("Sorry No OWNER");
return result;
}
so my doubt is:
(1) Can i create the Surface directly via SufaceComposer?
(2) or should i go through the window manager / jni etc to create the surface.
I'm not an application developer, my intention is to test my overlay library with this test case.
Please suggest me what could have gone wrong.
Thanks,
sunita.