Chromium Code Reviews| Index: base/message_pump_glib.h |
| diff --git a/base/message_pump_glib.h b/base/message_pump_glib.h |
| index 32d0d8fddd7e32ec462eea8119e97b98062f2769..19b2f3129c681d53e5a0c04a5a2248eca7d4dae4 100644 |
| --- a/base/message_pump_glib.h |
| +++ b/base/message_pump_glib.h |
| @@ -11,56 +11,40 @@ |
| #include "base/observer_list.h" |
| #include "base/time.h" |
| -typedef union _GdkEvent GdkEvent; |
| typedef struct _GMainContext GMainContext; |
| typedef struct _GPollFD GPollFD; |
| typedef struct _GSource GSource; |
| namespace base { |
| -// This class implements a MessagePump needed for TYPE_UI MessageLoops on |
| +// MessagePumpObserver is notified prior to an event being dispatched. As |
| +// Observers are notified of every change, they have to be FAST! The platform |
| +// specific implementation of the class is in message_pump_gtk/message_pump_x. |
| +class MessagePumpObserver; |
| + |
| +// MessagePumpDispatcher is used during a nested invocation of Run to dispatch |
| +// events. If Run is invoked with a non-NULL MessagePumpDispatcher, MessageLoop |
| +// does not dispatch events (or invoke gtk_main_do_event), rather every event is |
| +// passed to Dispatcher's Dispatch method for dispatch. It is up to the |
| +// Dispatcher to dispatch, or not, the event. The platform specific |
| +// implementation of the class is in message_pump_gtk/message_pump_x. |
| +class MessagePumpDispatcher; |
| + |
| +// This class implements a base MessagePump needed for TYPE_UI MessageLoops on |
| // OS_LINUX platforms using GLib. |
|
Evan Martin
2011/06/24 17:33:15
I guess to be clear it's any platform using glib,
sadrul
2011/06/24 18:12:54
Done.
|
| -class MessagePumpForUI : public MessagePump { |
| +class MessagePumpGlib : public MessagePump { |
| public: |
| - // Observer is notified prior to a GdkEvent event being dispatched. As |
| - // Observers are notified of every change, they have to be FAST! |
| - class Observer { |
| - public: |
| - virtual ~Observer() {} |
| - |
| - // This method is called before processing a message. |
| - virtual void WillProcessEvent(GdkEvent* event) = 0; |
| - |
| - // This method is called after processing a message. |
| - virtual void DidProcessEvent(GdkEvent* event) = 0; |
| - }; |
| - |
| - // Dispatcher is used during a nested invocation of Run to dispatch events. |
| - // If Run is invoked with a non-NULL Dispatcher, MessageLoop does not |
| - // dispatch events (or invoke gtk_main_do_event), rather every event is |
| - // passed to Dispatcher's Dispatch method for dispatch. It is up to the |
| - // Dispatcher to dispatch, or not, the event. |
| - // |
| - // The nested loop is exited by either posting a quit, or returning false |
| - // from Dispatch. |
| - class Dispatcher { |
| - public: |
| - virtual ~Dispatcher() {} |
| - // Dispatches the event. If true is returned processing continues as |
| - // normal. If false is returned, the nested loop exits immediately. |
| - virtual bool Dispatch(GdkEvent* event) = 0; |
| - }; |
| - |
| - MessagePumpForUI(); |
| - virtual ~MessagePumpForUI(); |
| - |
| - // Like MessagePump::Run, but GdkEvent objects are routed through dispatcher. |
| - virtual void RunWithDispatcher(Delegate* delegate, Dispatcher* dispatcher); |
| + MessagePumpGlib(); |
| + virtual ~MessagePumpGlib(); |
| + |
| + // Like MessagePump::Run, but events are routed through dispatcher. |
| + virtual void RunWithDispatcher(Delegate* delegate, |
| + MessagePumpDispatcher* dispatcher); |
| // Run a single iteration of the mainloop. A return value of true indicates |
| // that an event was handled. |block| indicates if it should wait if no event |
| // is ready for processing. |
| - virtual bool RunOnce(GMainContext* context, bool block); |
| + virtual bool RunOnce(GMainContext* context, bool block) = 0; |
| // Internal methods used for processing the pump callbacks. They are |
| // public for simplicity but should not be used directly. HandlePrepare |
| @@ -73,15 +57,11 @@ class MessagePumpForUI : public MessagePump { |
| void HandleDispatch(); |
| // Adds an Observer, which will start receiving notifications immediately. |
| - void AddObserver(Observer* observer); |
| + void AddObserver(MessagePumpObserver* observer); |
| // Removes an Observer. It is safe to call this method while an Observer is |
| // receiving a notification callback. |
| - void RemoveObserver(Observer* observer); |
| - |
| - // Dispatch an available GdkEvent. Essentially this allows a subclass to do |
| - // some task before/after calling the default handler (EventDispatcher). |
| - virtual void DispatchEvents(GdkEvent* event); |
| + void RemoveObserver(MessagePumpObserver* observer); |
| // Overridden from MessagePump: |
| virtual void Run(Delegate* delegate); |
| @@ -91,26 +71,15 @@ class MessagePumpForUI : public MessagePump { |
| protected: |
| // Returns the dispatcher for the current run state (|state_->dispatcher|). |
| - Dispatcher* GetDispatcher(); |
| + MessagePumpDispatcher* GetDispatcher(); |
| - ObserverList<Observer>& observers() { return observers_; } |
| + ObserverList<MessagePumpObserver>& observers() { return observers_; } |
| private: |
| // We may make recursive calls to Run, so we save state that needs to be |
| // separate between them in this structure type. |
| struct RunState; |
| - // Invoked from EventDispatcher. Notifies all observers we're about to |
| - // process an event. |
| - void WillProcessEvent(GdkEvent* event); |
| - |
| - // Invoked from EventDispatcher. Notifies all observers we processed an |
| - // event. |
| - void DidProcessEvent(GdkEvent* event); |
| - |
| - // Callback prior to gdk dispatching an event. |
| - static void EventDispatcher(GdkEvent* event, void* data); |
| - |
| RunState* state_; |
| // This is a GLib structure that we can add event sources to. We use the |
| @@ -135,9 +104,9 @@ class MessagePumpForUI : public MessagePump { |
| scoped_ptr<GPollFD> wakeup_gpollfd_; |
| // List of observers. |
| - ObserverList<Observer> observers_; |
| + ObserverList<MessagePumpObserver> observers_; |
| - DISALLOW_COPY_AND_ASSIGN(MessagePumpForUI); |
| + DISALLOW_COPY_AND_ASSIGN(MessagePumpGlib); |
| }; |
| } // namespace base |