mirror of https://github.com/encounter/SDL.git
Add joystick battery event
This commit is contained in:
parent
0964c84d77
commit
3dcfe86082
|
@ -118,6 +118,7 @@ typedef enum
|
||||||
SDL_JOYBUTTONUP, /**< Joystick button released */
|
SDL_JOYBUTTONUP, /**< Joystick button released */
|
||||||
SDL_JOYDEVICEADDED, /**< A new joystick has been inserted into the system */
|
SDL_JOYDEVICEADDED, /**< A new joystick has been inserted into the system */
|
||||||
SDL_JOYDEVICEREMOVED, /**< An opened joystick has been removed */
|
SDL_JOYDEVICEREMOVED, /**< An opened joystick has been removed */
|
||||||
|
SDL_JOYBATTERYUPDATED, /**< Joystick battery level change */
|
||||||
|
|
||||||
/* Game controller events */
|
/* Game controller events */
|
||||||
SDL_CONTROLLERAXISMOTION = 0x650, /**< Game controller axis motion */
|
SDL_CONTROLLERAXISMOTION = 0x650, /**< Game controller axis motion */
|
||||||
|
@ -395,6 +396,16 @@ typedef struct SDL_JoyDeviceEvent
|
||||||
Sint32 which; /**< The joystick device index for the ADDED event, instance id for the REMOVED event */
|
Sint32 which; /**< The joystick device index for the ADDED event, instance id for the REMOVED event */
|
||||||
} SDL_JoyDeviceEvent;
|
} SDL_JoyDeviceEvent;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \brief Joysick battery level change event structure (event.jbattery.*)
|
||||||
|
*/
|
||||||
|
typedef struct SDL_JoyBatteryEvent
|
||||||
|
{
|
||||||
|
Uint32 type; /**< ::SDL_JOYBATTERYUPDATED */
|
||||||
|
Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
|
||||||
|
SDL_JoystickID which; /**< The joystick instance id */
|
||||||
|
SDL_JoystickPowerLevel level; /**< The joystick battery level */
|
||||||
|
} SDL_JoyBatteryEvent;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \brief Game controller axis motion event structure (event.caxis.*)
|
* \brief Game controller axis motion event structure (event.caxis.*)
|
||||||
|
@ -625,6 +636,7 @@ typedef union SDL_Event
|
||||||
SDL_JoyHatEvent jhat; /**< Joystick hat event data */
|
SDL_JoyHatEvent jhat; /**< Joystick hat event data */
|
||||||
SDL_JoyButtonEvent jbutton; /**< Joystick button event data */
|
SDL_JoyButtonEvent jbutton; /**< Joystick button event data */
|
||||||
SDL_JoyDeviceEvent jdevice; /**< Joystick device change event data */
|
SDL_JoyDeviceEvent jdevice; /**< Joystick device change event data */
|
||||||
|
SDL_JoyBatteryEvent jbattery; /**< Joystick battery event data */
|
||||||
SDL_ControllerAxisEvent caxis; /**< Game Controller axis event data */
|
SDL_ControllerAxisEvent caxis; /**< Game Controller axis event data */
|
||||||
SDL_ControllerButtonEvent cbutton; /**< Game Controller button event data */
|
SDL_ControllerButtonEvent cbutton; /**< Game Controller button event data */
|
||||||
SDL_ControllerDeviceEvent cdevice; /**< Game Controller device event data */
|
SDL_ControllerDeviceEvent cdevice; /**< Game Controller device event data */
|
||||||
|
|
|
@ -386,6 +386,7 @@ SDL_JoystickOpen(int device_index)
|
||||||
SDL_Joystick *joystick;
|
SDL_Joystick *joystick;
|
||||||
SDL_Joystick *joysticklist;
|
SDL_Joystick *joysticklist;
|
||||||
const char *joystickname = NULL;
|
const char *joystickname = NULL;
|
||||||
|
SDL_JoystickPowerLevel initial_power_level;
|
||||||
|
|
||||||
SDL_LockJoysticks();
|
SDL_LockJoysticks();
|
||||||
|
|
||||||
|
@ -478,6 +479,11 @@ SDL_JoystickOpen(int device_index)
|
||||||
|
|
||||||
SDL_UnlockJoysticks();
|
SDL_UnlockJoysticks();
|
||||||
|
|
||||||
|
/* send initial battery event */
|
||||||
|
initial_power_level = joystick->epowerlevel;
|
||||||
|
joystick->epowerlevel = SDL_JOYSTICK_POWER_UNKNOWN;
|
||||||
|
SDL_PrivateJoystickBatteryLevel(joystick, initial_power_level);
|
||||||
|
|
||||||
driver->Update(joystick);
|
driver->Update(joystick);
|
||||||
|
|
||||||
return joystick;
|
return joystick;
|
||||||
|
@ -2721,7 +2727,19 @@ SDL_JoystickGUID SDL_JoystickGetGUIDFromString(const char *pchGUID)
|
||||||
/* update the power level for this joystick */
|
/* update the power level for this joystick */
|
||||||
void SDL_PrivateJoystickBatteryLevel(SDL_Joystick *joystick, SDL_JoystickPowerLevel ePowerLevel)
|
void SDL_PrivateJoystickBatteryLevel(SDL_Joystick *joystick, SDL_JoystickPowerLevel ePowerLevel)
|
||||||
{
|
{
|
||||||
joystick->epowerlevel = ePowerLevel;
|
SDL_assert(joystick->ref_count); /* make sure we are calling this only for update, not for initialisation */
|
||||||
|
if (ePowerLevel != joystick->epowerlevel) {
|
||||||
|
#if !SDL_EVENTS_DISABLED
|
||||||
|
if (SDL_GetEventState(SDL_JOYBATTERYUPDATED) == SDL_ENABLE) {
|
||||||
|
SDL_Event event;
|
||||||
|
event.type = SDL_JOYBATTERYUPDATED;
|
||||||
|
event.jbattery.which = joystick->instance_id;
|
||||||
|
event.jbattery.level = ePowerLevel;
|
||||||
|
SDL_PushEvent(&event);
|
||||||
|
}
|
||||||
|
#endif /* !SDL_EVENTS_DISABLED */
|
||||||
|
joystick->epowerlevel = ePowerLevel;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* return its power level */
|
/* return its power level */
|
||||||
|
|
Loading…
Reference in New Issue