mirror of
https://github.com/libretro/RetroArch
synced 2025-02-04 12:40:07 +00:00
(Win32) Create win32_suppress_screensaver
This commit is contained in:
parent
7f164647a2
commit
ff59f92341
@ -30,6 +30,35 @@
|
||||
#include "../drivers_wm/win32_shader_dlg.h"
|
||||
#endif
|
||||
|
||||
#ifndef _XBOX
|
||||
/* Power Request APIs */
|
||||
|
||||
typedef REASON_CONTEXT POWER_REQUEST_CONTEXT, *PPOWER_REQUEST_CONTEXT, *LPPOWER_REQUEST_CONTEXT;
|
||||
|
||||
WINBASEAPI
|
||||
HANDLE
|
||||
WINAPI
|
||||
PowerCreateRequest (
|
||||
PREASON_CONTEXT Context
|
||||
);
|
||||
|
||||
WINBASEAPI
|
||||
BOOL
|
||||
WINAPI
|
||||
PowerSetRequest (
|
||||
HANDLE PowerRequest,
|
||||
POWER_REQUEST_TYPE RequestType
|
||||
);
|
||||
|
||||
WINBASEAPI
|
||||
BOOL
|
||||
WINAPI
|
||||
PowerClearRequest (
|
||||
HANDLE PowerRequest,
|
||||
POWER_REQUEST_TYPE RequestType
|
||||
);
|
||||
#endif
|
||||
|
||||
static bool win32_browser(
|
||||
HWND owner,
|
||||
char *filename,
|
||||
@ -239,3 +268,42 @@ void win32_check_window(void)
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
bool win32_suppress_screensaver(void *data, bool enable)
|
||||
{
|
||||
#ifdef _XBOX
|
||||
return false;
|
||||
#else
|
||||
typedef HANDLE (WINAPI * PowerCreateRequestPtr)(REASON_CONTEXT *context);
|
||||
HMODULE kernel32 = GetModuleHandleW(L"kernel32.dll");
|
||||
PowerCreateRequestPtr powerCreateRequest =
|
||||
(PowerCreateRequestPtr)GetProcAddress(kernel32, "PowerCreateRequest");
|
||||
|
||||
if(enable)
|
||||
{
|
||||
if(powerCreateRequest)
|
||||
{
|
||||
/* Windows 7, 8, 10 codepath */
|
||||
POWER_REQUEST_CONTEXT RequestContext;
|
||||
HANDLE Request;
|
||||
|
||||
RequestContext.Version = POWER_REQUEST_CONTEXT_VERSION;
|
||||
RequestContext.Flags = POWER_REQUEST_CONTEXT_SIMPLE_STRING;
|
||||
RequestContext.Reason.SimpleReasonString = L"RetroArch running";
|
||||
|
||||
Request = PowerCreateRequest(&RequestContext);
|
||||
|
||||
PowerSetRequest( Request, PowerRequestDisplayRequired);
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* XP / Vista codepath */
|
||||
SetThreadExecutionState(ES_DISPLAY_REQUIRED | ES_SYSTEM_REQUIRED);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
|
@ -37,6 +37,8 @@ LRESULT win32_handle_keyboard_event(HWND hwnd, UINT message,
|
||||
LRESULT win32_menu_loop(HWND handle, WPARAM wparam);
|
||||
#endif
|
||||
|
||||
bool win32_suppress_screensaver(void *data, bool enable);
|
||||
|
||||
bool win32_get_metrics(void *data,
|
||||
enum display_metric_types type, float *value);
|
||||
|
||||
|
@ -206,10 +206,7 @@ static bool gfx_ctx_d3d_has_focus(void *data)
|
||||
|
||||
static bool gfx_ctx_d3d_suppress_screensaver(void *data, bool enable)
|
||||
{
|
||||
(void)data;
|
||||
(void)enable;
|
||||
|
||||
return false;
|
||||
return win32_suppress_screensaver(data, enable);
|
||||
}
|
||||
|
||||
static bool gfx_ctx_d3d_has_windowed(void *data)
|
||||
|
@ -640,10 +640,7 @@ static bool gfx_ctx_wgl_has_focus(void *data)
|
||||
|
||||
static bool gfx_ctx_wgl_suppress_screensaver(void *data, bool enable)
|
||||
{
|
||||
(void)data;
|
||||
(void)enable;
|
||||
|
||||
return false;
|
||||
return win32_suppress_screensaver(data, enable);
|
||||
}
|
||||
|
||||
static bool gfx_ctx_wgl_has_windowed(void *data)
|
||||
|
1262
menu/driverspzarch.c
Normal file
1262
menu/driverspzarch.c
Normal file
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user