зеркало из https://github.com/mozilla/gecko-dev.git
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:
Родитель
c3067cb5c7
Коммит
200e2d6504
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче