Commit 4d605bd0 authored by Klaus Weidner's avatar Klaus Weidner Committed by Commit Bot

Don't shut down OpenVR render loop on connection errors

A normal immersive session shutdown triggers this error handler,
and stopping the render loop lost a pending gamepad_callback_,
so future immersive sessions weren't seeing the controllers
anymore. Instead, keep the render loop running, it'll be cleaned
up when exiting the page entirely.

BUG=875187

Cq-Include-Trybots: luci.chromium.try:win_optional_gpu_tests_rel
Change-Id: I89a333a9cd104069d6e228248608957bec665a91
Reviewed-on: https://chromium-review.googlesource.com/1194252Reviewed-by: default avatarBill Orr <billorr@chromium.org>
Commit-Queue: Klaus Weidner <klausw@chromium.org>
Cr-Commit-Position: refs/heads/master@{#587130}
parent aac1c9fc
...@@ -264,7 +264,10 @@ void OpenVRDevice::OnPresentingControllerMojoConnectionError() { ...@@ -264,7 +264,10 @@ void OpenVRDevice::OnPresentingControllerMojoConnectionError() {
render_loop_->task_runner()->PostTask( render_loop_->task_runner()->PostTask(
FROM_HERE, FROM_HERE,
base::Bind(&OpenVRRenderLoop::ExitPresent, render_loop_->GetWeakPtr())); base::Bind(&OpenVRRenderLoop::ExitPresent, render_loop_->GetWeakPtr()));
render_loop_->Stop(); // Don't stop the render loop here. We need to keep the gamepad provider alive
// so that we don't lose a pending mojo gamepad_callback_.
// TODO(https://crbug.com/875187): Alternatively, we could recreate the
// provider on the next session, or look into why the callback gets lost.
OnExitPresent(); OnExitPresent();
exclusive_controller_binding_.Close(); exclusive_controller_binding_.Close();
} }
......
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