mirror of
https://github.com/libsdl-org/SDL.git
synced 2026-05-08 17:04:24 +02:00
Don't report 10% battery for Xbox controllers using XInput
(cherry picked from commit 386f198622)
This commit is contained in:
@@ -1976,20 +1976,24 @@ static void RAWINPUT_UpdateOtherAPIs(SDL_Joystick *joystick)
|
||||
state = SDL_POWERSTATE_ON_BATTERY;
|
||||
break;
|
||||
}
|
||||
switch (battery_info->BatteryLevel) {
|
||||
case BATTERY_LEVEL_EMPTY:
|
||||
percent = 10;
|
||||
break;
|
||||
case BATTERY_LEVEL_LOW:
|
||||
percent = 40;
|
||||
break;
|
||||
case BATTERY_LEVEL_MEDIUM:
|
||||
percent = 70;
|
||||
break;
|
||||
default:
|
||||
case BATTERY_LEVEL_FULL:
|
||||
percent = 100;
|
||||
break;
|
||||
if (state == SDL_POWERSTATE_ON_BATTERY || SDL_POWERSTATE_CHARGING) {
|
||||
switch (battery_info->BatteryLevel) {
|
||||
case BATTERY_LEVEL_EMPTY:
|
||||
percent = 10;
|
||||
break;
|
||||
case BATTERY_LEVEL_LOW:
|
||||
percent = 40;
|
||||
break;
|
||||
case BATTERY_LEVEL_MEDIUM:
|
||||
percent = 70;
|
||||
break;
|
||||
default:
|
||||
case BATTERY_LEVEL_FULL:
|
||||
percent = 100;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
percent = -1;
|
||||
}
|
||||
SDL_SendJoystickPowerInfo(joystick, state, percent);
|
||||
}
|
||||
|
||||
@@ -300,20 +300,24 @@ static void UpdateXInputJoystickBatteryInformation(SDL_Joystick *joystick, XINPU
|
||||
state = SDL_POWERSTATE_ON_BATTERY;
|
||||
break;
|
||||
}
|
||||
switch (pBatteryInformation->BatteryLevel) {
|
||||
case BATTERY_LEVEL_EMPTY:
|
||||
percent = 10;
|
||||
break;
|
||||
case BATTERY_LEVEL_LOW:
|
||||
percent = 40;
|
||||
break;
|
||||
case BATTERY_LEVEL_MEDIUM:
|
||||
percent = 70;
|
||||
break;
|
||||
default:
|
||||
case BATTERY_LEVEL_FULL:
|
||||
percent = 100;
|
||||
break;
|
||||
if (state == SDL_POWERSTATE_ON_BATTERY || state == SDL_POWERSTATE_CHARGING) {
|
||||
switch (pBatteryInformation->BatteryLevel) {
|
||||
case BATTERY_LEVEL_EMPTY:
|
||||
percent = 10;
|
||||
break;
|
||||
case BATTERY_LEVEL_LOW:
|
||||
percent = 40;
|
||||
break;
|
||||
case BATTERY_LEVEL_MEDIUM:
|
||||
percent = 70;
|
||||
break;
|
||||
default:
|
||||
case BATTERY_LEVEL_FULL:
|
||||
percent = 100;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
percent = -1;
|
||||
}
|
||||
SDL_SendJoystickPowerInfo(joystick, state, percent);
|
||||
}
|
||||
@@ -391,6 +395,7 @@ void SDL_XINPUT_JoystickUpdate(SDL_Joystick *joystick)
|
||||
return;
|
||||
}
|
||||
|
||||
// FIXME: This does end up making a device ioctl() to query data, we shouldn't do this every update.
|
||||
SDL_zero(XBatteryInformation);
|
||||
if (XINPUTGETBATTERYINFORMATION) {
|
||||
result = XINPUTGETBATTERYINFORMATION(joystick->hwdata->userid, BATTERY_DEVTYPE_GAMEPAD, &XBatteryInformation);
|
||||
|
||||
Reference in New Issue
Block a user