Bug 1350682 - Call VRManagerChild getter when need it at GamepadManager instead of keeping it; r?lenzak, kip
MozReview-Commit-ID: 2kbPEJ09DOP
--- a/dom/gamepad/GamepadManager.cpp
+++ b/dom/gamepad/GamepadManager.cpp
@@ -108,18 +108,18 @@ GamepadManager::StopMonitoring()
{
for (uint32_t i = 0; i < mChannelChildren.Length(); ++i) {
mChannelChildren[i]->SendGamepadListenerRemoved();
}
mChannelChildren.Clear();
mGamepads.Clear();
#if defined(XP_WIN) || defined(XP_MACOSX) || defined(XP_LINUX)
- mVRChannelChild = gfx::VRManagerChild::Get();
- mVRChannelChild->SendControllerListenerRemoved();
+ gfx::VRManagerChild* vm = gfx::VRManagerChild::Get();
+ vm->SendControllerListenerRemoved();
#endif
}
void
GamepadManager::BeginShutdown()
{
mShuttingDown = true;
StopMonitoring();
@@ -676,20 +676,21 @@ GamepadManager::VibrateHaptic(uint32_t a
RefPtr<Promise> promise = Promise::Create(aGlobal, aRv);
if (NS_WARN_IF(aRv.Failed())) {
aRv.Throw(NS_ERROR_FAILURE);
return nullptr;
}
if (aControllerIdx >= VR_GAMEPAD_IDX_OFFSET) {
uint32_t index = aControllerIdx - VR_GAMEPAD_IDX_OFFSET;
- mVRChannelChild->AddPromise(mPromiseID, promise);
- mVRChannelChild->SendVibrateHaptic(index, aHapticIndex,
- aIntensity, aDuration,
- mPromiseID);
+ gfx::VRManagerChild* vm = gfx::VRManagerChild::Get();
+ vm->AddPromise(mPromiseID, promise);
+ vm->SendVibrateHaptic(index, aHapticIndex,
+ aIntensity, aDuration,
+ mPromiseID);
} else {
for (const auto& channelChild: mChannelChildren) {
channelChild->AddPromise(mPromiseID, promise);
channelChild->SendVibrateHaptic(aControllerIdx, aHapticIndex,
aIntensity, aDuration,
mPromiseID);
}
}
@@ -700,17 +701,18 @@ GamepadManager::VibrateHaptic(uint32_t a
void
GamepadManager::StopHaptics()
{
for (auto iter = mGamepads.Iter(); !iter.Done(); iter.Next()) {
const uint32_t gamepadIndex = iter.UserData()->HashKey();
if (gamepadIndex >= VR_GAMEPAD_IDX_OFFSET) {
const uint32_t index = gamepadIndex - VR_GAMEPAD_IDX_OFFSET;
- mVRChannelChild->SendStopVibrateHaptic(index);
+ gfx::VRManagerChild* vm = gfx::VRManagerChild::Get();
+ vm->SendStopVibrateHaptic(index);
} else {
for (auto& channelChild : mChannelChildren) {
channelChild->SendStopVibrateHaptic(gamepadIndex);
}
}
}
}
@@ -728,18 +730,18 @@ GamepadManager::ActorCreated(PBackground
}
MOZ_ASSERT(initedChild == child);
child->SendGamepadListenerAdded();
mChannelChildren.AppendElement(child);
#if defined(XP_WIN) || defined(XP_MACOSX) || defined(XP_LINUX)
// Construct VRManagerChannel and ask adding the connected
// VR controllers to GamepadManager
- mVRChannelChild = gfx::VRManagerChild::Get();
- mVRChannelChild->SendControllerListenerAdded();
+ gfx::VRManagerChild* vm = gfx::VRManagerChild::Get();
+ vm->SendControllerListenerAdded();
#endif
}
//Override nsIIPCBackgroundChildCreateCallback
void
GamepadManager::ActorFailed()
{
MOZ_CRASH("Gamepad IPC actor create failed!");
--- a/dom/gamepad/GamepadManager.h
+++ b/dom/gamepad/GamepadManager.h
@@ -126,17 +126,16 @@ class GamepadManager final : public nsIO
// true when shutdown has begun
bool mShuttingDown;
// Gamepad IPDL child
// This pointer is only used by this singleton instance and
// will be destroyed during the IPDL shutdown chain, so we
// don't need to refcount it here.
nsTArray<GamepadEventChannelChild *> mChannelChildren;
- gfx::VRManagerChild* mVRChannelChild;
private:
nsresult Init();
bool MaybeWindowHasSeenGamepad(nsGlobalWindow* aWindow, uint32_t aIndex);
// Returns true if we have already sent data from this gamepad
// to this window. This should only return true if the user