Vive controller doesn't work when only activating one.
Categories
(Core :: WebVR, defect, P2)
Tracking
()
Tracking | Status | |
---|---|---|
firefox73 | --- | fixed |
People
(Reporter: daoshengmu, Assigned: daoshengmu)
Details
Attachments
(1 file)
Assignee | ||
Updated•6 years ago
|
Assignee | ||
Comment 1•6 years ago
|
||
We notice we didn't write states info ControllerState correctly before because sometimes there is only one controller (right hand), it will try to access the slot 1 instead of the current available slot 0. That makes us can't see this controller is available.
Comment 2•6 years ago
|
||
We might want to check some things before landing this...
The empty gaps in mControllerState were by design
VRDisplayClient expects a controller to never change from one index to another.
There may be some bugs introduced if there are initially two controllers attached and one controller is disconnected part way through the session
In this case, instead of seeing just one controller disconnected, VRDisplayClient would think that the wrong controller disconnected and the one that did disconnect become the one that was stayed connected
Take a look at
void VRDisplayClient::FireGamepadEvents() {
Essentially, the VRSession children populate the available controllers in mControllerState without worrying about having gaps, while the more complex logic happens in the content process before its exposed to the DOM, to fire the needed events
Perhaps the issue is actually in VRDisplayClient.. Or perhaps it's an invalid assumption by the web page that there will always be a controller with the first index?
Assignee | ||
Comment 3•6 years ago
|
||
(In reply to :kip (Kearwood Gilbert) from comment #2)
We might want to check some things before landing this...
The empty gaps in mControllerState were by design
VRDisplayClient expects a controller to never change from one index to another.
There may be some bugs introduced if there are initially two controllers attached and one controller is disconnected part way through the session
In this case, instead of seeing just one controller disconnected, VRDisplayClient would think that the wrong controller disconnected and the one that did disconnect become the one that was stayed connected
Take a look at
void VRDisplayClient::FireGamepadEvents() {
Essentially, the VRSession children populate the available controllers in mControllerState without worrying about having gaps, while the more complex logic happens in the content process before its exposed to the DOM, to fire the needed events
Perhaps the issue is actually in VRDisplayClient.. Or perhaps it's an invalid assumption by the web page that there will always be a controller with the first index?
I think the real problem is controller's button was using stateIndex
to access its hand array, https://dxr.mozilla.org/mozilla-central/rev/329340b1608d79266217ae37b098fa270f444c89/gfx/vr/service/OpenVRSession.cpp#1403. I have given an update on my patch, please help review it again.
Comment 5•6 years ago
|
||
bugherder |
Description
•