Index: mojo/edk/system/core.cc |
diff --git a/mojo/edk/system/core.cc b/mojo/edk/system/core.cc |
index 80c3d367ba16858731d2c0527c4c073a7faee245..887a9a7fdc32e1ae66fd0f703a7a9d9fce9c1896 100644 |
--- a/mojo/edk/system/core.cc |
+++ b/mojo/edk/system/core.cc |
@@ -97,6 +97,15 @@ scoped_refptr<Dispatcher> Core::GetDispatcher(MojoHandle handle) { |
return handle_table_.GetDispatcher(handle); |
} |
+MojoResult Core::GetAndRemoveDispatcher(MojoHandle handle, |
+ scoped_refptr<Dispatcher>* dispatcher) { |
+ if (handle == MOJO_HANDLE_INVALID) |
+ return MOJO_RESULT_INVALID_ARGUMENT; |
+ |
+ base::AutoLock locker(handle_table_lock_); |
+ return handle_table_.GetAndRemoveDispatcher(handle, dispatcher); |
+} |
+ |
MojoResult Core::AsyncWait(MojoHandle handle, |
MojoHandleSignals signals, |
const base::Callback<void(MojoResult)>& callback) { |