Module: wine Branch: master Commit: 6420ebdf93373ebad789d471f6235a4d8a585188 URL: https://source.winehq.org/git/wine.git/?a=commit;h=6420ebdf93373ebad789d471f...
Author: Chip Davis cdavis@codeweavers.com Date: Wed Jul 31 17:24:55 2019 -0500
ntdll: Move SetThreadExecutionState() implementation to ntdll.
Signed-off-by: Chip Davis cdavis@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/kernel32/powermgnt.c | 9 +++------ dlls/ntdll/nt.c | 17 +++++++++++++++++ dlls/ntdll/ntdll.spec | 4 ++-- include/winternl.h | 1 + 4 files changed, 23 insertions(+), 8 deletions(-)
diff --git a/dlls/kernel32/powermgnt.c b/dlls/kernel32/powermgnt.c index 81e43b4..056dd9d 100644 --- a/dlls/kernel32/powermgnt.c +++ b/dlls/kernel32/powermgnt.c @@ -21,6 +21,7 @@
#include "windef.h" #include "winbase.h" +#include "winternl.h" #include "wine/debug.h"
WINE_DEFAULT_DEBUG_CHANNEL(powermgnt); @@ -100,14 +101,10 @@ BOOL WINAPI SetSystemPowerState(BOOL suspend_or_hibernate, */ EXECUTION_STATE WINAPI SetThreadExecutionState(EXECUTION_STATE flags) { - static EXECUTION_STATE current = - ES_SYSTEM_REQUIRED | ES_DISPLAY_REQUIRED | ES_USER_PRESENT; - EXECUTION_STATE old = current; + EXECUTION_STATE old;
- WARN("(0x%x): stub, harmless.\n", flags); + NtSetThreadExecutionState(flags, &old);
- if (!(current & ES_CONTINUOUS) || (flags & ES_CONTINUOUS)) - current = flags; return old; }
diff --git a/dlls/ntdll/nt.c b/dlls/ntdll/nt.c index b58c2d6..cdfbd9f 100644 --- a/dlls/ntdll/nt.c +++ b/dlls/ntdll/nt.c @@ -3056,6 +3056,23 @@ NTSTATUS WINAPI NtInitiatePowerAction( return STATUS_NOT_IMPLEMENTED; }
+/****************************************************************************** + * NtSetThreadExecutionState [NTDLL.@] + * + */ +NTSTATUS WINAPI NtSetThreadExecutionState( EXECUTION_STATE new_state, EXECUTION_STATE *old_state ) +{ + static EXECUTION_STATE current = + ES_SYSTEM_REQUIRED | ES_DISPLAY_REQUIRED | ES_USER_PRESENT; + *old_state = current; + + WARN( "(0x%x, %p): stub, harmless.\n", new_state, old_state ); + + if (!(current & ES_CONTINUOUS) || (new_state & ES_CONTINUOUS)) + current = new_state; + return STATUS_SUCCESS; +} + #ifdef linux /* Fallback using /proc/cpuinfo for Linux systems without cpufreq. For * most distributions on recent enough hardware, this is only likely to diff --git a/dlls/ntdll/ntdll.spec b/dlls/ntdll/ntdll.spec index 323d5ea..278699c 100644 --- a/dlls/ntdll/ntdll.spec +++ b/dlls/ntdll/ntdll.spec @@ -381,7 +381,7 @@ @ stdcall NtSetSystemInformation(long ptr long) @ stub NtSetSystemPowerState @ stdcall NtSetSystemTime(ptr ptr) -# @ stub NtSetThreadExecutionState +@ stdcall NtSetThreadExecutionState(long ptr) @ stdcall NtSetTimer(long ptr ptr ptr long long ptr) @ stdcall NtSetTimerResolution(long long ptr) # @ stub NtSetUuidSeed @@ -1330,7 +1330,7 @@ @ stdcall -private ZwSetSystemInformation(long ptr long) NtSetSystemInformation @ stub ZwSetSystemPowerState @ stdcall -private ZwSetSystemTime(ptr ptr) NtSetSystemTime -# @ stub ZwSetThreadExecutionState +@ stdcall ZwSetThreadExecutionState(long ptr) NtSetThreadExecutionState @ stdcall -private ZwSetTimer(long ptr ptr ptr long long ptr) NtSetTimer @ stdcall -private ZwSetTimerResolution(long long ptr) NtSetTimerResolution # @ stub ZwSetUuidSeed diff --git a/include/winternl.h b/include/winternl.h index 49eedaf..d654391 100644 --- a/include/winternl.h +++ b/include/winternl.h @@ -2515,6 +2515,7 @@ NTSYSAPI NTSTATUS WINAPI NtSetSystemEnvironmentValue(PUNICODE_STRING,PUNICODE_S NTSYSAPI NTSTATUS WINAPI NtSetSystemInformation(SYSTEM_INFORMATION_CLASS,PVOID,ULONG); NTSYSAPI NTSTATUS WINAPI NtSetSystemPowerState(POWER_ACTION,SYSTEM_POWER_STATE,ULONG); NTSYSAPI NTSTATUS WINAPI NtSetSystemTime(const LARGE_INTEGER*,LARGE_INTEGER*); +NTSYSAPI NTSTATUS WINAPI NtSetThreadExecutionState(EXECUTION_STATE,EXECUTION_STATE*); NTSYSAPI NTSTATUS WINAPI NtSetTimer(HANDLE, const LARGE_INTEGER*, PTIMER_APC_ROUTINE, PVOID, BOOLEAN, ULONG, BOOLEAN*); NTSYSAPI NTSTATUS WINAPI NtSetTimerResolution(ULONG,BOOLEAN,PULONG); NTSYSAPI NTSTATUS WINAPI NtSetValueKey(HANDLE,const UNICODE_STRING *,ULONG,ULONG,const void *,ULONG);