11473f46cbc82aa6f0ba744cc896a36923823d55bMathias Agopian#include <cutils/memory.h> 21473f46cbc82aa6f0ba744cc896a36923823d55bMathias Agopian 31473f46cbc82aa6f0ba744cc896a36923823d55bMathias Agopian#include <utils/Log.h> 41473f46cbc82aa6f0ba744cc896a36923823d55bMathias Agopian 5000479f9e325b4e426a67033abd92d47da412725Mathias Agopian#include <binder/IPCThreadState.h> 6000479f9e325b4e426a67033abd92d47da412725Mathias Agopian#include <binder/ProcessState.h> 7000479f9e325b4e426a67033abd92d47da412725Mathias Agopian#include <binder/IServiceManager.h> 8000479f9e325b4e426a67033abd92d47da412725Mathias Agopian 9000479f9e325b4e426a67033abd92d47da412725Mathias Agopian#include <surfaceflinger/Surface.h> 10000479f9e325b4e426a67033abd92d47da412725Mathias Agopian#include <surfaceflinger/ISurface.h> 11000479f9e325b4e426a67033abd92d47da412725Mathias Agopian#include <surfaceflinger/SurfaceComposerClient.h> 12000479f9e325b4e426a67033abd92d47da412725Mathias Agopian 131473f46cbc82aa6f0ba744cc896a36923823d55bMathias Agopian#include <ui/Overlay.h> 141473f46cbc82aa6f0ba744cc896a36923823d55bMathias Agopian 151473f46cbc82aa6f0ba744cc896a36923823d55bMathias Agopianusing namespace android; 161473f46cbc82aa6f0ba744cc896a36923823d55bMathias Agopian 171473f46cbc82aa6f0ba744cc896a36923823d55bMathias Agopiannamespace android { 181473f46cbc82aa6f0ba744cc896a36923823d55bMathias Agopianclass Test { 191473f46cbc82aa6f0ba744cc896a36923823d55bMathias Agopianpublic: 201473f46cbc82aa6f0ba744cc896a36923823d55bMathias Agopian static const sp<ISurface>& getISurface(const sp<Surface>& s) { 211473f46cbc82aa6f0ba744cc896a36923823d55bMathias Agopian return s->getISurface(); 221473f46cbc82aa6f0ba744cc896a36923823d55bMathias Agopian } 231473f46cbc82aa6f0ba744cc896a36923823d55bMathias Agopian}; 241473f46cbc82aa6f0ba744cc896a36923823d55bMathias Agopian}; 251473f46cbc82aa6f0ba744cc896a36923823d55bMathias Agopian 261473f46cbc82aa6f0ba744cc896a36923823d55bMathias Agopianint main(int argc, char** argv) 271473f46cbc82aa6f0ba744cc896a36923823d55bMathias Agopian{ 281473f46cbc82aa6f0ba744cc896a36923823d55bMathias Agopian // set up the thread-pool 291473f46cbc82aa6f0ba744cc896a36923823d55bMathias Agopian sp<ProcessState> proc(ProcessState::self()); 301473f46cbc82aa6f0ba744cc896a36923823d55bMathias Agopian ProcessState::self()->startThreadPool(); 311473f46cbc82aa6f0ba744cc896a36923823d55bMathias Agopian 321473f46cbc82aa6f0ba744cc896a36923823d55bMathias Agopian // create a client to surfaceflinger 331473f46cbc82aa6f0ba744cc896a36923823d55bMathias Agopian sp<SurfaceComposerClient> client = new SurfaceComposerClient(); 341473f46cbc82aa6f0ba744cc896a36923823d55bMathias Agopian 351473f46cbc82aa6f0ba744cc896a36923823d55bMathias Agopian // create pushbuffer surface 361473f46cbc82aa6f0ba744cc896a36923823d55bMathias Agopian sp<Surface> surface = client->createSurface(getpid(), 0, 160, 240, 371473f46cbc82aa6f0ba744cc896a36923823d55bMathias Agopian PIXEL_FORMAT_RGB_565); 381473f46cbc82aa6f0ba744cc896a36923823d55bMathias Agopian 391473f46cbc82aa6f0ba744cc896a36923823d55bMathias Agopian 401473f46cbc82aa6f0ba744cc896a36923823d55bMathias Agopian client->openTransaction(); 411473f46cbc82aa6f0ba744cc896a36923823d55bMathias Agopian surface->setLayer(100000); 421473f46cbc82aa6f0ba744cc896a36923823d55bMathias Agopian client->closeTransaction(); 431473f46cbc82aa6f0ba744cc896a36923823d55bMathias Agopian 441473f46cbc82aa6f0ba744cc896a36923823d55bMathias Agopian Surface::SurfaceInfo info; 451473f46cbc82aa6f0ba744cc896a36923823d55bMathias Agopian surface->lock(&info); 461473f46cbc82aa6f0ba744cc896a36923823d55bMathias Agopian ssize_t bpr = info.s * bytesPerPixel(info.format); 471473f46cbc82aa6f0ba744cc896a36923823d55bMathias Agopian android_memset16((uint16_t*)info.bits, 0xF800, bpr*info.h); 481473f46cbc82aa6f0ba744cc896a36923823d55bMathias Agopian surface->unlockAndPost(); 491473f46cbc82aa6f0ba744cc896a36923823d55bMathias Agopian 501473f46cbc82aa6f0ba744cc896a36923823d55bMathias Agopian surface->lock(&info); 511473f46cbc82aa6f0ba744cc896a36923823d55bMathias Agopian android_memset16((uint16_t*)info.bits, 0x07E0, bpr*info.h); 521473f46cbc82aa6f0ba744cc896a36923823d55bMathias Agopian surface->unlockAndPost(); 531473f46cbc82aa6f0ba744cc896a36923823d55bMathias Agopian 541473f46cbc82aa6f0ba744cc896a36923823d55bMathias Agopian client->openTransaction(); 551473f46cbc82aa6f0ba744cc896a36923823d55bMathias Agopian surface->setSize(320, 240); 561473f46cbc82aa6f0ba744cc896a36923823d55bMathias Agopian client->closeTransaction(); 571473f46cbc82aa6f0ba744cc896a36923823d55bMathias Agopian 581473f46cbc82aa6f0ba744cc896a36923823d55bMathias Agopian 591473f46cbc82aa6f0ba744cc896a36923823d55bMathias Agopian IPCThreadState::self()->joinThreadPool(); 601473f46cbc82aa6f0ba744cc896a36923823d55bMathias Agopian 611473f46cbc82aa6f0ba744cc896a36923823d55bMathias Agopian return 0; 621473f46cbc82aa6f0ba744cc896a36923823d55bMathias Agopian} 63