Replace std::function with base::Closure
std::function doesn't support non-copyable arguments. Use base::Closure
and base::OnceClosure from libchrome instead.
Test: atest --host bluetooth_test_gd
Change-Id: Ic18bbc000730e8b0d7acff0097870bd258ee6150
diff --git a/gd/module.h b/gd/module.h
index 046ee8c..96a1109 100644
--- a/gd/module.h
+++ b/gd/module.h
@@ -21,8 +21,9 @@
#include <map>
#include <vector>
-#include "os/log.h"
+#include "common/bind.h"
#include "os/handler.h"
+#include "os/log.h"
#include "os/thread.h"
namespace bluetooth {
@@ -151,11 +152,13 @@
bool SynchronizeModuleHandler(const ModuleFactory* module, std::chrono::milliseconds timeout) const {
std::promise<void> promise;
+ auto future = promise.get_future();
os::Handler* handler = GetTestModuleHandler(module);
- handler->Post([&promise] { promise.set_value(); });
- return promise.get_future().wait_for(timeout) == std::future_status::ready;
+ handler->Post(common::BindOnce(&std::promise<void>::set_value, common::Unretained(&promise)));
+ return future.wait_for(timeout) == std::future_status::ready;
}
+ private:
os::Thread test_thread{"test_thread", os::Thread::Priority::NORMAL};
};