Skip to content

Commit

Permalink
Bug 1665357 - Ensure DPI_AWARENESS_CONTEXT is defined r=mhowell
Browse files Browse the repository at this point in the history
This is currently failing the tier 2 MinGW-Clang builds, complaining
that DPI_AWARENESS_CONTEXT is not defined. Accordingly I pulled out the
logic from WinUtils.h which ensures it is defined into a shared header.

Differential Revision: https://phabricator.services.mozilla.com/D90467
  • Loading branch information
squarewave committed Sep 16, 2020
1 parent ae0f99f commit 243b612
Show file tree
Hide file tree
Showing 4 changed files with 44 additions and 35 deletions.
7 changes: 1 addition & 6 deletions mozglue/misc/EarlyBlankWindow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
#include "mozilla/Assertions.h"
#include "mozilla/Attributes.h"
#include "mozilla/glue/Debug.h"
#include "mozilla/WindowsDpiAwareness.h"
#include "mozilla/WindowsVersion.h"

namespace mozilla {
Expand Down Expand Up @@ -59,12 +60,6 @@ StretchDIBitsProc sStretchDIBits = NULL;
typedef HBRUSH(WINAPI* CreateSolidBrushProc)(COLORREF);
CreateSolidBrushProc sCreateSolidBrush = NULL;

#if WINVER < 0x0605
WINUSERAPI DPI_AWARENESS_CONTEXT WINAPI GetThreadDpiAwarenessContext();
WINUSERAPI BOOL WINAPI AreDpiAwarenessContextsEqual(DPI_AWARENESS_CONTEXT,
DPI_AWARENESS_CONTEXT);
#endif /* WINVER < 0x0605 */

static uint32_t sWindowWidth;
static uint32_t sWindowHeight;
static double sCSSToDevPixelScaling;
Expand Down
41 changes: 41 additions & 0 deletions mozglue/misc/WindowsDpiAwareness.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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 https://mozilla.org/MPL/2.0/. */

#ifndef WindowsDpiAwareness_h_
#define WindowsDpiAwareness_h_

#include <windows.h>

#if !defined(DPI_AWARENESS_CONTEXT_DECLARED) && \
!defined(DPI_AWARENESS_CONTEXT_UNAWARE)

DECLARE_HANDLE(DPI_AWARENESS_CONTEXT);

typedef enum DPI_AWARENESS {
DPI_AWARENESS_INVALID = -1,
DPI_AWARENESS_UNAWARE = 0,
DPI_AWARENESS_SYSTEM_AWARE = 1,
DPI_AWARENESS_PER_MONITOR_AWARE = 2
} DPI_AWARENESS;

# define DPI_AWARENESS_CONTEXT_UNAWARE ((DPI_AWARENESS_CONTEXT)-1)
# define DPI_AWARENESS_CONTEXT_SYSTEM_AWARE ((DPI_AWARENESS_CONTEXT)-2)
# define DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE ((DPI_AWARENESS_CONTEXT)-3)

# define DPI_AWARENESS_CONTEXT_DECLARED
#endif // (DPI_AWARENESS_CONTEXT_DECLARED)

#if WINVER < 0x0605
WINUSERAPI DPI_AWARENESS_CONTEXT WINAPI GetThreadDpiAwarenessContext();
WINUSERAPI BOOL WINAPI AreDpiAwarenessContextsEqual(DPI_AWARENESS_CONTEXT,
DPI_AWARENESS_CONTEXT);
#endif /* WINVER < 0x0605 */
typedef DPI_AWARENESS_CONTEXT(WINAPI* SetThreadDpiAwarenessContextProc)(
DPI_AWARENESS_CONTEXT);
typedef BOOL(WINAPI* EnableNonClientDpiScalingProc)(HWND);
typedef int(WINAPI* GetSystemMetricsForDpiProc)(int, UINT);

#endif
1 change: 1 addition & 0 deletions mozglue/misc/moz.build
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ if CONFIG['OS_ARCH'] == 'WINNT':
'EarlyBlankWindow.h',
'StackWalk_windows.h',
'TimeStamp_windows.h',
'WindowsDpiAwareness.h',
]

SOURCES += [
Expand Down
30 changes: 1 addition & 29 deletions widget/windows/WinUtils.h
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@
#include "mozilla/Attributes.h"
#include "mozilla/EventForwards.h"
#include "mozilla/UniquePtr.h"
#include "mozilla/WindowsDpiAwareness.h"

/**
* NS_INLINE_DECL_IUNKNOWN_REFCOUNTING should be used for defining and
Expand Down Expand Up @@ -77,35 +78,6 @@ class nsWindow;
class nsWindowBase;
struct KeyPair;

#if !defined(DPI_AWARENESS_CONTEXT_DECLARED) && \
!defined(DPI_AWARENESS_CONTEXT_UNAWARE)

DECLARE_HANDLE(DPI_AWARENESS_CONTEXT);

typedef enum DPI_AWARENESS {
DPI_AWARENESS_INVALID = -1,
DPI_AWARENESS_UNAWARE = 0,
DPI_AWARENESS_SYSTEM_AWARE = 1,
DPI_AWARENESS_PER_MONITOR_AWARE = 2
} DPI_AWARENESS;

# define DPI_AWARENESS_CONTEXT_UNAWARE ((DPI_AWARENESS_CONTEXT)-1)
# define DPI_AWARENESS_CONTEXT_SYSTEM_AWARE ((DPI_AWARENESS_CONTEXT)-2)
# define DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE ((DPI_AWARENESS_CONTEXT)-3)

# define DPI_AWARENESS_CONTEXT_DECLARED
#endif // (DPI_AWARENESS_CONTEXT_DECLARED)

#if WINVER < 0x0605
WINUSERAPI DPI_AWARENESS_CONTEXT WINAPI GetThreadDpiAwarenessContext();
WINUSERAPI BOOL WINAPI AreDpiAwarenessContextsEqual(DPI_AWARENESS_CONTEXT,
DPI_AWARENESS_CONTEXT);
#endif /* WINVER < 0x0605 */
typedef DPI_AWARENESS_CONTEXT(WINAPI* SetThreadDpiAwarenessContextProc)(
DPI_AWARENESS_CONTEXT);
typedef BOOL(WINAPI* EnableNonClientDpiScalingProc)(HWND);
typedef int(WINAPI* GetSystemMetricsForDpiProc)(int, UINT);

namespace mozilla {
enum class PointerCapabilities : uint8_t;
#if defined(ACCESSIBILITY)
Expand Down

0 comments on commit 243b612

Please sign in to comment.