OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 #include "base/message_loop/message_loop.h" | 5 #include "base/message_loop/message_loop.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/compiler_specific.h" | 10 #include "base/compiler_specific.h" |
(...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
214 FOR_EACH_OBSERVER(DestructionObserver, destruction_observers_, | 214 FOR_EACH_OBSERVER(DestructionObserver, destruction_observers_, |
215 WillDestroyCurrentMessageLoop()); | 215 WillDestroyCurrentMessageLoop()); |
216 | 216 |
217 thread_task_runner_handle_.reset(); | 217 thread_task_runner_handle_.reset(); |
218 | 218 |
219 // Tell the message_loop_proxy that we are dying. | 219 // Tell the message_loop_proxy that we are dying. |
220 static_cast<MessageLoopProxyImpl*>(message_loop_proxy_.get())-> | 220 static_cast<MessageLoopProxyImpl*>(message_loop_proxy_.get())-> |
221 WillDestroyCurrentMessageLoop(); | 221 WillDestroyCurrentMessageLoop(); |
222 message_loop_proxy_ = NULL; | 222 message_loop_proxy_ = NULL; |
223 | 223 |
224 // Stop the message pump and free any thread-bound resources. | |
225 pump_->Shutdown(); | |
226 | |
227 // OK, now make it so that no one can find us. | 224 // OK, now make it so that no one can find us. |
228 lazy_tls_ptr.Pointer()->Set(NULL); | 225 lazy_tls_ptr.Pointer()->Set(NULL); |
229 | 226 |
230 #if defined(OS_WIN) | 227 #if defined(OS_WIN) |
231 // If we left the high-resolution timer activated, deactivate it now. | 228 // If we left the high-resolution timer activated, deactivate it now. |
232 // Doing this is not-critical, it is mainly to make sure we track | 229 // Doing this is not-critical, it is mainly to make sure we track |
233 // the high resolution timer activations properly in our unit tests. | 230 // the high resolution timer activations properly in our unit tests. |
234 if (!high_resolution_timer_expiration_.is_null()) { | 231 if (!high_resolution_timer_expiration_.is_null()) { |
235 Time::ActivateHighResolutionTimer(false); | 232 Time::ActivateHighResolutionTimer(false); |
236 high_resolution_timer_expiration_ = TimeTicks(); | 233 high_resolution_timer_expiration_ = TimeTicks(); |
(...skipping 591 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
828 fd, | 825 fd, |
829 persistent, | 826 persistent, |
830 mode, | 827 mode, |
831 controller, | 828 controller, |
832 delegate); | 829 delegate); |
833 } | 830 } |
834 | 831 |
835 #endif | 832 #endif |
836 | 833 |
837 } // namespace base | 834 } // namespace base |
OLD | NEW |