SurfaceFlinger有着自己的消息队列MessageQueue,用来处理显示相关的消息,比如Vsync消息。
相关文件:
- frameworks/native/services/surfaceflinger/MessageQueue.h
- frameworks/native/services/surfaceflinger/MessageQueue.cpp
类MessageQueue和Handler定义在MessageQueue.h文件中,代码如下:
class MessageQueue {
// 类Handler定义也在这里
class Handler : public MessageHandler {
enum {
eventMaskInvalidate = 0x1,
eventMaskRefresh = 0x2,
eventMaskTransaction = 0x4
};
MessageQueue& mQueue;
int32_t mEventMask;
public:
Handler(MessageQueue& queue) : mQueue(queue), mEventMask(0) { }
virtual void handleMessage(const Message& message);
void dispatchRefresh();
void dispatchInvalidate();
void dispatchTransaction();
};
friend class Handler;