Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(695)

Side by Side Diff: base/message_loop/message_pump_aurax11.h

Issue 23537016: gtk: Some code cleanup for the message-pump. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef BASE_MESSAGE_LOOP_MESSAGE_PUMP_AURAX11_H 5 #ifndef BASE_MESSAGE_LOOP_MESSAGE_PUMP_AURAX11_H
6 #define BASE_MESSAGE_LOOP_MESSAGE_PUMP_AURAX11_H 6 #define BASE_MESSAGE_LOOP_MESSAGE_PUMP_AURAX11_H
7 7
8 #include <bitset> 8 #include <bitset>
9 #include <map> 9 #include <map>
10 10
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
51 void AddDispatcherForWindow(MessagePumpDispatcher* dispatcher, 51 void AddDispatcherForWindow(MessagePumpDispatcher* dispatcher,
52 unsigned long xid); 52 unsigned long xid);
53 void RemoveDispatcherForWindow(unsigned long xid); 53 void RemoveDispatcherForWindow(unsigned long xid);
54 54
55 // Adds/Removes |dispatcher| to receive all events sent to the X root 55 // Adds/Removes |dispatcher| to receive all events sent to the X root
56 // window. A root window can have multiple dispatchers, and events on root 56 // window. A root window can have multiple dispatchers, and events on root
57 // windows will be dispatched to all. 57 // windows will be dispatched to all.
58 void AddDispatcherForRootWindow(MessagePumpDispatcher* dispatcher); 58 void AddDispatcherForRootWindow(MessagePumpDispatcher* dispatcher);
59 void RemoveDispatcherForRootWindow(MessagePumpDispatcher* dispatcher); 59 void RemoveDispatcherForRootWindow(MessagePumpDispatcher* dispatcher);
60 60
61 // Adds an Observer, which will start receiving notifications immediately.
62 void AddObserver(MessagePumpObserver* observer);
63
64 // Removes an Observer. It is safe to call this method while an Observer is
65 // receiving a notification callback.
66 void RemoveObserver(MessagePumpObserver* observer);
67
61 // Internal function. Called by the glib source dispatch function. Processes 68 // Internal function. Called by the glib source dispatch function. Processes
62 // all available X events. 69 // all available X events.
63 bool DispatchXEvents(); 70 bool DispatchXEvents();
64 71
65 // Blocks on the X11 event queue until we receive notification from the 72 // Blocks on the X11 event queue until we receive notification from the
66 // xserver that |w| has been mapped; StructureNotifyMask events on |w| are 73 // xserver that |w| has been mapped; StructureNotifyMask events on |w| are
67 // pulled out from the queue and dispatched out of order. 74 // pulled out from the queue and dispatched out of order.
68 // 75 //
69 // For those that know X11, this is really a wrapper around XWindowEvent 76 // For those that know X11, this is really a wrapper around XWindowEvent
70 // which still makes sure the preempted event is dispatched instead of 77 // which still makes sure the preempted event is dispatched instead of
(...skipping 14 matching lines...) Expand all
85 92
86 // Sends the event to the observers. If an observer returns true, then it does 93 // Sends the event to the observers. If an observer returns true, then it does
87 // not send the event to any other observers and returns true. Returns false 94 // not send the event to any other observers and returns true. Returns false
88 // if no observer returns true. 95 // if no observer returns true.
89 bool WillProcessXEvent(XEvent* xevent); 96 bool WillProcessXEvent(XEvent* xevent);
90 void DidProcessXEvent(XEvent* xevent); 97 void DidProcessXEvent(XEvent* xevent);
91 98
92 // Returns the Dispatcher based on the event's target window. 99 // Returns the Dispatcher based on the event's target window.
93 MessagePumpDispatcher* GetDispatcherForXEvent(const NativeEvent& xev) const; 100 MessagePumpDispatcher* GetDispatcherForXEvent(const NativeEvent& xev) const;
94 101
102 ObserverList<MessagePumpObserver>& observers() { return observers_; }
103
95 // Overridden from MessagePumpDispatcher: 104 // Overridden from MessagePumpDispatcher:
96 virtual bool Dispatch(const NativeEvent& event) OVERRIDE; 105 virtual bool Dispatch(const NativeEvent& event) OVERRIDE;
97 106
98 // The event source for X events. 107 // The event source for X events.
99 GSource* x_source_; 108 GSource* x_source_;
100 109
101 // The poll attached to |x_source_|. 110 // The poll attached to |x_source_|.
102 scoped_ptr<GPollFD> x_poll_; 111 scoped_ptr<GPollFD> x_poll_;
103 112
104 DispatchersMap dispatchers_; 113 DispatchersMap dispatchers_;
105 114
106 // Dispatch calls can cause addition of new dispatchers as we iterate 115 // Dispatch calls can cause addition of new dispatchers as we iterate
107 // through them. Use ObserverList to ensure the iterator remains valid across 116 // through them. Use ObserverList to ensure the iterator remains valid across
108 // additions. 117 // additions.
109 ObserverList<MessagePumpDispatcher> root_window_dispatchers_; 118 ObserverList<MessagePumpDispatcher> root_window_dispatchers_;
110 119
120 // List of observers.
121 ObserverList<MessagePumpObserver> observers_;
122
111 unsigned long x_root_window_; 123 unsigned long x_root_window_;
112 124
113 DISALLOW_COPY_AND_ASSIGN(MessagePumpAuraX11); 125 DISALLOW_COPY_AND_ASSIGN(MessagePumpAuraX11);
114 }; 126 };
115 127
116 typedef MessagePumpAuraX11 MessagePumpForUI; 128 typedef MessagePumpAuraX11 MessagePumpForUI;
117 129
118 } // namespace base 130 } // namespace base
119 131
120 #endif // BASE_MESSAGE_LOOP_MESSAGE_PUMP_AURAX11_H 132 #endif // BASE_MESSAGE_LOOP_MESSAGE_PUMP_AURAX11_H
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698