// Copyright (c) 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef BASE_MESSAGE_PUMP_GLIB_X_DISPATCH_H #define BASE_MESSAGE_PUMP_GLIB_X_DISPATCH_H #include "base/message_pump.h" #include "base/message_pump_glib.h" typedef union _XEvent XEvent; namespace base { // The message pump used for TOUCH_UI on linux is MessagePumpGlibX, which can // dispatch both GdkEvents* and XEvents* captured directly from X. // MessagePumpForUI::Dispatcher provides the mechanism for dispatching // GdkEvents. This class provides additional mechanism for dispatching XEvents. class MessagePumpGlibXDispatcher : public MessagePumpForUI::Dispatcher { public: enum DispatchStatus { EVENT_IGNORED, // The event was not processed. EVENT_PROCESSED, // The event has been processed. EVENT_QUIT // The event was processed and the message-loop should // terminate. }; // Dispatches the event. EVENT_IGNORED is returned if the event was ignored // (i.e. not processed). EVENT_PROCESSED is returned if the event was // processed. The nested loop exits immediately if EVENT_QUIT is returned. virtual DispatchStatus DispatchX(XEvent* xevent) = 0; }; } // namespace base #endif // BASE_MESSAGE_PUMP_GLIB_X_DISPATCH_H