Index: base/synchronization/waitable_event_watcher_win.cc |
diff --git a/base/synchronization/waitable_event_watcher_win.cc b/base/synchronization/waitable_event_watcher_win.cc |
index 43e3c4700e3c5f65a39c6a28638ab39cc211d898..46d47ac581a8e3ff58f6d17a692fe3d5117196ae 100644 |
--- a/base/synchronization/waitable_event_watcher_win.cc |
+++ b/base/synchronization/waitable_event_watcher_win.cc |
@@ -10,35 +10,23 @@ |
namespace base { |
-WaitableEventWatcher::ObjectWatcherHelper::ObjectWatcherHelper( |
- WaitableEventWatcher* watcher) |
- : watcher_(watcher) { |
-}; |
- |
-void WaitableEventWatcher::ObjectWatcherHelper::OnObjectSignaled(HANDLE h) { |
- watcher_->OnObjectSignaled(); |
-} |
- |
- |
WaitableEventWatcher::WaitableEventWatcher() |
- : ALLOW_THIS_IN_INITIALIZER_LIST(helper_(this)), |
- event_(NULL), |
- delegate_(NULL) { |
+ : event_(NULL) { |
} |
WaitableEventWatcher::~WaitableEventWatcher() { |
} |
-bool WaitableEventWatcher::StartWatching(WaitableEvent* event, |
- Delegate* delegate) { |
- delegate_ = delegate; |
+bool WaitableEventWatcher::StartWatching( |
+ WaitableEvent* event, |
+ const EventCallback& callback) { |
+ callback_ = callback; |
event_ = event; |
- |
- return watcher_.StartWatching(event->handle(), &helper_); |
+ return watcher_.StartWatching(event->handle(), this); |
} |
void WaitableEventWatcher::StopWatching() { |
- delegate_ = NULL; |
+ callback_.Reset(); |
event_ = NULL; |
watcher_.StopWatching(); |
} |
@@ -47,14 +35,14 @@ WaitableEvent* WaitableEventWatcher::GetWatchedEvent() { |
return event_; |
} |
-void WaitableEventWatcher::OnObjectSignaled() { |
+void WaitableEventWatcher::OnObjectSignaled(HANDLE h) { |
WaitableEvent* event = event_; |
- Delegate* delegate = delegate_; |
+ EventCallback callback = callback_; |
event_ = NULL; |
- delegate_ = NULL; |
+ callback_.Reset(); |
DCHECK(event); |
- delegate->OnWaitableEventSignaled(event); |
+ callback.Run(event); |
} |
} // namespace base |