Closed Bug 1535870 Opened 6 years ago Closed 6 years ago

Prototype running Desktop Firefox with OpenVR

Categories

(Core :: WebVR, enhancement)

enhancement
Not set
normal

Tracking

()

RESOLVED WONTFIX

People

(Reporter: thomasmo, Assigned: thomasmo)

References

Details

Attachments

(1 obsolete file)

No description provided.
Assignee: nobody → thomasmo

Some refactoring for initial OpenVR pointer/mouse support
INPUT DOES NOT WORK

fixes after rebase

Hack prototype for virtual keyboard input

  • moves overlay creation to main proc
  • enables out-of-proc drawing/presenting for gpu proc
    • adds -ovroverlay cmd param to pass overlay handle
  • created process singleton for OpenVRHelper to make it easier
    to hack in the prototype
  • OpenVRHelper holds pointer to nsWindow to dispatch key events
    • note: requires mouse movement to pump events from SteamVR
      until mechanism for async operations is used

Build fixes after rebase

Fix merge error that prevented cross-proc rendering

Changes to experiment with Mouse input

  • set RECT to map controller input to desktop window coordinates
  • try to dispatch mouse event
  • try to PostMessage to HWND

Fix crash in SetDrawPID when OpenVRHelper is disabled

Use DispatchMouseEvent instead of PostMessage

Introduce new thread to poll OpenVR for input

  • Removes the hack that processed OpenVR overlay input messages by piggy backing
    on WM_MOUSEMOVE
  • Uses vector + critsec to coordinate passing OpenVR input messages from
    background thread to be processed on UI thread
  • Also adds support for MouseMove events

Show virtual keyboard when focused on a control

This change makes the appropriate call to show the virtual keyboard via OpenVR
whenever the caret is drawn in the window.
Content processes do not have the permissions to acces OpenVR, so an IPC call is
made to the Main proc from child content procs to show the keyboard.

Add support for vertical scrolling

This change maps the OpenVR scroll event from a VR controller to the MOUSEWHEEL
event to enable scrolling in a window.
There are multiple code paths to enable this behavior; this changes uses the
SynthesizeEvent for now. More details in the comment of
OpenVRHelper::ProcessOverlayEvents.

Increase the size of the overlay

This change makes the overlay presentation bigger. Combined with the pref
layout.css.devPixelsPerPx = 2,
this makes for easier, less precise interaction by the controller until a VR-
specific UI is available.

Only use the first SwapChain to present to OpenVR

This change stops the bug where other swapchains (i.e., modal dialogs) instead
of instead of the main window's swapchain are unconditionally presented in the
OpenVR overlay.

Fix after rebase

Blocks: 1542889
Attachment #9051539 - Attachment is obsolete: true
Status: NEW → RESOLVED
Closed: 6 years ago
Resolution: --- → WONTFIX
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: