mirror of
https://github.com/xenia-project/xenia.git
synced 2025-12-06 07:12:03 +01:00
[UI] Fix Windows 10 1607+ DPI function loading
This commit is contained in:
parent
7fc940422c
commit
7652b321d0
|
|
@ -22,6 +22,9 @@ Win32WindowedAppContext::~Win32WindowedAppContext() {
|
||||||
if (pending_functions_hwnd_) {
|
if (pending_functions_hwnd_) {
|
||||||
DestroyWindow(pending_functions_hwnd_);
|
DestroyWindow(pending_functions_hwnd_);
|
||||||
}
|
}
|
||||||
|
if (user32_module_) {
|
||||||
|
FreeLibrary(user32_module_);
|
||||||
|
}
|
||||||
if (shcore_module_) {
|
if (shcore_module_) {
|
||||||
FreeLibrary(shcore_module_);
|
FreeLibrary(shcore_module_);
|
||||||
}
|
}
|
||||||
|
|
@ -38,25 +41,28 @@ bool Win32WindowedAppContext::Initialize() {
|
||||||
(*reinterpret_cast<void**>(
|
(*reinterpret_cast<void**>(
|
||||||
&per_monitor_dpi_v1_api_.get_dpi_for_monitor) =
|
&per_monitor_dpi_v1_api_.get_dpi_for_monitor) =
|
||||||
GetProcAddress(shcore_module_, "GetDpiForMonitor")) != nullptr;
|
GetProcAddress(shcore_module_, "GetDpiForMonitor")) != nullptr;
|
||||||
|
}
|
||||||
|
user32_module_ = LoadLibraryW(L"user32.dll");
|
||||||
|
if (user32_module_) {
|
||||||
per_monitor_dpi_v2_api_available_ = true;
|
per_monitor_dpi_v2_api_available_ = true;
|
||||||
per_monitor_dpi_v2_api_available_ &=
|
per_monitor_dpi_v2_api_available_ &=
|
||||||
(*reinterpret_cast<void**>(
|
(*reinterpret_cast<void**>(
|
||||||
&per_monitor_dpi_v2_api_.adjust_window_rect_ex_for_dpi) =
|
&per_monitor_dpi_v2_api_.adjust_window_rect_ex_for_dpi) =
|
||||||
GetProcAddress(shcore_module_, "AdjustWindowRectExForDpi")) !=
|
GetProcAddress(user32_module_, "AdjustWindowRectExForDpi")) !=
|
||||||
nullptr;
|
nullptr;
|
||||||
per_monitor_dpi_v2_api_available_ &=
|
per_monitor_dpi_v2_api_available_ &=
|
||||||
(*reinterpret_cast<void**>(
|
(*reinterpret_cast<void**>(
|
||||||
&per_monitor_dpi_v2_api_.enable_non_client_dpi_scaling) =
|
&per_monitor_dpi_v2_api_.enable_non_client_dpi_scaling) =
|
||||||
GetProcAddress(shcore_module_, "EnableNonClientDpiScaling")) !=
|
GetProcAddress(user32_module_, "EnableNonClientDpiScaling")) !=
|
||||||
nullptr;
|
nullptr;
|
||||||
per_monitor_dpi_v2_api_available_ &=
|
per_monitor_dpi_v2_api_available_ &=
|
||||||
(*reinterpret_cast<void**>(
|
(*reinterpret_cast<void**>(
|
||||||
&per_monitor_dpi_v2_api_.get_dpi_for_system) =
|
&per_monitor_dpi_v2_api_.get_dpi_for_system) =
|
||||||
GetProcAddress(shcore_module_, "GetDpiForSystem")) != nullptr;
|
GetProcAddress(user32_module_, "GetDpiForSystem")) != nullptr;
|
||||||
per_monitor_dpi_v2_api_available_ &=
|
per_monitor_dpi_v2_api_available_ &=
|
||||||
(*reinterpret_cast<void**>(
|
(*reinterpret_cast<void**>(
|
||||||
&per_monitor_dpi_v2_api_.get_dpi_for_window) =
|
&per_monitor_dpi_v2_api_.get_dpi_for_window) =
|
||||||
GetProcAddress(shcore_module_, "GetDpiForWindow")) != nullptr;
|
GetProcAddress(user32_module_, "GetDpiForWindow")) != nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create the message-only window for executing pending functions - using a
|
// Create the message-only window for executing pending functions - using a
|
||||||
|
|
|
||||||
|
|
@ -97,6 +97,7 @@ class Win32WindowedAppContext final : public WindowedAppContext {
|
||||||
int show_cmd_;
|
int show_cmd_;
|
||||||
|
|
||||||
HMODULE shcore_module_ = nullptr;
|
HMODULE shcore_module_ = nullptr;
|
||||||
|
HMODULE user32_module_ = nullptr;
|
||||||
PerMonitorDpiV1Api per_monitor_dpi_v1_api_ = {};
|
PerMonitorDpiV1Api per_monitor_dpi_v1_api_ = {};
|
||||||
PerMonitorDpiV2Api per_monitor_dpi_v2_api_ = {};
|
PerMonitorDpiV2Api per_monitor_dpi_v2_api_ = {};
|
||||||
bool per_monitor_dpi_v1_api_available_ = false;
|
bool per_monitor_dpi_v1_api_available_ = false;
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue