#include "SDL_internal.h"
#ifndef SDL_POWER_DISABLED
#ifdef SDL_POWER_WINDOWS
#include "../../core/windows/SDL_windows.h"
bool SDL_GetPowerInfo_Windows(SDL_PowerState *state, int *seconds, int *percent)
{
SYSTEM_POWER_STATUS status;
bool need_details = false;
if (!GetSystemPowerStatus(&status)) {
*state = SDL_POWERSTATE_UNKNOWN;
} else if (status.BatteryFlag == 0xFF) { *state = SDL_POWERSTATE_UNKNOWN;
} else if (status.BatteryFlag & (1 << 7)) { *state = SDL_POWERSTATE_NO_BATTERY;
} else if (status.BatteryFlag & (1 << 3)) { *state = SDL_POWERSTATE_CHARGING;
need_details = true;
} else if (status.ACLineStatus == 1) {
*state = SDL_POWERSTATE_CHARGED; need_details = true;
} else {
*state = SDL_POWERSTATE_ON_BATTERY; need_details = true;
}
*percent = -1;
*seconds = -1;
if (need_details) {
const int pct = (int)status.BatteryLifePercent;
const int secs = (int)status.BatteryLifeTime;
if (pct != 255) { *percent = (pct > 100) ? 100 : pct; }
if (secs != 0xFFFFFFFF) { *seconds = secs;
}
}
return true; }
#endif #endif