Skip to content

Commit 2bedd89

Browse files
committed
Revert "Bug 1824053 - [3/4] DRY up skeleton-ui dynamic-resolution code r=glandium,win-reviewers,handyman"
This reverts commit e0638bd.
1 parent 38680c0 commit 2bedd89

File tree

1 file changed

+123
-58
lines changed

1 file changed

+123
-58
lines changed

mozglue/misc/PreXULSkeletonUI.cpp

Lines changed: 123 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -125,29 +125,46 @@ static uint32_t sToolbarForegroundColor;
125125

126126
static ThemeMode sTheme = ThemeMode::Invalid;
127127

128-
#define MOZ_DECL_IMPORTED_WIN32_FN(name) \
129-
static decltype(&::name) s##name = nullptr
130-
MOZ_DECL_IMPORTED_WIN32_FN(EnableNonClientDpiScaling);
131-
MOZ_DECL_IMPORTED_WIN32_FN(GetSystemMetricsForDpi);
132-
MOZ_DECL_IMPORTED_WIN32_FN(GetDpiForWindow);
133-
MOZ_DECL_IMPORTED_WIN32_FN(RegisterClassW);
134-
MOZ_DECL_IMPORTED_WIN32_FN(LoadIconW);
135-
MOZ_DECL_IMPORTED_WIN32_FN(LoadCursorW);
136-
MOZ_DECL_IMPORTED_WIN32_FN(CreateWindowExW);
137-
MOZ_DECL_IMPORTED_WIN32_FN(ShowWindow);
138-
MOZ_DECL_IMPORTED_WIN32_FN(SetWindowPos);
139-
MOZ_DECL_IMPORTED_WIN32_FN(GetWindowDC);
140-
MOZ_DECL_IMPORTED_WIN32_FN(GetWindowRect);
141-
MOZ_DECL_IMPORTED_WIN32_FN(MapWindowPoints);
142-
MOZ_DECL_IMPORTED_WIN32_FN(FillRect);
143-
MOZ_DECL_IMPORTED_WIN32_FN(DeleteObject);
144-
MOZ_DECL_IMPORTED_WIN32_FN(ReleaseDC);
145-
MOZ_DECL_IMPORTED_WIN32_FN(MonitorFromWindow);
146-
MOZ_DECL_IMPORTED_WIN32_FN(GetMonitorInfoW);
147-
MOZ_DECL_IMPORTED_WIN32_FN(SetWindowLongPtrW);
148-
MOZ_DECL_IMPORTED_WIN32_FN(StretchDIBits);
149-
MOZ_DECL_IMPORTED_WIN32_FN(CreateSolidBrush);
150-
#undef MOZ_DECL_IMPORTED_WIN32_FN
128+
typedef BOOL(WINAPI* EnableNonClientDpiScalingProc)(HWND);
129+
static EnableNonClientDpiScalingProc sEnableNonClientDpiScaling = NULL;
130+
typedef int(WINAPI* GetSystemMetricsForDpiProc)(int, UINT);
131+
GetSystemMetricsForDpiProc sGetSystemMetricsForDpi = NULL;
132+
typedef UINT(WINAPI* GetDpiForWindowProc)(HWND);
133+
GetDpiForWindowProc sGetDpiForWindow = NULL;
134+
typedef ATOM(WINAPI* RegisterClassWProc)(const WNDCLASSW*);
135+
RegisterClassWProc sRegisterClassW = NULL;
136+
typedef HICON(WINAPI* LoadIconWProc)(HINSTANCE, LPCWSTR);
137+
LoadIconWProc sLoadIconW = NULL;
138+
typedef HICON(WINAPI* LoadCursorWProc)(HINSTANCE, LPCWSTR);
139+
LoadCursorWProc sLoadCursorW = NULL;
140+
typedef HWND(WINAPI* CreateWindowExWProc)(DWORD, LPCWSTR, LPCWSTR, DWORD, int,
141+
int, int, int, HWND, HMENU, HINSTANCE,
142+
LPVOID);
143+
CreateWindowExWProc sCreateWindowExW = NULL;
144+
typedef BOOL(WINAPI* ShowWindowProc)(HWND, int);
145+
ShowWindowProc sShowWindow = NULL;
146+
typedef BOOL(WINAPI* SetWindowPosProc)(HWND, HWND, int, int, int, int, UINT);
147+
SetWindowPosProc sSetWindowPos = NULL;
148+
typedef HDC(WINAPI* GetWindowDCProc)(HWND);
149+
GetWindowDCProc sGetWindowDC = NULL;
150+
typedef int(WINAPI* FillRectProc)(HDC, const RECT*, HBRUSH);
151+
FillRectProc sFillRect = NULL;
152+
typedef BOOL(WINAPI* DeleteObjectProc)(HGDIOBJ);
153+
DeleteObjectProc sDeleteObject = NULL;
154+
typedef int(WINAPI* ReleaseDCProc)(HWND, HDC);
155+
ReleaseDCProc sReleaseDC = NULL;
156+
typedef HMONITOR(WINAPI* MonitorFromWindowProc)(HWND, DWORD);
157+
MonitorFromWindowProc sMonitorFromWindow = NULL;
158+
typedef BOOL(WINAPI* GetMonitorInfoWProc)(HMONITOR, LPMONITORINFO);
159+
GetMonitorInfoWProc sGetMonitorInfoW = NULL;
160+
typedef LONG_PTR(WINAPI* SetWindowLongPtrWProc)(HWND, int, LONG_PTR);
161+
SetWindowLongPtrWProc sSetWindowLongPtrW = NULL;
162+
typedef int(WINAPI* StretchDIBitsProc)(HDC, int, int, int, int, int, int, int,
163+
int, const VOID*, const BITMAPINFO*,
164+
UINT, DWORD);
165+
StretchDIBitsProc sStretchDIBits = NULL;
166+
typedef HBRUSH(WINAPI* CreateSolidBrushProc)(COLORREF);
167+
CreateSolidBrushProc sCreateSolidBrush = NULL;
151168

152169
static int sWindowWidth;
153170
static int sWindowHeight;
@@ -1377,14 +1394,6 @@ Result<Ok, PreXULSkeletonUIError> LoadGdi32AndUser32Procedures() {
13771394
return Err(PreXULSkeletonUIError::FailedLoadingDynamicProcs);
13781395
}
13791396

1380-
#define MOZ_LOAD_OR_FAIL(dll_handle, name) \
1381-
do { \
1382-
s##name = (decltype(&::name))::GetProcAddress(dll_handle, #name); \
1383-
if (!s##name) { \
1384-
return Err(PreXULSkeletonUIError::FailedLoadingDynamicProcs); \
1385-
} \
1386-
} while (0)
1387-
13881397
auto getThreadDpiAwarenessContext =
13891398
(decltype(GetThreadDpiAwarenessContext)*)::GetProcAddress(
13901399
user32Dll, "GetThreadDpiAwarenessContext");
@@ -1394,33 +1403,89 @@ Result<Ok, PreXULSkeletonUIError> LoadGdi32AndUser32Procedures() {
13941403
if (getThreadDpiAwarenessContext && areDpiAwarenessContextsEqual &&
13951404
areDpiAwarenessContextsEqual(getThreadDpiAwarenessContext(),
13961405
DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE)) {
1397-
// EnableNonClientDpiScaling is first available in Win10 Build 1607, but
1398-
// it's optional - we can handle not having it.
1399-
Unused << [&]() -> Result<Ok, PreXULSkeletonUIError> {
1400-
MOZ_LOAD_OR_FAIL(user32Dll, EnableNonClientDpiScaling);
1401-
return Ok{};
1402-
}();
1403-
}
1404-
1405-
MOZ_LOAD_OR_FAIL(user32Dll, GetSystemMetricsForDpi);
1406-
MOZ_LOAD_OR_FAIL(user32Dll, GetDpiForWindow);
1407-
MOZ_LOAD_OR_FAIL(user32Dll, RegisterClassW);
1408-
MOZ_LOAD_OR_FAIL(user32Dll, CreateWindowExW);
1409-
MOZ_LOAD_OR_FAIL(user32Dll, ShowWindow);
1410-
MOZ_LOAD_OR_FAIL(user32Dll, SetWindowPos);
1411-
MOZ_LOAD_OR_FAIL(user32Dll, GetWindowDC);
1412-
MOZ_LOAD_OR_FAIL(user32Dll, FillRect);
1413-
MOZ_LOAD_OR_FAIL(user32Dll, ReleaseDC);
1414-
MOZ_LOAD_OR_FAIL(user32Dll, LoadIconW);
1415-
MOZ_LOAD_OR_FAIL(user32Dll, LoadCursorW);
1416-
MOZ_LOAD_OR_FAIL(user32Dll, MonitorFromWindow);
1417-
MOZ_LOAD_OR_FAIL(user32Dll, GetMonitorInfoW);
1418-
MOZ_LOAD_OR_FAIL(user32Dll, SetWindowLongPtrW);
1419-
MOZ_LOAD_OR_FAIL(gdi32Dll, StretchDIBits);
1420-
MOZ_LOAD_OR_FAIL(gdi32Dll, CreateSolidBrush);
1421-
MOZ_LOAD_OR_FAIL(gdi32Dll, DeleteObject);
1422-
1423-
#undef MOZ_LOAD_OR_FAIL
1406+
// EnableNonClientDpiScaling is optional - we can handle not having it.
1407+
sEnableNonClientDpiScaling =
1408+
(EnableNonClientDpiScalingProc)::GetProcAddress(
1409+
user32Dll, "EnableNonClientDpiScaling");
1410+
}
1411+
1412+
sGetSystemMetricsForDpi = (GetSystemMetricsForDpiProc)::GetProcAddress(
1413+
user32Dll, "GetSystemMetricsForDpi");
1414+
if (!sGetSystemMetricsForDpi) {
1415+
return Err(PreXULSkeletonUIError::FailedLoadingDynamicProcs);
1416+
}
1417+
sGetDpiForWindow =
1418+
(GetDpiForWindowProc)::GetProcAddress(user32Dll, "GetDpiForWindow");
1419+
if (!sGetDpiForWindow) {
1420+
return Err(PreXULSkeletonUIError::FailedLoadingDynamicProcs);
1421+
}
1422+
sRegisterClassW =
1423+
(RegisterClassWProc)::GetProcAddress(user32Dll, "RegisterClassW");
1424+
if (!sRegisterClassW) {
1425+
return Err(PreXULSkeletonUIError::FailedLoadingDynamicProcs);
1426+
}
1427+
sCreateWindowExW =
1428+
(CreateWindowExWProc)::GetProcAddress(user32Dll, "CreateWindowExW");
1429+
if (!sCreateWindowExW) {
1430+
return Err(PreXULSkeletonUIError::FailedLoadingDynamicProcs);
1431+
}
1432+
sShowWindow = (ShowWindowProc)::GetProcAddress(user32Dll, "ShowWindow");
1433+
if (!sShowWindow) {
1434+
return Err(PreXULSkeletonUIError::FailedLoadingDynamicProcs);
1435+
}
1436+
sSetWindowPos = (SetWindowPosProc)::GetProcAddress(user32Dll, "SetWindowPos");
1437+
if (!sSetWindowPos) {
1438+
return Err(PreXULSkeletonUIError::FailedLoadingDynamicProcs);
1439+
}
1440+
sGetWindowDC = (GetWindowDCProc)::GetProcAddress(user32Dll, "GetWindowDC");
1441+
if (!sGetWindowDC) {
1442+
return Err(PreXULSkeletonUIError::FailedLoadingDynamicProcs);
1443+
}
1444+
sFillRect = (FillRectProc)::GetProcAddress(user32Dll, "FillRect");
1445+
if (!sFillRect) {
1446+
return Err(PreXULSkeletonUIError::FailedLoadingDynamicProcs);
1447+
}
1448+
sReleaseDC = (ReleaseDCProc)::GetProcAddress(user32Dll, "ReleaseDC");
1449+
if (!sReleaseDC) {
1450+
return Err(PreXULSkeletonUIError::FailedLoadingDynamicProcs);
1451+
}
1452+
sLoadIconW = (LoadIconWProc)::GetProcAddress(user32Dll, "LoadIconW");
1453+
if (!sLoadIconW) {
1454+
return Err(PreXULSkeletonUIError::FailedLoadingDynamicProcs);
1455+
}
1456+
sLoadCursorW = (LoadCursorWProc)::GetProcAddress(user32Dll, "LoadCursorW");
1457+
if (!sLoadCursorW) {
1458+
return Err(PreXULSkeletonUIError::FailedLoadingDynamicProcs);
1459+
}
1460+
sMonitorFromWindow =
1461+
(MonitorFromWindowProc)::GetProcAddress(user32Dll, "MonitorFromWindow");
1462+
if (!sMonitorFromWindow) {
1463+
return Err(PreXULSkeletonUIError::FailedLoadingDynamicProcs);
1464+
}
1465+
sGetMonitorInfoW =
1466+
(GetMonitorInfoWProc)::GetProcAddress(user32Dll, "GetMonitorInfoW");
1467+
if (!sGetMonitorInfoW) {
1468+
return Err(PreXULSkeletonUIError::FailedLoadingDynamicProcs);
1469+
}
1470+
sSetWindowLongPtrW =
1471+
(SetWindowLongPtrWProc)::GetProcAddress(user32Dll, "SetWindowLongPtrW");
1472+
if (!sSetWindowLongPtrW) {
1473+
return Err(PreXULSkeletonUIError::FailedLoadingDynamicProcs);
1474+
}
1475+
sStretchDIBits =
1476+
(StretchDIBitsProc)::GetProcAddress(gdi32Dll, "StretchDIBits");
1477+
if (!sStretchDIBits) {
1478+
return Err(PreXULSkeletonUIError::FailedLoadingDynamicProcs);
1479+
}
1480+
sCreateSolidBrush =
1481+
(CreateSolidBrushProc)::GetProcAddress(gdi32Dll, "CreateSolidBrush");
1482+
if (!sCreateSolidBrush) {
1483+
return Err(PreXULSkeletonUIError::FailedLoadingDynamicProcs);
1484+
}
1485+
sDeleteObject = (DeleteObjectProc)::GetProcAddress(gdi32Dll, "DeleteObject");
1486+
if (!sDeleteObject) {
1487+
return Err(PreXULSkeletonUIError::FailedLoadingDynamicProcs);
1488+
}
14241489

14251490
return Ok();
14261491
}

0 commit comments

Comments
 (0)