From 0964c84d770fab316d9bee29a4e846faa808b46b Mon Sep 17 00:00:00 2001
From: meyraud705 <[EMAIL REDACTED]>
Date: Wed, 2 Feb 2022 11:21:32 +0100
Subject: [PATCH] Always use SDL_PrivateJoystickBatteryLevel to update battery
level
But do not use it for initialisation.
---
src/joystick/hidapi/SDL_hidapi_luna.c | 8 ++++----
src/joystick/hidapi/SDL_hidapi_ps4.c | 10 +++++-----
src/joystick/hidapi/SDL_hidapi_switch.c | 10 +++++-----
src/joystick/hidapi/SDL_hidapi_xbox360w.c | 8 ++++----
src/joystick/windows/SDL_rawinputjoystick.c | 2 +-
5 files changed, 19 insertions(+), 19 deletions(-)
diff --git a/src/joystick/hidapi/SDL_hidapi_luna.c b/src/joystick/hidapi/SDL_hidapi_luna.c
index ead55af34d5..bf497d224d1 100644
--- a/src/joystick/hidapi/SDL_hidapi_luna.c
+++ b/src/joystick/hidapi/SDL_hidapi_luna.c
@@ -267,16 +267,16 @@ HIDAPI_DriverLuna_HandleBluetoothStatePacket(SDL_Joystick *joystick, SDL_DriverL
/* Battery level report */
int level = data[1] * 100 / 0xFF;
if (level == 0) {
- joystick->epowerlevel = SDL_JOYSTICK_POWER_EMPTY;
+ SDL_PrivateJoystickBatteryLevel(joystick, SDL_JOYSTICK_POWER_EMPTY);
}
else if (level <= 20) {
- joystick->epowerlevel = SDL_JOYSTICK_POWER_LOW;
+ SDL_PrivateJoystickBatteryLevel(joystick, SDL_JOYSTICK_POWER_LOW);
}
else if (level <= 70) {
- joystick->epowerlevel = SDL_JOYSTICK_POWER_MEDIUM;
+ SDL_PrivateJoystickBatteryLevel(joystick, SDL_JOYSTICK_POWER_MEDIUM);
}
else {
- joystick->epowerlevel = SDL_JOYSTICK_POWER_FULL;
+ SDL_PrivateJoystickBatteryLevel(joystick, SDL_JOYSTICK_POWER_FULL);
}
return;
diff --git a/src/joystick/hidapi/SDL_hidapi_ps4.c b/src/joystick/hidapi/SDL_hidapi_ps4.c
index 8e7699fe4d6..c11dfb364c7 100644
--- a/src/joystick/hidapi/SDL_hidapi_ps4.c
+++ b/src/joystick/hidapi/SDL_hidapi_ps4.c
@@ -801,18 +801,18 @@ HIDAPI_DriverPS4_HandleStatePacket(SDL_Joystick *joystick, SDL_hid_device *dev,
SDL_PrivateJoystickAxis(joystick, SDL_CONTROLLER_AXIS_RIGHTY, axis);
if (packet->ucBatteryLevel & 0x10) {
- joystick->epowerlevel = SDL_JOYSTICK_POWER_WIRED;
+ SDL_PrivateJoystickBatteryLevel(joystick, SDL_JOYSTICK_POWER_WIRED);
} else {
/* Battery level ranges from 0 to 10 */
int level = (packet->ucBatteryLevel & 0xF);
if (level == 0) {
- joystick->epowerlevel = SDL_JOYSTICK_POWER_EMPTY;
+ SDL_PrivateJoystickBatteryLevel(joystick, SDL_JOYSTICK_POWER_EMPTY);
} else if (level <= 2) {
- joystick->epowerlevel = SDL_JOYSTICK_POWER_LOW;
+ SDL_PrivateJoystickBatteryLevel(joystick, SDL_JOYSTICK_POWER_LOW);
} else if (level <= 7) {
- joystick->epowerlevel = SDL_JOYSTICK_POWER_MEDIUM;
+ SDL_PrivateJoystickBatteryLevel(joystick, SDL_JOYSTICK_POWER_MEDIUM);
} else {
- joystick->epowerlevel = SDL_JOYSTICK_POWER_FULL;
+ SDL_PrivateJoystickBatteryLevel(joystick, SDL_JOYSTICK_POWER_FULL);
}
}
diff --git a/src/joystick/hidapi/SDL_hidapi_switch.c b/src/joystick/hidapi/SDL_hidapi_switch.c
index 912d613edcb..4bee69b17bf 100644
--- a/src/joystick/hidapi/SDL_hidapi_switch.c
+++ b/src/joystick/hidapi/SDL_hidapi_switch.c
@@ -1440,20 +1440,20 @@ static void HandleFullControllerState(SDL_Joystick *joystick, SDL_DriverSwitch_C
* LSB of connection nibble is USB/Switch connection status
*/
if (packet->controllerState.ucBatteryAndConnection & 0x1) {
- joystick->epowerlevel = SDL_JOYSTICK_POWER_WIRED;
+ SDL_PrivateJoystickBatteryLevel(joystick, SDL_JOYSTICK_POWER_WIRED);
} else {
/* LSB of the battery nibble is used to report charging.
* The battery level is reported from 0(empty)-8(full)
*/
int level = (packet->controllerState.ucBatteryAndConnection & 0xE0) >> 4;
if (level == 0) {
- joystick->epowerlevel = SDL_JOYSTICK_POWER_EMPTY;
+ SDL_PrivateJoystickBatteryLevel(joystick, SDL_JOYSTICK_POWER_EMPTY);
} else if (level <= 2) {
- joystick->epowerlevel = SDL_JOYSTICK_POWER_LOW;
+ SDL_PrivateJoystickBatteryLevel(joystick, SDL_JOYSTICK_POWER_LOW);
} else if (level <= 6) {
- joystick->epowerlevel = SDL_JOYSTICK_POWER_MEDIUM;
+ SDL_PrivateJoystickBatteryLevel(joystick, SDL_JOYSTICK_POWER_MEDIUM);
} else {
- joystick->epowerlevel = SDL_JOYSTICK_POWER_FULL;
+ SDL_PrivateJoystickBatteryLevel(joystick, SDL_JOYSTICK_POWER_FULL);
}
}
diff --git a/src/joystick/hidapi/SDL_hidapi_xbox360w.c b/src/joystick/hidapi/SDL_hidapi_xbox360w.c
index e6e6171ab3c..91c15a73b1e 100644
--- a/src/joystick/hidapi/SDL_hidapi_xbox360w.c
+++ b/src/joystick/hidapi/SDL_hidapi_xbox360w.c
@@ -81,13 +81,13 @@ UpdatePowerLevel(SDL_Joystick *joystick, Uint8 level)
float normalized_level = (float)level / 255.0f;
if (normalized_level <= 0.05f) {
- joystick->epowerlevel = SDL_JOYSTICK_POWER_EMPTY;
+ SDL_PrivateJoystickBatteryLevel(joystick, SDL_JOYSTICK_POWER_EMPTY);
} else if (normalized_level <= 0.20f) {
- joystick->epowerlevel = SDL_JOYSTICK_POWER_LOW;
+ SDL_PrivateJoystickBatteryLevel(joystick, SDL_JOYSTICK_POWER_LOW);
} else if (normalized_level <= 0.70f) {
- joystick->epowerlevel = SDL_JOYSTICK_POWER_MEDIUM;
+ SDL_PrivateJoystickBatteryLevel(joystick, SDL_JOYSTICK_POWER_MEDIUM);
} else {
- joystick->epowerlevel = SDL_JOYSTICK_POWER_FULL;
+ SDL_PrivateJoystickBatteryLevel(joystick, SDL_JOYSTICK_POWER_FULL);
}
}
diff --git a/src/joystick/windows/SDL_rawinputjoystick.c b/src/joystick/windows/SDL_rawinputjoystick.c
index df40232df45..285d5470ad8 100644
--- a/src/joystick/windows/SDL_rawinputjoystick.c
+++ b/src/joystick/windows/SDL_rawinputjoystick.c
@@ -1253,7 +1253,7 @@ RAWINPUT_JoystickOpen(SDL_Joystick *joystick, int device_index)
}
}
- SDL_PrivateJoystickBatteryLevel(joystick, SDL_JOYSTICK_POWER_UNKNOWN);
+ joystick->ePowerLevel = SDL_JOYSTICK_POWER_UNKNOWN;
return 0;
}