OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2006, 2008 Apple Inc. All rights reserved. | 2 * Copyright (C) 2006, 2008 Apple Inc. All rights reserved. |
3 * Copyright (C) 2009 Google Inc. All rights reserved. | 3 * Copyright (C) 2009 Google Inc. All rights reserved. |
4 * | 4 * |
5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
6 * modification, are permitted provided that the following conditions | 6 * modification, are permitted provided that the following conditions |
7 * are met: | 7 * are met: |
8 * 1. Redistributions of source code must retain the above copyright | 8 * 1. Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * 2. Redistributions in binary form must reproduce the above copyright | 10 * 2. Redistributions in binary form must reproduce the above copyright |
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
124 while (!m_timerHeap.isEmpty() && m_timerHeap.first()->m_nextFireTime <= fire
Time) { | 124 while (!m_timerHeap.isEmpty() && m_timerHeap.first()->m_nextFireTime <= fire
Time) { |
125 TimerBase& timer = *m_timerHeap.first(); | 125 TimerBase& timer = *m_timerHeap.first(); |
126 timer.m_nextFireTime = 0; | 126 timer.m_nextFireTime = 0; |
127 timer.m_unalignedNextFireTime = 0; | 127 timer.m_unalignedNextFireTime = 0; |
128 timer.heapDeleteMin(); | 128 timer.heapDeleteMin(); |
129 | 129 |
130 double interval = timer.repeatInterval(); | 130 double interval = timer.repeatInterval(); |
131 timer.setNextFireTime(interval ? fireTime + interval : 0); | 131 timer.setNextFireTime(interval ? fireTime + interval : 0); |
132 | 132 |
133 TRACE_EVENT2("blink", "ThreadTimers::sharedTimerFiredInternal", | 133 TRACE_EVENT2("blink", "ThreadTimers::sharedTimerFiredInternal", |
134 "src_file", timer.location().fileName(), | 134 "src_file", TRACE_STR_NO_COPY(timer.location().fileName()), |
135 "src_func", timer.location().functionName()); | 135 "src_func", TRACE_STR_NO_COPY(timer.location().functionName())); |
136 | 136 |
137 // Once the timer has been fired, it may be deleted, so do nothing else
with it after this point. | 137 // Once the timer has been fired, it may be deleted, so do nothing else
with it after this point. |
138 timer.fired(); | 138 timer.fired(); |
139 | 139 |
140 // Catch the case where the timer asked timers to fire in a nested event
loop, or we are over time limit. | 140 // Catch the case where the timer asked timers to fire in a nested event
loop, or we are over time limit. |
141 if (!m_firingTimers || timeToQuit < monotonicallyIncreasingTime()) | 141 if (!m_firingTimers || timeToQuit < monotonicallyIncreasingTime()) |
142 break; | 142 break; |
143 } | 143 } |
144 | 144 |
145 m_firingTimers = false; | 145 m_firingTimers = false; |
146 | 146 |
147 updateSharedTimer(); | 147 updateSharedTimer(); |
148 } | 148 } |
149 | 149 |
150 void ThreadTimers::fireTimersInNestedEventLoop() | 150 void ThreadTimers::fireTimersInNestedEventLoop() |
151 { | 151 { |
152 // Reset the reentrancy guard so the timers can fire again. | 152 // Reset the reentrancy guard so the timers can fire again. |
153 m_firingTimers = false; | 153 m_firingTimers = false; |
154 updateSharedTimer(); | 154 updateSharedTimer(); |
155 } | 155 } |
156 | 156 |
157 } // namespace WebCore | 157 } // namespace WebCore |
158 | 158 |
OLD | NEW |