Commit 2f96cd9f authored by Daniel Cheng's avatar Daniel Cheng Committed by Commit Bot

Tweak ARCoreDevice::CreateMainThreadCallback to work generically.

Bug: none
Change-Id: Id43c913c699283df72696c8f97b7b869befeebd1
Reviewed-on: https://chromium-review.googlesource.com/1093265Reviewed-by: default avatarMichael Thiessen <mthiesse@chromium.org>
Reviewed-by: default avatarTaiju Tsuiki <tzik@chromium.org>
Commit-Queue: Daniel Cheng <dcheng@chromium.org>
Cr-Commit-Position: refs/heads/master@{#566764}
parent 31414f90
......@@ -63,19 +63,6 @@ mojom::VRDisplayInfoPtr CreateVRDisplayInfo(uint32_t device_id) {
return device;
}
void RunCallbackOnTaskRunnerVoid(
const scoped_refptr<base::TaskRunner>& task_runner,
base::OnceClosure callback) {
task_runner->PostTask(FROM_HERE, std::move(callback));
}
base::OnceCallback<void(void)> CreateThreadCallbackVoid(
const scoped_refptr<base::TaskRunner>& task_runner,
base::OnceCallback<void(void)> callback) {
return base::BindOnce(&RunCallbackOnTaskRunnerVoid, task_runner,
std::move(callback));
}
} // namespace
ARCoreDevice::ARCoreDevice()
......@@ -133,10 +120,8 @@ void ARCoreDevice::OnMailboxBridgeReady() {
// TODO(https://crbug.com/836553): use same GL thread as GVR.
arcore_gl_thread_ = std::make_unique<ARCoreGlThread>(
std::move(mailbox_bridge_),
CreateThreadCallbackVoid(
main_thread_task_runner_,
base::BindOnce(&ARCoreDevice::OnARCoreGlThreadInitialized,
GetWeakPtr())));
CreateMainThreadCallback(base::BindOnce(
&ARCoreDevice::OnARCoreGlThreadInitialized, GetWeakPtr())));
arcore_gl_thread_->Start();
}
......@@ -325,7 +310,7 @@ void ARCoreDevice::OnRequestSessionPreconditionsComplete(
PostTaskToGlThread(base::BindOnce(
&ARCoreGl::Initialize, arcore_gl_thread_->GetARCoreGl()->GetWeakPtr(),
CreateMainThreadCallback<bool>(
CreateMainThreadCallback(
base::BindOnce(&ARCoreDevice::OnARCoreGlInitializationComplete,
GetWeakPtr(), std::move(callback)))));
}
......
......@@ -60,18 +60,19 @@ class ARCoreDevice : public VRDeviceBase {
mojom::VRDisplayHost::RequestSessionCallback callback,
bool success);
template <typename DataType>
template <typename... Args>
static void RunCallbackOnTaskRunner(
const scoped_refptr<base::TaskRunner>& task_runner,
base::OnceCallback<void(DataType)> callback,
DataType data) {
task_runner->PostTask(FROM_HERE,
base::BindOnce(std::move(callback), std::move(data)));
base::OnceCallback<void(Args...)> callback,
Args... args) {
task_runner->PostTask(
FROM_HERE,
base::BindOnce(std::move(callback), std::forward<Args>(args)...));
}
template <typename DataType>
base::OnceCallback<void(DataType)> CreateMainThreadCallback(
base::OnceCallback<void(DataType)> callback) {
return base::BindOnce(&ARCoreDevice::RunCallbackOnTaskRunner<DataType>,
template <typename... Args>
base::OnceCallback<void(Args...)> CreateMainThreadCallback(
base::OnceCallback<void(Args...)> callback) {
return base::BindOnce(&ARCoreDevice::RunCallbackOnTaskRunner<Args...>,
main_thread_task_runner_, std::move(callback));
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment