Index: base/at_exit.h |
=================================================================== |
--- base/at_exit.h (revision 99168) |
+++ base/at_exit.h (working copy) |
@@ -10,6 +10,7 @@ |
#include "base/base_export.h" |
#include "base/basictypes.h" |
+#include "base/callback.h" |
#include "base/synchronization/lock.h" |
namespace base { |
@@ -39,9 +40,12 @@ |
~AtExitManager(); |
// Registers the specified function to be called at exit. The prototype of |
- // the callback function is void func(). |
+ // the callback function is void func(void*). |
static void RegisterCallback(AtExitCallbackType func, void* param); |
+ // Registers the specified task to be called at exit. |
+ static void RegisterTask(base::Closure task); |
+ |
// Calls the functions registered with RegisterCallback in LIFO order. It |
// is possible to register new callbacks after calling this function. |
static void ProcessCallbacksNow(); |
@@ -54,15 +58,8 @@ |
explicit AtExitManager(bool shadow); |
private: |
- struct CallbackAndParam { |
- CallbackAndParam(AtExitCallbackType func, void* param) |
- : func_(func), param_(param) { } |
- AtExitCallbackType func_; |
- void* param_; |
- }; |
- |
base::Lock lock_; |
- std::stack<CallbackAndParam> stack_; |
+ std::stack<base::Closure> stack_; |
AtExitManager* next_manager_; // Stack of managers to allow shadowing. |
DISALLOW_COPY_AND_ASSIGN(AtExitManager); |