10795272aa226f4e965968a03daddc53ce30b7cdaMathias Agopian#include <binder/IPCThreadState.h> 20795272aa226f4e965968a03daddc53ce30b7cdaMathias Agopian#include <binder/ProcessState.h> 30795272aa226f4e965968a03daddc53ce30b7cdaMathias Agopian#include <binder/IServiceManager.h> 49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#include <utils/Log.h> 59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#include <ui/Overlay.h> 7000479f9e325b4e426a67033abd92d47da412725Mathias Agopian 8000479f9e325b4e426a67033abd92d47da412725Mathias Agopian#include <surfaceflinger/Surface.h> 9000479f9e325b4e426a67033abd92d47da412725Mathias Agopian#include <surfaceflinger/ISurface.h> 10000479f9e325b4e426a67033abd92d47da412725Mathias Agopian#include <surfaceflinger/SurfaceComposerClient.h> 119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectusing namespace android; 139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectnamespace android { 159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectclass Test { 169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic: 179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project static const sp<ISurface>& getISurface(const sp<Surface>& s) { 189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return s->getISurface(); 199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}; 219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}; 229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectint main(int argc, char** argv) 249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // set up the thread-pool 269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sp<ProcessState> proc(ProcessState::self()); 279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ProcessState::self()->startThreadPool(); 289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // create a client to surfaceflinger 309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sp<SurfaceComposerClient> client = new SurfaceComposerClient(); 319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // create pushbuffer surface 339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sp<Surface> surface = client->createSurface(getpid(), 0, 320, 240, 349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project PIXEL_FORMAT_UNKNOWN, ISurfaceComposer::ePushBuffers); 359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // get to the isurface 379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sp<ISurface> isurface = Test::getISurface(surface); 389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project printf("isurface = %p\n", isurface.get()); 399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // now request an overlay 419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sp<OverlayRef> ref = isurface->createOverlay(320, 240, PIXEL_FORMAT_RGB_565); 429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sp<Overlay> overlay = new Overlay(ref); 439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /* 469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * here we can use the overlay API 479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project overlay_buffer_t buffer; 509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project overlay->dequeueBuffer(&buffer); 519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project printf("buffer = %p\n", buffer); 529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void* address = overlay->getBufferAddress(buffer); 549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project printf("address = %p\n", address); 559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project overlay->queueBuffer(buffer); 579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return 0; 599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 60