Rewrite server on top of TigerVNC
TigerVNC provides a much more robust server implementation vs.
libvncserver and yields higher performance and lower CPU
usage.
diff --git a/src/InputDevice.h b/src/InputDevice.h
index 1744478..be4367f 100644
--- a/src/InputDevice.h
+++ b/src/InputDevice.h
@@ -20,32 +20,33 @@
#include <utils/Errors.h>
#include <utils/Mutex.h>
-#include <utils/Singleton.h>
+#include <utils/RefBase.h>
#include <linux/uinput.h>
-#include <rfb/rfb.h>
+
#define UINPUT_DEVICE "/dev/uinput"
namespace android {
-class InputDevice : public Singleton<InputDevice> {
- friend class Singleton;
-
+class InputDevice : public RefBase {
public:
virtual status_t start(uint32_t width, uint32_t height);
+ virtual status_t start_async(uint32_t width, uint32_t height);
virtual status_t stop();
virtual status_t reconfigure(uint32_t width, uint32_t height);
- static void onKeyEvent(rfbBool down, rfbKeySym key, rfbClientPtr cl);
- static void onPointerEvent(int buttonMask, int x, int y, rfbClientPtr cl);
+ virtual void keyEvent(bool down, uint32_t key);
+ virtual void pointerEvent(int buttonMask, int x, int y);
InputDevice() : mFD(-1) {
}
virtual ~InputDevice() {
+ stop();
}
private:
+
status_t inject(uint16_t type, uint16_t code, int32_t value);
status_t injectSyn(uint16_t type, uint16_t code, int32_t value);
status_t movePointer(int32_t x, int32_t y);
@@ -54,14 +55,12 @@
status_t release(uint16_t code);
status_t click(uint16_t code);
- void keyEvent(rfbBool down, rfbKeySym key, rfbClientPtr cl);
- void pointerEvent(int buttonMask, int x, int y, rfbClientPtr cl);
-
- int keysym2scancode(rfbKeySym c, rfbClientPtr cl, int* sh, int* alt);
+ int keysym2scancode(uint32_t c, int* sh, int* alt);
Mutex mLock;
int mFD;
+ bool mOpened;
struct uinput_user_dev mUserDev;