New issue
Advanced search Search tips

Issue 775270 link

Starred by 2 users

Issue metadata

Status: Fixed
Owner:
Closed: Oct 2017
Components:
EstimatedDays: ----
NextAction: ----
OS: Mac
Pri: 3
Type: Bug



Sign in to add a comment

Only one "Made For iOS" gamepad usable at once in Chrome

Project Member Reported by mattreynolds@chromium.org, Oct 16 2017

Issue description

Chrome Version: 61.0.3163.100 (Official Build) (64-bit)
OS: OS X 10.12.6

What steps will reproduce the problem?
(0) Connect a "Made for iOS" (MFi) gamepad to a Mac
(1) Open html5gamepad.com in Chrome
(2) Press a button on the gamepad. The gamepad should now be visible in the HTML5 Gamepad Tester.
(3) Connect a second MFi gamepad.

What is the expected result?

Both gamepads should be shown, and button/axis inputs from either should be reflected in the Gamepad Tester.

What happens instead?

I don't have a second MFi device yet, but it looks like only one will be usable due to the way player_index is assigned.
 
By default, the playerIndex attribute of a GCController is set to GCControllerPlayerIndexUnset (-1). The application can set this to a value between GCControllerPlayerIndex1 and GCControllerPlayerIndex4, which lights the appropriate LEDs on the gamepad.

GameControllerDataFetcher does not set playerIndex, so all connected gamepads will have the default "Unset" value. This is fine; GameController does not require that gamepads have unique values for playerIndex. However, Chrome uses playerIndex to differentiate gamepads detected by GameControllerDataFetcher. Since all gamepads have the same playerIndex, only one gamepad is accessible and the rest are shadowed.

To fix, GameControllerDataFetcher should ensure that all connected gamepads are assigned a unique index. It's not necessary that this correspond to playerIndex, but it would be nice if it did so we can set the LEDs correctly.
Owner: mattreynolds@chromium.org
Status: Started (was: Available)
Project Member

Comment 3 by bugdroid1@chromium.org, Oct 17 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/d81a48d91c135c6a294a7fbf4a29217b438e8c47

commit d81a48d91c135c6a294a7fbf4a29217b438e8c47
Author: Matt Reynolds <mattreynolds@google.com>
Date: Tue Oct 17 18:52:53 2017

Allow Chrome on Mac to recognize multiple MFi gamepads

Chrome for Mac recognizes "Made for iOS" (MFi) gamepads enumerated
by the GameController framework. When multiple such devices are
connected at once, Chrome fails to properly distinguish them.

GCController exposes a playerIndex field that defaults to the value
GCControllerPlayerIndexUnset (-1). The application may set this field
to a value between 0 and 3 to signal which LEDs should be lit on the
gamepad. Chrome also uses this field to distinguish gamepads, but does
not set the index to a unique value. This causes the first-connected
gamepad to shadow any other connected gamepads.

This CL ensures each connected MFi gamepad is assigned a unique player
index up to the OS-defined limit of four.

BUG= 775270 

Change-Id: Ic60efe4a660f3d6c9ca2f840d059f23c78a6fa6c
Reviewed-on: https://chromium-review.googlesource.com/722442
Reviewed-by: Brandon Jones <bajones@chromium.org>
Commit-Queue: Matt Reynolds <mattreynolds@chromium.org>
Cr-Commit-Position: refs/heads/master@{#509464}
[modify] https://crrev.com/d81a48d91c135c6a294a7fbf4a29217b438e8c47/device/gamepad/game_controller_data_fetcher_mac.h
[modify] https://crrev.com/d81a48d91c135c6a294a7fbf4a29217b438e8c47/device/gamepad/game_controller_data_fetcher_mac.mm

Project Member

Comment 4 by bugdroid1@chromium.org, Oct 17 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/3627230aca1ff87baf2b3ab2ca3057f4dce361eb

commit 3627230aca1ff87baf2b3ab2ca3057f4dce361eb
Author: Daniel Murphy <dmurph@chromium.org>
Date: Tue Oct 17 19:13:05 2017

Revert "Allow Chrome on Mac to recognize multiple MFi gamepads"

This reverts commit d81a48d91c135c6a294a7fbf4a29217b438e8c47.

Reason for revert: failing mac builders
Bug:  775614 

Original change's description:
> Allow Chrome on Mac to recognize multiple MFi gamepads
> 
> Chrome for Mac recognizes "Made for iOS" (MFi) gamepads enumerated
> by the GameController framework. When multiple such devices are
> connected at once, Chrome fails to properly distinguish them.
> 
> GCController exposes a playerIndex field that defaults to the value
> GCControllerPlayerIndexUnset (-1). The application may set this field
> to a value between 0 and 3 to signal which LEDs should be lit on the
> gamepad. Chrome also uses this field to distinguish gamepads, but does
> not set the index to a unique value. This causes the first-connected
> gamepad to shadow any other connected gamepads.
> 
> This CL ensures each connected MFi gamepad is assigned a unique player
> index up to the OS-defined limit of four.
> 
> BUG= 775270 
> 
> Change-Id: Ic60efe4a660f3d6c9ca2f840d059f23c78a6fa6c
> Reviewed-on: https://chromium-review.googlesource.com/722442
> Reviewed-by: Brandon Jones <bajones@chromium.org>
> Commit-Queue: Matt Reynolds <mattreynolds@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#509464}

TBR=bajones@chromium.org,mattreynolds@chromium.org

Change-Id: I4351f37277bf939055d3d1b0b123a3f9400c9043
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug:  775270 
Reviewed-on: https://chromium-review.googlesource.com/723805
Reviewed-by: Daniel Murphy <dmurph@chromium.org>
Commit-Queue: Daniel Murphy <dmurph@chromium.org>
Cr-Commit-Position: refs/heads/master@{#509474}
[modify] https://crrev.com/3627230aca1ff87baf2b3ab2ca3057f4dce361eb/device/gamepad/game_controller_data_fetcher_mac.h
[modify] https://crrev.com/3627230aca1ff87baf2b3ab2ca3057f4dce361eb/device/gamepad/game_controller_data_fetcher_mac.mm

Project Member

Comment 5 by bugdroid1@chromium.org, Oct 17 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/f3f5e27db16be55caf642b2274f8cfe6eb38e4f4

commit f3f5e27db16be55caf642b2274f8cfe6eb38e4f4
Author: Matt Reynolds <mattreynolds@google.com>
Date: Tue Oct 17 21:15:02 2017

Allow Chrome on Mac to recognize multiple MFi gamepads

Chrome for Mac recognizes "Made for iOS" (MFi) gamepads enumerated
by the GameController framework. When multiple such devices are
connected at once, Chrome fails to properly distinguish them.

GCController exposes a playerIndex field that defaults to the value
GCControllerPlayerIndexUnset (-1). The application may set this field
to a value between 0 and 3 to signal which LEDs should be lit on the
gamepad. Chrome also uses this field to distinguish gamepads, but does
not set the index to a unique value. This causes the first-connected
gamepad to shadow any other connected gamepads.

This CL ensures each connected MFi gamepad is assigned a unique player
index up to the OS-defined limit of four.

BUG= 775270 

Change-Id: Ieb852cadc5ff36f94aa1003de3f2e13538114661
Reviewed-on: https://chromium-review.googlesource.com/723852
Reviewed-by: Brandon Jones <bajones@chromium.org>
Commit-Queue: Matt Reynolds <mattreynolds@chromium.org>
Cr-Commit-Position: refs/heads/master@{#509533}
[modify] https://crrev.com/f3f5e27db16be55caf642b2274f8cfe6eb38e4f4/device/gamepad/game_controller_data_fetcher_mac.h
[modify] https://crrev.com/f3f5e27db16be55caf642b2274f8cfe6eb38e4f4/device/gamepad/game_controller_data_fetcher_mac.mm

Project Member

Comment 6 by bugdroid1@chromium.org, Oct 17 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/f3fda87e68cdaaf5f54edbc370635ae9c9bad74f

commit f3fda87e68cdaaf5f54edbc370635ae9c9bad74f
Author: Findit <findit-for-me@appspot.gserviceaccount.com>
Date: Tue Oct 17 21:42:27 2017

Revert "Allow Chrome on Mac to recognize multiple MFi gamepads"

This reverts commit f3f5e27db16be55caf642b2274f8cfe6eb38e4f4.

Reason for revert:

Findit (https://goo.gl/kROfz5) identified CL at revision 509533 as the
culprit for failures in the build cycles as shown on:
https://findit-for-me.appspot.com/waterfall/culprit?key=ag9zfmZpbmRpdC1mb3ItbWVyRAsSDVdmU3VzcGVjdGVkQ0wiMWNocm9taXVtL2YzZjVlMjdkYjE2YmU1NWNhZjY0MmIyMjc0ZjhjZmU2ZWIzOGU0ZjQM

Sample Failed Build: https://ci.chromium.org/buildbot/chromium.webkit/WebKit%20Mac%20Builder%20%28dbg%29/218396

Original change's description:
> Allow Chrome on Mac to recognize multiple MFi gamepads
> 
> Chrome for Mac recognizes "Made for iOS" (MFi) gamepads enumerated
> by the GameController framework. When multiple such devices are
> connected at once, Chrome fails to properly distinguish them.
> 
> GCController exposes a playerIndex field that defaults to the value
> GCControllerPlayerIndexUnset (-1). The application may set this field
> to a value between 0 and 3 to signal which LEDs should be lit on the
> gamepad. Chrome also uses this field to distinguish gamepads, but does
> not set the index to a unique value. This causes the first-connected
> gamepad to shadow any other connected gamepads.
> 
> This CL ensures each connected MFi gamepad is assigned a unique player
> index up to the OS-defined limit of four.
> 
> BUG= 775270 
> 
> Change-Id: Ieb852cadc5ff36f94aa1003de3f2e13538114661
> Reviewed-on: https://chromium-review.googlesource.com/723852
> Reviewed-by: Brandon Jones <bajones@chromium.org>
> Commit-Queue: Matt Reynolds <mattreynolds@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#509533}

No-Presubmit: true
No-Tree-Checks: true
No-Try: true
BUG= 775270 

Change-Id: Ie8a0af7a186753a385d138080ddb70815d992ae5
Reviewed-on: https://chromium-review.googlesource.com/724165
Cr-Commit-Position: refs/heads/master@{#509546}
[modify] https://crrev.com/f3fda87e68cdaaf5f54edbc370635ae9c9bad74f/device/gamepad/game_controller_data_fetcher_mac.h
[modify] https://crrev.com/f3fda87e68cdaaf5f54edbc370635ae9c9bad74f/device/gamepad/game_controller_data_fetcher_mac.mm

Project Member

Comment 7 by bugdroid1@chromium.org, Oct 18 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/81f233c15377743a2af5519f735562ef9cb7f9b8

commit 81f233c15377743a2af5519f735562ef9cb7f9b8
Author: Matt Reynolds <mattreynolds@google.com>
Date: Wed Oct 18 00:07:05 2017

Allow Chrome on Mac to recognize multiple MFi gamepads

Chrome for Mac recognizes "Made for iOS" (MFi) gamepads enumerated
by the GameController framework. When multiple such devices are
connected at once, Chrome fails to properly distinguish them.

GCController exposes a playerIndex field that defaults to the value
GCControllerPlayerIndexUnset (-1). The application may set this field
to a value between 0 and 3 to signal which LEDs should be lit on the
gamepad. Chrome also uses this field to distinguish gamepads, but does
not set the index to a unique value. This causes the first-connected
gamepad to shadow any other connected gamepads.

This CL ensures each connected MFi gamepad is assigned a unique player
index up to the OS-defined limit of four.

BUG= 775270 

Change-Id: Iaf038a910df8dc7eb2cee99d4d671a6c9ff6dba0
Reviewed-on: https://chromium-review.googlesource.com/724233
Commit-Queue: Matt Reynolds <mattreynolds@chromium.org>
Reviewed-by: Brandon Jones <bajones@chromium.org>
Cr-Commit-Position: refs/heads/master@{#509612}
[modify] https://crrev.com/81f233c15377743a2af5519f735562ef9cb7f9b8/device/gamepad/game_controller_data_fetcher_mac.h
[modify] https://crrev.com/81f233c15377743a2af5519f735562ef9cb7f9b8/device/gamepad/game_controller_data_fetcher_mac.mm

Status: Fixed (was: Started)

Sign in to add a comment