diff options
Diffstat (limited to 'gfx/vr/ipc/VRManagerParent.cpp')
-rw-r--r-- | gfx/vr/ipc/VRManagerParent.cpp | 332 |
1 files changed, 0 insertions, 332 deletions
diff --git a/gfx/vr/ipc/VRManagerParent.cpp b/gfx/vr/ipc/VRManagerParent.cpp deleted file mode 100644 index 725d7dd1d..000000000 --- a/gfx/vr/ipc/VRManagerParent.cpp +++ /dev/null @@ -1,332 +0,0 @@ -/* -*- 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 "VRManagerParent.h" -#include "ipc/VRLayerParent.h" -#include "mozilla/gfx/PVRManagerParent.h" -#include "mozilla/ipc/ProtocolTypes.h" -#include "mozilla/ipc/ProtocolUtils.h" // for IToplevelProtocol -#include "mozilla/TimeStamp.h" // for TimeStamp -#include "mozilla/layers/CompositorThread.h" -#include "mozilla/Unused.h" -#include "VRManager.h" - -namespace mozilla { -using namespace layers; -namespace gfx { - -VRManagerParent::VRManagerParent(ProcessId aChildProcessId, bool aIsContentChild) - : HostIPCAllocator() - , mHaveEventListener(false) - , mIsContentChild(aIsContentChild) -{ - MOZ_COUNT_CTOR(VRManagerParent); - MOZ_ASSERT(NS_IsMainThread()); - - SetOtherProcessId(aChildProcessId); -} - -VRManagerParent::~VRManagerParent() -{ - MOZ_ASSERT(!mVRManagerHolder); - - MOZ_COUNT_DTOR(VRManagerParent); -} - -PTextureParent* -VRManagerParent::AllocPTextureParent(const SurfaceDescriptor& aSharedData, - const LayersBackend& aLayersBackend, - const TextureFlags& aFlags, - const uint64_t& aSerial) -{ - return layers::TextureHost::CreateIPDLActor(this, aSharedData, aLayersBackend, aFlags, aSerial); -} - -bool -VRManagerParent::DeallocPTextureParent(PTextureParent* actor) -{ - return layers::TextureHost::DestroyIPDLActor(actor); -} - -PVRLayerParent* -VRManagerParent::AllocPVRLayerParent(const uint32_t& aDisplayID, - const float& aLeftEyeX, - const float& aLeftEyeY, - const float& aLeftEyeWidth, - const float& aLeftEyeHeight, - const float& aRightEyeX, - const float& aRightEyeY, - const float& aRightEyeWidth, - const float& aRightEyeHeight) -{ - RefPtr<VRLayerParent> layer; - layer = new VRLayerParent(aDisplayID, - Rect(aLeftEyeX, aLeftEyeY, aLeftEyeWidth, aLeftEyeHeight), - Rect(aRightEyeX, aRightEyeY, aRightEyeWidth, aRightEyeHeight)); - VRManager* vm = VRManager::Get(); - RefPtr<gfx::VRDisplayHost> display = vm->GetDisplay(aDisplayID); - if (display) { - display->AddLayer(layer); - } - return layer.forget().take(); -} - -bool -VRManagerParent::DeallocPVRLayerParent(PVRLayerParent* actor) -{ - gfx::VRLayerParent* layer = static_cast<gfx::VRLayerParent*>(actor); - - VRManager* vm = VRManager::Get(); - RefPtr<gfx::VRDisplayHost> display = vm->GetDisplay(layer->GetDisplayID()); - if (display) { - display->RemoveLayer(layer); - } - - delete actor; - return true; -} - -bool -VRManagerParent::AllocShmem(size_t aSize, - ipc::SharedMemory::SharedMemoryType aType, - ipc::Shmem* aShmem) -{ - return PVRManagerParent::AllocShmem(aSize, aType, aShmem); -} - -bool -VRManagerParent::AllocUnsafeShmem(size_t aSize, - ipc::SharedMemory::SharedMemoryType aType, - ipc::Shmem* aShmem) -{ - return PVRManagerParent::AllocUnsafeShmem(aSize, aType, aShmem); -} - -void -VRManagerParent::DeallocShmem(ipc::Shmem& aShmem) -{ - PVRManagerParent::DeallocShmem(aShmem); -} - -bool -VRManagerParent::IsSameProcess() const -{ - return OtherPid() == base::GetCurrentProcId(); -} - -void -VRManagerParent::NotifyNotUsed(PTextureParent* aTexture, uint64_t aTransactionId) -{ - MOZ_ASSERT_UNREACHABLE("unexpected to be called"); -} - -void -VRManagerParent::SendAsyncMessage(const InfallibleTArray<AsyncParentMessageData>& aMessage) -{ - MOZ_ASSERT_UNREACHABLE("unexpected to be called"); -} - -base::ProcessId -VRManagerParent::GetChildProcessId() -{ - return OtherPid(); -} - -void -VRManagerParent::RegisterWithManager() -{ - VRManager* vm = VRManager::Get(); - vm->AddVRManagerParent(this); - mVRManagerHolder = vm; -} - -void -VRManagerParent::UnregisterFromManager() -{ - VRManager* vm = VRManager::Get(); - vm->RemoveVRManagerParent(this); - mVRManagerHolder = nullptr; -} - -/* static */ bool -VRManagerParent::CreateForContent(Endpoint<PVRManagerParent>&& aEndpoint) -{ - MessageLoop* loop = layers::CompositorThreadHolder::Loop(); - - RefPtr<VRManagerParent> vmp = new VRManagerParent(aEndpoint.OtherPid(), true); - loop->PostTask(NewRunnableMethod<Endpoint<PVRManagerParent>&&>( - vmp, &VRManagerParent::Bind, Move(aEndpoint))); - - return true; -} - -void -VRManagerParent::Bind(Endpoint<PVRManagerParent>&& aEndpoint) -{ - if (!aEndpoint.Bind(this)) { - return; - } - mSelfRef = this; - - RegisterWithManager(); -} - -/*static*/ void -VRManagerParent::RegisterVRManagerInCompositorThread(VRManagerParent* aVRManager) -{ - aVRManager->RegisterWithManager(); -} - -/*static*/ VRManagerParent* -VRManagerParent::CreateSameProcess() -{ - MessageLoop* loop = mozilla::layers::CompositorThreadHolder::Loop(); - RefPtr<VRManagerParent> vmp = new VRManagerParent(base::GetCurrentProcId(), false); - vmp->mCompositorThreadHolder = layers::CompositorThreadHolder::GetSingleton(); - vmp->mSelfRef = vmp; - loop->PostTask(NewRunnableFunction(RegisterVRManagerInCompositorThread, vmp.get())); - return vmp.get(); -} - -bool -VRManagerParent::CreateForGPUProcess(Endpoint<PVRManagerParent>&& aEndpoint) -{ - MessageLoop* loop = mozilla::layers::CompositorThreadHolder::Loop(); - - RefPtr<VRManagerParent> vmp = new VRManagerParent(aEndpoint.OtherPid(), false); - vmp->mCompositorThreadHolder = layers::CompositorThreadHolder::GetSingleton(); - loop->PostTask(NewRunnableMethod<Endpoint<PVRManagerParent>&&>( - vmp, &VRManagerParent::Bind, Move(aEndpoint))); - return true; -} - -void -VRManagerParent::DeferredDestroy() -{ - mCompositorThreadHolder = nullptr; - mSelfRef = nullptr; -} - -void -VRManagerParent::ActorDestroy(ActorDestroyReason why) -{ - UnregisterFromManager(); - MessageLoop::current()->PostTask(NewRunnableMethod(this, &VRManagerParent::DeferredDestroy)); -} - -void -VRManagerParent::OnChannelConnected(int32_t aPid) -{ - mCompositorThreadHolder = layers::CompositorThreadHolder::GetSingleton(); -} - -bool -VRManagerParent::RecvRefreshDisplays() -{ - // This is called to refresh the VR Displays for Navigator.GetVRDevices(). - // We must pass "true" to VRManager::RefreshVRDisplays() - // to ensure that the promise returned by Navigator.GetVRDevices - // can resolve even if there are no changes to the VR Displays. - VRManager* vm = VRManager::Get(); - vm->RefreshVRDisplays(true); - - return true; -} - -bool -VRManagerParent::RecvGetDisplays(nsTArray<VRDisplayInfo> *aDisplays) -{ - VRManager* vm = VRManager::Get(); - vm->GetVRDisplayInfo(*aDisplays); - return true; -} - -bool -VRManagerParent::RecvResetSensor(const uint32_t& aDisplayID) -{ - VRManager* vm = VRManager::Get(); - RefPtr<gfx::VRDisplayHost> display = vm->GetDisplay(aDisplayID); - if (display != nullptr) { - display->ZeroSensor(); - } - - return true; -} - -bool -VRManagerParent::RecvGetSensorState(const uint32_t& aDisplayID, VRHMDSensorState* aState) -{ - VRManager* vm = VRManager::Get(); - RefPtr<gfx::VRDisplayHost> display = vm->GetDisplay(aDisplayID); - if (display != nullptr) { - *aState = display->GetSensorState(); - } - return true; -} - -bool -VRManagerParent::RecvGetImmediateSensorState(const uint32_t& aDisplayID, VRHMDSensorState* aState) -{ - VRManager* vm = VRManager::Get(); - RefPtr<gfx::VRDisplayHost> display = vm->GetDisplay(aDisplayID); - if (display != nullptr) { - *aState = display->GetImmediateSensorState(); - } - return true; -} - -bool -VRManagerParent::HaveEventListener() -{ - return mHaveEventListener; -} - -bool -VRManagerParent::RecvSetHaveEventListener(const bool& aHaveEventListener) -{ - mHaveEventListener = aHaveEventListener; - return true; -} - -bool -VRManagerParent::RecvControllerListenerAdded() -{ - VRManager* vm = VRManager::Get(); - // Ask the connected gamepads to be added to GamepadManager - vm->ScanForDevices(); - - return true; -} - -bool -VRManagerParent::RecvControllerListenerRemoved() -{ - return true; -} - -bool -VRManagerParent::RecvGetControllers(nsTArray<VRControllerInfo> *aControllers) -{ - VRManager* vm = VRManager::Get(); - vm->GetVRControllerInfo(*aControllers); - return true; -} - -bool -VRManagerParent::SendGamepadUpdate(const GamepadChangeEvent& aGamepadEvent) -{ - // GamepadManager only exists at the content process - // or the same process in non-e10s mode. - if (mIsContentChild || IsSameProcess()) { - return PVRManagerParent::SendGamepadUpdate(aGamepadEvent); - } else { - return true; - } -} - -} // namespace gfx -} // namespace mozilla |