libretro / libretro/RetroArch

Fix Phantom Input From Disabling an Input Device

Open
#11,098 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

input platform: windows
Dominant language
C
Stars
14.1k
Forks
2.2k
Avg merge
7h 35m
Merged PRs (30d)
51

Description

Description

When a controller is plugged in and the user changes the player 1 device index to 'Disabled', the screen will constantly scroll upwards, accelerating as though the user is holding the up direction, until Retroarch is restarted and the device index is changed either through the menu or a config file edit.

It is very easy to inadvertantly disable an input device while cycling through the device options, leading to this issue.

Expected behavior

When an input device used to control is disabled then it should be disabled, and all input "gathered" from it should be ignored.

Actual behavior

When an input device used to control is disabled, it seems to hold onto a phantom input, scrolling the selection upwards, rendering the program near-unusable until a restart.

Steps to reproduce the bug
  1. Plug in a controller
  2. Navigate to Player 1 controls
  3. Change the device index to 'Disabled'
Bisect Results

This occurs as far back as stable 1.7.5, but with one nuance: changing the device index from the default, 'Xinput Controller', to the unconfigured 'Hori Mini Wired Gamepad' results in the same permenant scrolling upwards, and setting it to 'Disabled' removes the phantom input.

Version/Commit
  • RetroArch: 1.8.9
Environment information
  • OS: Windows 10, latest mandatory updates as July 28, 2020.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Reproduce the issue with a controller by changing the Player 1 device index to Disabled, then trace RetroArch's input handling for disabled devices. Done means input gathered from the disabled device is ignored, selection no longer scrolls upward, and no restart is needed.

Written by the indexing model from the issue text.

Assessment

Tech stack
c
Domain
frontend
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.