CNA-BUG-173: GamerPresence maps a presence mode to its display string through an alphabetically ordered table indexed by the enum ordinal
Evidence basis: source-verified at the pinned commit; tests exist (not executed for this page). Claims on this page were checked by reading the CNA source at commit 009d40f5; unless a sentence says otherwise, nothing here was built or executed. Nothing on this page was executed unless the Evidence section says so.
setPresenceModeProperty selects presenceModeStrings_[static_cast<size_t>(mode)], but the 60-entry table is sorted by name while GamerPresenceMode follows XNA's declaration order, so None maps to 'Arcade Mode'; the string is not yet observable.
- Identifier
CNA-BUG-173- Category
- Bug
- Subsystem
- Networking & gamer services
- Status
- Open
- Verified against
- CNA
009d40f5(009d40f5dd085c4e674d3479675fac84b12b3e0a) - Severity
- Low (a triage suggestion, not a project priority)
- Evidence basis
- Source-verified: read at TARGET, not executed
- Tests touching this area
- Yes: see Current tests
- Affected contract
- GamerPresence::setPresenceModeProperty(GamerPresenceMode) and GamerPresence::SetPresenceModeStringEXT(const std::string&)
Expected behaviour
The string chosen for a GamerPresenceMode should be that mode's display text (SinglePlayer → “Single Player”).
Actual behaviour at TARGET
GamerPresence.cpp defines presenceModeStrings_ in alphabetical order (“Arcade Mode”, “At Menu”, “Battling Boss”, …), while GamerPresenceMode.hpp declares None, SinglePlayer, Multiplayer, LocalCoOp, … in XNA's order (pinned by GamerServicesEnumsTests.cpp). setPresenceModeProperty indexes the table by the enum value and passes the result to SetPresenceModeStringEXT. That method is empty and presence_ is private, so the wrong string is invisible today; it will surface as soon as presence is published. Whether FNA shares the ordering was not checked.
Source locations
modules/gamer-services/src/Xna/GamerPresence.cpp— presenceModeStrings_ (alphabetical) and setPresenceModeProperty (indexed by ordinal)modules/gamer-services/include/Microsoft/Xna/Framework/GamerServices/GamerPresenceMode.hpp— GamerPresenceMode declaration order
Evidence
Checked by reading at 009d40f5; not executed. Latent: no current public behaviour exposes the selected string.
Focused reproduction
No focused reproduction is known. Nothing has been invented here; the evidence above is what exists.
Current tests
GamerServicesEnumsTests.cpp pins the enum ordinals; no test checks the mode-to-string mapping.
Regression test
A table test mapping each GamerPresenceMode to its expected string (a switch or a table ordered like the enum).
Blast radius
None today; any future presence publisher (CNA-GAP-052).
Workaround
No workaround is known.
Related pages
The same subject is explained at several altitudes. These are the neighbouring pages at each one.
- Internals
- Gamer services internals: gamers
- Known issues
- Bug index