blob: 8c026b9c562cce4225e3b28338f661c53d350da8 [file] [log] [blame]
Steve Kondik55db0532017-06-12 11:27:18 -07001#ifndef VNCFLINGER_H
2#define VNCFLINGER_H
3
Steve Kondik55db0532017-06-12 11:27:18 -07004#include "VirtualDisplay.h"
5
6#include <ui/DisplayInfo.h>
7
8#include "rfb/rfb.h"
9
10#define VNC_PORT 5901
11
12namespace android {
13
Steve Kondik7225c7f2017-06-14 00:06:16 -070014class VNCFlinger {
Steve Kondik55db0532017-06-12 11:27:18 -070015public:
16 VNCFlinger(int argc, char **argv) :
17 mArgc(argc),
18 mArgv(argv),
19 mClientCount(0) {
20 }
21
Steve Kondik7225c7f2017-06-14 00:06:16 -070022 virtual ~VNCFlinger() {}
Steve Kondik55db0532017-06-12 11:27:18 -070023
24 virtual status_t start();
25 virtual status_t stop();
26
Steve Kondik7225c7f2017-06-14 00:06:16 -070027 virtual size_t addClient();
28 virtual size_t removeClient();
Steve Kondik55db0532017-06-12 11:27:18 -070029
Steve Kondikef4e8652017-06-14 15:07:54 -070030 virtual void markFrame(void* frame, size_t stride);
31
Steve Kondik55db0532017-06-12 11:27:18 -070032private:
Steve Kondik7225c7f2017-06-14 00:06:16 -070033
Steve Kondik55db0532017-06-12 11:27:18 -070034 virtual status_t setup_l();
35 virtual void release_l();
36
37 static ClientGoneHookPtr onClientGone(rfbClientPtr cl);
38 static enum rfbNewClientAction onNewClient(rfbClientPtr cl);
Steve Kondikef4e8652017-06-14 15:07:54 -070039 static void onFrameStart(rfbClientPtr cl);
40 static void onFrameDone(rfbClientPtr cl, int result);
Steve Kondik55db0532017-06-12 11:27:18 -070041 static void rfbLogger(const char *format, ...);
Steve Kondik7225c7f2017-06-14 00:06:16 -070042
43 Condition mCondition;
44
Steve Kondik55db0532017-06-12 11:27:18 -070045 rfbScreenInfoPtr mVNCScreen;
46 uint8_t *mVNCBuf;
47
48 uint32_t mWidth, mHeight;
49 bool mRotate;
50
51 sp<IBinder> mMainDpy;
52 DisplayInfo mMainDpyInfo;
53
54 Mutex mMutex;
Steve Kondikef4e8652017-06-14 15:07:54 -070055 static Mutex sUpdateMutex;
Steve Kondik55db0532017-06-12 11:27:18 -070056
57 sp<VirtualDisplay> mVirtualDisplay;
58
59 int mArgc;
60 char **mArgv;
61
62 size_t mClientCount;
63};
64
65};
66#endif