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