Chromium Code Reviews| Index: sdk/lib/io/timer_impl.dart |
| diff --git a/sdk/lib/io/timer_impl.dart b/sdk/lib/io/timer_impl.dart |
| index 73c7cae1c12ccad966449f43d93515a138917c10..34439a91243e81452280e6cf76166b5c1cb57c29 100644 |
| --- a/sdk/lib/io/timer_impl.dart |
| +++ b/sdk/lib/io/timer_impl.dart |
| @@ -50,6 +50,8 @@ class _Timer extends LinkedListEntry<_Timer> implements Timer { |
| bool get _repeating => _milliSeconds >= 0; |
| + bool get isActive => (_callback != null); |
| + |
| // Cancels a set timer. The timer is removed from the timer list and if |
| // the given timer is the earliest timer the native timer is reset. |
| @@ -143,7 +145,11 @@ class _Timer extends LinkedListEntry<_Timer> implements Timer { |
| // one of the later timers which will set the callback to |
| // null. |
| if (timer._callback != null) { |
| - timer._callback(timer); |
| + var callback = timer._callback; |
| + if (!timer._repeating) { |
| + timer._callback = null; |
|
floitsch
2013/07/01 17:50:56
Add comment: // Mark timer as inactive.
zarah
2013/07/02 11:22:01
Done.
|
| + } |
| + callback(timer); |
| // Re-insert repeating timer if not canceled. |
| if (timer._repeating && timer._callback != null) { |
| timer._advanceWakeupTime(); |