Initial import of VNCFlinger
diff --git a/src/EventQueue.h b/src/EventQueue.h
new file mode 100644
index 0000000..e926831
--- /dev/null
+++ b/src/EventQueue.h
@@ -0,0 +1,67 @@
+#ifndef MQ_H
+#define MQ_H
+
+#include <queue>
+#include <vector>
+
+#include <utils/RefBase.h>
+#include <utils/Thread.h>
+
+#define EVENT_CLIENT_CONNECT 0
+#define EVENT_CLIENT_GONE 1
+#define EVENT_BUFFER_READY 2
+
+namespace android {
+
+class Event {
+public:
+ Event(unsigned int id, void* data = 0):
+ mId(id),
+ mData(data) {}
+
+ Event(const Event& ev):
+ mId(ev.mId),
+ mData(ev.mData) {}
+
+ unsigned int mId;
+ void* mData;
+};
+
+class EventListener {
+public:
+ virtual ~EventListener() {}
+
+ virtual void onEvent(const Event& event) = 0;
+};
+
+class EventQueue : public RefBase {
+public:
+ EventQueue():
+ mRunning(true) {}
+
+ virtual void await();
+
+ virtual void shutdown();
+
+ virtual void enqueue(const Event& event);
+
+ virtual void flush();
+
+ virtual void addListener(EventListener *listener);
+
+ virtual void removeListener(EventListener *listener);
+
+ virtual ~EventQueue() { }
+
+private:
+ Mutex mMutex;
+ Condition mCondition;
+
+ std::queue<const Event> mQueue;
+ std::vector<EventListener *> mListeners;
+
+ bool mRunning;
+};
+
+};
+#endif