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

Side by Side Diff: base/message_pump_mac.h

Issue 264042: Less busywork for nested Mac run loops (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 11 years, 2 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
« no previous file with comments | « no previous file | base/message_pump_mac.mm » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2008 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 // The basis for all native run loops on the Mac is the CFRunLoop. It can be 5 // The basis for all native run loops on the Mac is the CFRunLoop. It can be
6 // used directly, it can be used as the driving force behind the similar 6 // used directly, it can be used as the driving force behind the similar
7 // Foundation NSRunLoop, and it can be used to implement higher-level event 7 // Foundation NSRunLoop, and it can be used to implement higher-level event
8 // loops such as the NSApplication event loop. 8 // loops such as the NSApplication event loop.
9 // 9 //
10 // This file introduces a basic CFRunLoop-based implementation of the 10 // This file introduces a basic CFRunLoop-based implementation of the
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
55 55
56 protected: 56 protected:
57 // The thread's run loop. 57 // The thread's run loop.
58 CFRunLoopRef run_loop_; 58 CFRunLoopRef run_loop_;
59 59
60 // The recursion depth of the currently-executing CFRunLoopRun loop on the 60 // The recursion depth of the currently-executing CFRunLoopRun loop on the
61 // run loop's thread. 0 if no run loops are running inside of whatever scope 61 // run loop's thread. 0 if no run loops are running inside of whatever scope
62 // the object was created in. 62 // the object was created in.
63 int nesting_level_; 63 int nesting_level_;
64 64
65 // The recursion depth (calculated in the same way as nesting_level_) of the
66 // innermost executing CFRunLoopRun loop started by a call to Run.
67 int run_nesting_level_;
68
65 private: 69 private:
66 // Timer callback scheduled by ScheduleDelayedWork. This does not do any 70 // Timer callback scheduled by ScheduleDelayedWork. This does not do any
67 // work, but it signals delayed_work_source_ so that delayed work can be 71 // work, but it signals delayed_work_source_ so that delayed work can be
68 // performed within the appropriate priority constraints. 72 // performed within the appropriate priority constraints.
69 static void RunDelayedWorkTimer(CFRunLoopTimerRef timer, void* info); 73 static void RunDelayedWorkTimer(CFRunLoopTimerRef timer, void* info);
70 74
71 // Perform highest-priority work. This is associated with work_source_ 75 // Perform highest-priority work. This is associated with work_source_
72 // signalled by ScheduleWork. The static method calls the instance method; 76 // signalled by ScheduleWork. The static method calls the instance method;
73 // the instance method returns true if work was done. 77 // the instance method returns true if work was done.
74 static void RunWorkSource(void* info); 78 static void RunWorkSource(void* info);
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
143 class MessagePumpCFRunLoop : public MessagePumpCFRunLoopBase { 147 class MessagePumpCFRunLoop : public MessagePumpCFRunLoopBase {
144 public: 148 public:
145 MessagePumpCFRunLoop(); 149 MessagePumpCFRunLoop();
146 150
147 virtual void DoRun(Delegate* delegate); 151 virtual void DoRun(Delegate* delegate);
148 virtual void Quit(); 152 virtual void Quit();
149 153
150 private: 154 private:
151 virtual void EnterExitRunLoop(CFRunLoopActivity activity); 155 virtual void EnterExitRunLoop(CFRunLoopActivity activity);
152 156
153 // The recursion depth (calculated in the same way as nesting_level_) of the
154 // innermost executing CFRunLoopRun loop started by a call to Run.
155 int innermost_quittable_;
156
157 // True if Quit is called to stop the innermost MessagePump 157 // True if Quit is called to stop the innermost MessagePump
158 // (innermost_quittable_) but some other CFRunLoopRun loop (nesting_level_) 158 // (innermost_quittable_) but some other CFRunLoopRun loop (nesting_level_)
159 // is running inside the MessagePump's innermost Run call. 159 // is running inside the MessagePump's innermost Run call.
160 bool quit_pending_; 160 bool quit_pending_;
161 161
162 DISALLOW_COPY_AND_ASSIGN(MessagePumpCFRunLoop); 162 DISALLOW_COPY_AND_ASSIGN(MessagePumpCFRunLoop);
163 }; 163 };
164 164
165 class MessagePumpNSRunLoop : public MessagePumpCFRunLoopBase { 165 class MessagePumpNSRunLoop : public MessagePumpCFRunLoopBase {
166 public: 166 public:
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
208 // thread. Otherwise, returns a new instance of MessagePumpNSRunLoop. 208 // thread. Otherwise, returns a new instance of MessagePumpNSRunLoop.
209 static MessagePump* Create(); 209 static MessagePump* Create();
210 210
211 private: 211 private:
212 DISALLOW_IMPLICIT_CONSTRUCTORS(MessagePumpMac); 212 DISALLOW_IMPLICIT_CONSTRUCTORS(MessagePumpMac);
213 }; 213 };
214 214
215 } // namespace base 215 } // namespace base
216 216
217 #endif // BASE_MESSAGE_PUMP_MAC_H_ 217 #endif // BASE_MESSAGE_PUMP_MAC_H_
OLDNEW
« no previous file with comments | « no previous file | base/message_pump_mac.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698