mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-27 23:02:20 +00:00
38d538c966
Currently, we set DPI awareness in the manifest files for firefox.exe. Unfortunately, that causes DPI-related Win32k calls when user32.dll is loaded. This changes things to wait until we are sure we're not running in a Win32k Lockdown Content Process before we attempt to initialize DPI scaling. Differential Revision: https://phabricator.services.mozilla.com/D116433
55 lines
2.2 KiB
C++
55 lines
2.2 KiB
C++
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
#ifndef MOZILLA_MOZGLUE_MISC_WINDOWSDPIINITIALIZATION_H_
|
|
#define MOZILLA_MOZGLUE_MISC_WINDOWSDPIINITIALIZATION_H_
|
|
#include "mozilla/Types.h"
|
|
|
|
namespace mozilla {
|
|
|
|
// The result codes that may be returned from WindowsDpiInitialization()
|
|
enum class WindowsDpiInitializationResult : uint32_t {
|
|
Success,
|
|
FindSetProcessDpiAwarenessContextFailed,
|
|
SetProcessDpiAwarenessContextFailed,
|
|
FindSetProcessDpiAwarenessFailed,
|
|
SetProcessDpiAwarenessFailed,
|
|
SetProcessDPIAwareFailed,
|
|
};
|
|
|
|
// Get a string representation of any WindowsDpiInitializationResult value
|
|
inline const char* WindowsDpiInitializationResultString(
|
|
WindowsDpiInitializationResult result) {
|
|
switch (result) {
|
|
case WindowsDpiInitializationResult::Success:
|
|
return "Success";
|
|
case WindowsDpiInitializationResult::
|
|
FindSetProcessDpiAwarenessContextFailed:
|
|
return "Failed to find SetProcessDpiAwarenessContext";
|
|
case WindowsDpiInitializationResult::SetProcessDpiAwarenessContextFailed:
|
|
return "SetProcessDpiAwarenessContext failed";
|
|
case WindowsDpiInitializationResult::FindSetProcessDpiAwarenessFailed:
|
|
return "Failed to find SetProcessDpiAwareness";
|
|
case WindowsDpiInitializationResult::SetProcessDpiAwarenessFailed:
|
|
return "SetProcessDpiAwareness failed";
|
|
case WindowsDpiInitializationResult::SetProcessDPIAwareFailed:
|
|
return "SetProcessDPIAware failed";
|
|
default:
|
|
return "Unknown result";
|
|
}
|
|
}
|
|
|
|
// Initialize DPI awareness to the best available for the current OS
|
|
// According to MSDN, this will be:
|
|
// Per-Monitor V2 for Windows 10 Creators Update (1703) and later
|
|
// Per-Monitor V1 for Windows 8.1 and later
|
|
// System DPI for Vista and later (we don't support anything older)
|
|
// https://docs.microsoft.com/en-us/windows/win32/hidpi/high-dpi-desktop-application-development-on-windows
|
|
MFBT_API WindowsDpiInitializationResult WindowsDpiInitialization();
|
|
|
|
} // namespace mozilla
|
|
|
|
#endif // MOZILLA_MOZGLUE_MISC_WINDOWSDPIINITIALIZATION_H_
|