| 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 |