Bug 1626570 - Improve handling of copying arrays in dom/gamepad/. r=froydnj

Differential Revision: https://phabricator.services.mozilla.com/D73649
This commit is contained in:
Simon Giesecke 2020-05-11 08:20:52 +00:00
Родитель c3067cb5c7
Коммит 200e2d6504
3 изменённых файлов: 9 добавлений и 9 удалений

Просмотреть файл

@ -87,25 +87,25 @@ class Gamepad final : public nsISupports, public nsWrapperCache {
uint32_t HashKey() const { return mHashKey; }
void GetButtons(nsTArray<RefPtr<GamepadButton>>& aButtons) const {
aButtons = mButtons;
aButtons = mButtons.Clone();
}
void GetAxes(nsTArray<double>& aAxes) const { aAxes = mAxes; }
void GetAxes(nsTArray<double>& aAxes) const { aAxes = mAxes.Clone(); }
GamepadPose* GetPose() const { return mPose; }
void GetHapticActuators(
nsTArray<RefPtr<GamepadHapticActuator>>& aHapticActuators) const {
aHapticActuators = mHapticActuators;
aHapticActuators = mHapticActuators.Clone();
}
void GetLightIndicators(
nsTArray<RefPtr<GamepadLightIndicator>>& aLightIndicators) const {
aLightIndicators = mLightIndicators;
aLightIndicators = mLightIndicators.Clone();
}
void GetTouchEvents(nsTArray<RefPtr<GamepadTouch>>& aTouchEvents) const {
aTouchEvents = mTouchEvents;
aTouchEvents = mTouchEvents.Clone();
}
private:

Просмотреть файл

@ -298,7 +298,7 @@ void GamepadManager::NewConnectionEvent(uint32_t aIndex, bool aConnected) {
// Hold on to listeners in a separate array because firing events
// can mutate the mListeners array.
nsTArray<RefPtr<nsGlobalWindowInner>> listeners(mListeners);
nsTArray<RefPtr<nsGlobalWindowInner>> listeners(mListeners.Clone());
if (aConnected) {
for (uint32_t i = 0; i < listeners.Length(); i++) {
@ -479,7 +479,7 @@ void GamepadManager::Update(const GamepadChangeEvent& aEvent) {
// Hold on to listeners in a separate array because firing events
// can mutate the mListeners array.
nsTArray<RefPtr<nsGlobalWindowInner>> listeners(mListeners);
nsTArray<RefPtr<nsGlobalWindowInner>> listeners(mListeners.Clone());
for (uint32_t i = 0; i < listeners.Length(); i++) {
// Only send events to non-background windows

Просмотреть файл

@ -438,7 +438,7 @@ bool WindowsGamepadService::ScanForXInputDevices() {
"xinput", GamepadMappingType::Standard, GamepadHand::_empty,
kStandardGamepadButtons, kStandardGamepadAxes, 0, 0,
0); // TODO: Bug 680289, implement gamepad haptics for Windows.
mGamepads.AppendElement(gamepad);
mGamepads.AppendElement(std::move(gamepad));
}
return found;
@ -740,7 +740,7 @@ bool WindowsGamepadService::GetRawGamepad(HANDLE handle) {
}
}
mGamepads.AppendElement(gamepad);
mGamepads.AppendElement(std::move(gamepad));
return true;
}