diff options
Diffstat (limited to 'services/surfaceflinger/MessageQueue.h')
-rw-r--r-- | services/surfaceflinger/MessageQueue.h | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/services/surfaceflinger/MessageQueue.h b/services/surfaceflinger/MessageQueue.h index 2317d81..5ea197d 100644 --- a/services/surfaceflinger/MessageQueue.h +++ b/services/surfaceflinger/MessageQueue.h @@ -25,10 +25,15 @@ #include <utils/Timers.h> #include <utils/Looper.h> +#include <gui/DisplayEventReceiver.h> + #include "Barrier.h" namespace android { +class IDisplayEventConnection; +class EventThread; + // --------------------------------------------------------------------------- class MessageBase : public MessageHandler @@ -55,11 +60,20 @@ private: class MessageQueue { sp<Looper> mLooper; - volatile int32_t mWorkPending; + sp<EventThread> mEventThread; + sp<IDisplayEventConnection> mEvents; + sp<BitTube> mEventTube; + int32_t mWorkPending; + + static int cb_eventReceiver(int fd, int events, void* data); + int eventReceiver(int fd, int events); + ssize_t getEvents(DisplayEventReceiver::Event* events, size_t count); + void scheduleWorkASAP(); public: MessageQueue(); ~MessageQueue(); + void setEventThread(const sp<EventThread>& events); void waitMessage(); status_t postMessage(const sp<MessageBase>& message, nsecs_t reltime=0); |