OLD | NEW |
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 26 matching lines...) Expand all Loading... |
37 #include <IOKit/IOKitLib.h> | 37 #include <IOKit/IOKitLib.h> |
38 | 38 |
39 #if defined(__OBJC__) | 39 #if defined(__OBJC__) |
40 @class NSAutoreleasePool; | 40 @class NSAutoreleasePool; |
41 #else // defined(__OBJC__) | 41 #else // defined(__OBJC__) |
42 class NSAutoreleasePool; | 42 class NSAutoreleasePool; |
43 #endif // defined(__OBJC__) | 43 #endif // defined(__OBJC__) |
44 | 44 |
45 namespace base { | 45 namespace base { |
46 | 46 |
47 class Time; | 47 class TimeTicks; |
48 | 48 |
49 class MessagePumpCFRunLoopBase : public MessagePump { | 49 class MessagePumpCFRunLoopBase : public MessagePump { |
50 // Needs access to CreateAutoreleasePool. | 50 // Needs access to CreateAutoreleasePool. |
51 friend class MessagePumpScopedAutoreleasePool; | 51 friend class MessagePumpScopedAutoreleasePool; |
52 public: | 52 public: |
53 MessagePumpCFRunLoopBase(); | 53 MessagePumpCFRunLoopBase(); |
54 virtual ~MessagePumpCFRunLoopBase(); | 54 virtual ~MessagePumpCFRunLoopBase(); |
55 | 55 |
56 // Subclasses should implement the work they need to do in MessagePump::Run | 56 // Subclasses should implement the work they need to do in MessagePump::Run |
57 // in the DoRun method. MessagePumpCFRunLoopBase::Run calls DoRun directly. | 57 // in the DoRun method. MessagePumpCFRunLoopBase::Run calls DoRun directly. |
58 // This arrangement is used because MessagePumpCFRunLoopBase needs to set | 58 // This arrangement is used because MessagePumpCFRunLoopBase needs to set |
59 // up and tear down things before and after the "meat" of DoRun. | 59 // up and tear down things before and after the "meat" of DoRun. |
60 virtual void Run(Delegate* delegate); | 60 virtual void Run(Delegate* delegate); |
61 virtual void DoRun(Delegate* delegate) = 0; | 61 virtual void DoRun(Delegate* delegate) = 0; |
62 | 62 |
63 virtual void ScheduleWork(); | 63 virtual void ScheduleWork(); |
64 virtual void ScheduleDelayedWork(const Time& delayed_work_time); | 64 virtual void ScheduleDelayedWork(const TimeTicks& delayed_work_time); |
65 | 65 |
66 protected: | 66 protected: |
67 // Accessors for private data members to be used by subclasses. | 67 // Accessors for private data members to be used by subclasses. |
68 CFRunLoopRef run_loop() const { return run_loop_; } | 68 CFRunLoopRef run_loop() const { return run_loop_; } |
69 int nesting_level() const { return nesting_level_; } | 69 int nesting_level() const { return nesting_level_; } |
70 int run_nesting_level() const { return run_nesting_level_; } | 70 int run_nesting_level() const { return run_nesting_level_; } |
71 | 71 |
72 // Return an autorelease pool to wrap around any work being performed. | 72 // Return an autorelease pool to wrap around any work being performed. |
73 // In some cases, CreateAutoreleasePool may return nil intentionally to | 73 // In some cases, CreateAutoreleasePool may return nil intentionally to |
74 // preventing an autorelease pool from being created, allowing any | 74 // preventing an autorelease pool from being created, allowing any |
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
267 // thread. Otherwise, returns a new instance of MessagePumpNSRunLoop. | 267 // thread. Otherwise, returns a new instance of MessagePumpNSRunLoop. |
268 static MessagePump* Create(); | 268 static MessagePump* Create(); |
269 | 269 |
270 private: | 270 private: |
271 DISALLOW_IMPLICIT_CONSTRUCTORS(MessagePumpMac); | 271 DISALLOW_IMPLICIT_CONSTRUCTORS(MessagePumpMac); |
272 }; | 272 }; |
273 | 273 |
274 } // namespace base | 274 } // namespace base |
275 | 275 |
276 #endif // BASE_MESSAGE_PUMP_MAC_H_ | 276 #endif // BASE_MESSAGE_PUMP_MAC_H_ |
OLD | NEW |