/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- * vim: sw=2 ts=8 et : */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ include LayersSurfaces; include protocol PVRLayer; include LayersMessages; include GamepadEventTypes; include "VRMessageUtils.h"; using struct mozilla::gfx::VRFieldOfView from "gfxVR.h"; using struct mozilla::gfx::VRDisplayInfo from "gfxVR.h"; using struct mozilla::gfx::VRSensorUpdate from "gfxVR.h"; using struct mozilla::gfx::VRHMDSensorState from "gfxVR.h"; using struct mozilla::gfx::VRControllerInfo from "gfxVR.h"; using struct mozilla::gfx::VRSubmitFrameResultInfo from "gfxVR.h"; using mozilla::layers::LayersBackend from "mozilla/layers/LayersTypes.h"; using mozilla::layers::TextureFlags from "mozilla/layers/CompositorTypes.h"; namespace mozilla { namespace gfx { /** * The PVRManager protocol is used to enable communication of VR display * enumeration and sensor state between the compositor thread and * content threads/processes. */ sync protocol PVRManager { manages PVRLayer; parent: async PVRLayer(uint32_t aDisplayID, uint32_t aGroup); // (Re)Enumerate VR Displays. An updated list of VR displays will be returned // asynchronously to children via UpdateDisplayInfo. async RefreshDisplays(); // Reset the sensor of the display identified by aDisplayID so that the current // sensor state is the "Zero" position. async ResetSensor(uint32_t aDisplayID); async SetGroupMask(uint32_t aDisplayID, uint32_t aGroupMask); async SetHaveEventListener(bool aHaveEventListener); async ControllerListenerAdded(); async ControllerListenerRemoved(); async VibrateHaptic(uint32_t aControllerIdx, uint32_t aHapticIndex, double aIntensity, double aDuration, uint32_t aPromiseID); async StopVibrateHaptic(uint32_t aControllerIdx); async CreateVRTestSystem(); async CreateVRServiceTestDisplay(nsCString aID, uint32_t aPromiseID); async CreateVRServiceTestController(nsCString aID, uint32_t aPromiseID); async SetDisplayInfoToMockDisplay(uint32_t aDeviceID, VRDisplayInfo aDisplayInfo); async SetSensorStateToMockDisplay(uint32_t aDeviceID, VRHMDSensorState aSensorState); async NewButtonEventToMockController(uint32_t aDeviceID, long aButton, bool aPressed); async NewAxisMoveEventToMockController(uint32_t aDeviceID, long aAxis, double aValue); async NewPoseMoveToMockController(uint32_t aDeviceID, GamepadPoseState aPose); child: // Notify children of updated VR display enumeration and details. This will // be sent to all children when the parent receives RefreshDisplays, even // if no changes have been detected. This ensures that Promises exposed // through DOM calls are always resolved. async UpdateDisplayInfo(VRDisplayInfo[] aDisplayUpdates); async DispatchSubmitFrameResult(uint32_t aDisplayID, VRSubmitFrameResultInfo aResult); async GamepadUpdate(GamepadChangeEvent aGamepadEvent); async ReplyGamepadVibrateHaptic(uint32_t aPromiseID); async ReplyCreateVRServiceTestDisplay(nsCString aID, uint32_t aPromiseID, uint32_t aDeviceID); async ReplyCreateVRServiceTestController(nsCString aID, uint32_t aPromiseID, uint32_t aDeviceID); async __delete__(); }; } // gfx } // mozilla