annotate 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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1 #include "stdafx.h"
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
2
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
3 #include "CPowerRequest.h"
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
4
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
5 #ifdef CPowerRequestAPI_Avail
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
6
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
7 class CPowerRequestAPI {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
8 public:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
9 static void ToggleSystem(HANDLE hRequest, bool bSystem) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
10 Toggle(hRequest, bSystem, PowerRequestSystemRequired);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
11 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
12
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
13 static void ToggleExecution(HANDLE hRequest, bool bSystem) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
14 const POWER_REQUEST_TYPE RequestType = IsWindows8OrGreater() ? PowerRequestExecutionRequired : PowerRequestSystemRequired;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
15 Toggle(hRequest, bSystem, RequestType);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
16 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
17
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
18 static void ToggleDisplay(HANDLE hRequest, bool bDisplay) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
19 Toggle(hRequest, bDisplay, PowerRequestDisplayRequired);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
20 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
21
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
22 static void Toggle(HANDLE hRequest, bool bToggle, POWER_REQUEST_TYPE what) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
23 if (bToggle) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
24 PowerSetRequest(hRequest, what);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
25 } else {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
26 PowerClearRequest(hRequest, what);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
27 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
28 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
29 };
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
30
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
31 CPowerRequest::CPowerRequest(const wchar_t * Reason) : m_Request(INVALID_HANDLE_VALUE), m_bSystem(), m_bDisplay() {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
32 REASON_CONTEXT ctx = {POWER_REQUEST_CONTEXT_VERSION, POWER_REQUEST_CONTEXT_SIMPLE_STRING};
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
33 ctx.Reason.SimpleReasonString = const_cast<wchar_t*>(Reason);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
34 m_Request = PowerCreateRequest(&ctx);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
35 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
36
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
37 void CPowerRequest::SetSystem(bool bSystem) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
38 if (bSystem == m_bSystem) return;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
39 m_bSystem = bSystem;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
40 if (m_Request != INVALID_HANDLE_VALUE) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
41 CPowerRequestAPI::ToggleSystem( m_Request, bSystem );
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
42 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
43 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
44
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
45 void CPowerRequest::SetExecution(bool bExecution) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
46 if (bExecution == m_bSystem) return;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
47 m_bSystem = bExecution;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
48 if (m_Request != INVALID_HANDLE_VALUE) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
49 CPowerRequestAPI::ToggleExecution( m_Request, bExecution );
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
50 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
51 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
52
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
53 void CPowerRequest::SetDisplay(bool bDisplay) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
54 if (bDisplay == m_bDisplay) return;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
55 m_bDisplay = bDisplay;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
56 if (m_Request != INVALID_HANDLE_VALUE) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
57 CPowerRequestAPI::ToggleDisplay(m_Request, bDisplay);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
58 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
59 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
60
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
61 CPowerRequest::~CPowerRequest() {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
62 if (m_Request != INVALID_HANDLE_VALUE) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
63 CloseHandle(m_Request);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
64 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
65 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
66
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
67 #endif // _WIN32
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
68