Mercurial > foo_out_sdl
comparison foosdk/sdk/libPPUI/CPowerRequest.cpp @ 1:20d02a178406 default tip
*: check in everything else
yay
| author | Paper <paper@tflc.us> |
|---|---|
| date | Mon, 05 Jan 2026 02:15:46 -0500 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| 0:e9bb126753e7 | 1:20d02a178406 |
|---|---|
| 1 #include "stdafx.h" | |
| 2 | |
| 3 #include "CPowerRequest.h" | |
| 4 | |
| 5 #ifdef CPowerRequestAPI_Avail | |
| 6 | |
| 7 class CPowerRequestAPI { | |
| 8 public: | |
| 9 static void ToggleSystem(HANDLE hRequest, bool bSystem) { | |
| 10 Toggle(hRequest, bSystem, PowerRequestSystemRequired); | |
| 11 } | |
| 12 | |
| 13 static void ToggleExecution(HANDLE hRequest, bool bSystem) { | |
| 14 const POWER_REQUEST_TYPE RequestType = IsWindows8OrGreater() ? PowerRequestExecutionRequired : PowerRequestSystemRequired; | |
| 15 Toggle(hRequest, bSystem, RequestType); | |
| 16 } | |
| 17 | |
| 18 static void ToggleDisplay(HANDLE hRequest, bool bDisplay) { | |
| 19 Toggle(hRequest, bDisplay, PowerRequestDisplayRequired); | |
| 20 } | |
| 21 | |
| 22 static void Toggle(HANDLE hRequest, bool bToggle, POWER_REQUEST_TYPE what) { | |
| 23 if (bToggle) { | |
| 24 PowerSetRequest(hRequest, what); | |
| 25 } else { | |
| 26 PowerClearRequest(hRequest, what); | |
| 27 } | |
| 28 } | |
| 29 }; | |
| 30 | |
| 31 CPowerRequest::CPowerRequest(const wchar_t * Reason) : m_Request(INVALID_HANDLE_VALUE), m_bSystem(), m_bDisplay() { | |
| 32 REASON_CONTEXT ctx = {POWER_REQUEST_CONTEXT_VERSION, POWER_REQUEST_CONTEXT_SIMPLE_STRING}; | |
| 33 ctx.Reason.SimpleReasonString = const_cast<wchar_t*>(Reason); | |
| 34 m_Request = PowerCreateRequest(&ctx); | |
| 35 } | |
| 36 | |
| 37 void CPowerRequest::SetSystem(bool bSystem) { | |
| 38 if (bSystem == m_bSystem) return; | |
| 39 m_bSystem = bSystem; | |
| 40 if (m_Request != INVALID_HANDLE_VALUE) { | |
| 41 CPowerRequestAPI::ToggleSystem( m_Request, bSystem ); | |
| 42 } | |
| 43 } | |
| 44 | |
| 45 void CPowerRequest::SetExecution(bool bExecution) { | |
| 46 if (bExecution == m_bSystem) return; | |
| 47 m_bSystem = bExecution; | |
| 48 if (m_Request != INVALID_HANDLE_VALUE) { | |
| 49 CPowerRequestAPI::ToggleExecution( m_Request, bExecution ); | |
| 50 } | |
| 51 } | |
| 52 | |
| 53 void CPowerRequest::SetDisplay(bool bDisplay) { | |
| 54 if (bDisplay == m_bDisplay) return; | |
| 55 m_bDisplay = bDisplay; | |
| 56 if (m_Request != INVALID_HANDLE_VALUE) { | |
| 57 CPowerRequestAPI::ToggleDisplay(m_Request, bDisplay); | |
| 58 } | |
| 59 } | |
| 60 | |
| 61 CPowerRequest::~CPowerRequest() { | |
| 62 if (m_Request != INVALID_HANDLE_VALUE) { | |
| 63 CloseHandle(m_Request); | |
| 64 } | |
| 65 } | |
| 66 | |
| 67 #endif // _WIN32 | |
| 68 |
