blob: b4de4b459c38a023de97aa5ec381d084d30d28af [file] [log] [blame]
Mathias Agopian208cb072010-07-27 20:11:35 -07001#include <cutils/memory.h>
2
3#include <utils/Log.h>
4
5#include <binder/IPCThreadState.h>
6#include <binder/ProcessState.h>
7#include <binder/IServiceManager.h>
8
9#include <surfaceflinger/Surface.h>
10#include <surfaceflinger/ISurface.h>
11#include <surfaceflinger/SurfaceComposerClient.h>
12
13#include <ui/Overlay.h>
14
15using namespace android;
16
17int main(int argc, char** argv)
18{
19 // set up the thread-pool
20 sp<ProcessState> proc(ProcessState::self());
21 ProcessState::self()->startThreadPool();
22
23 // create a client to surfaceflinger
24 sp<SurfaceComposerClient> client = new SurfaceComposerClient();
25
26 // create pushbuffer surface
27 sp<SurfaceControl> surfaceControl = client->createSurface(
28 getpid(), 0, 160, 240, PIXEL_FORMAT_RGB_565);
29 client->openTransaction();
30 surfaceControl->setLayer(100000);
31 client->closeTransaction();
32
33 // pretend it went cross-process
34 Parcel parcel;
35 SurfaceControl::writeSurfaceToParcel(surfaceControl, &parcel);
36 parcel.setDataPosition(0);
37 sp<Surface> surface = Surface::readFromParcel(parcel);
38 ANativeWindow* window = surface.get();
39
40 printf("window=%p\n", window);
41
42 int err = native_window_set_buffer_count(window, 8);
43 android_native_buffer_t* buffer;
44
45 for (int i=0 ; i<8 ; i++) {
46 window->dequeueBuffer(window, &buffer);
47 printf("buffer %d: %p\n", i, buffer);
48 }
49
50 printf("test complete. CTRL+C to finish.\n");
51
52 IPCThreadState::self()->joinThreadPool();
53 return 0;
54}