Skip to content
Permalink
Browse files

8234398: Replace ID2D1Factory::GetDesktopDpi with GetDeviceCaps

Reviewed-by: serb, prr
  • Loading branch information
Alexey Ivanov
Alexey Ivanov committed Dec 9, 2019
1 parent 2423298 commit 0e1b84f90e2191978aa651c8cca53e62c1c94bbf
Showing with 5 additions and 28 deletions.
  1. +5 −28 src/java.desktop/windows/native/common/awt/systemscale/systemScale.cpp
@@ -23,7 +23,6 @@
* questions.
*/
#include "systemScale.h"
#include <d2d1.h>
#include <jdk_util.h>
#ifndef MDT_EFFECTIVE_DPI
#define MDT_EFFECTIVE_DPI 0
@@ -52,9 +51,6 @@ void GetScreenDpi(HMONITOR hmon, float *dpiX, float *dpiY)
return;
}

typedef HRESULT(WINAPI D2D1CreateFactoryFunc)
(D2D1_FACTORY_TYPE, REFIID,
CONST D2D1_FACTORY_OPTIONS*, ID2D1Factory**);
typedef HRESULT(WINAPI GetDpiForMonitorFunc)(HMONITOR, int, UINT*, UINT*);
static HMODULE hLibSHCoreDll = NULL;
static GetDpiForMonitorFunc *lpGetDpiForMonitor = NULL;
@@ -75,30 +71,11 @@ void GetScreenDpi(HMONITOR hmon, float *dpiX, float *dpiY)
*dpiY = static_cast<float>(y);
}
} else {
static HMODULE d2dDll = NULL;
static BOOL loadAttempted = FALSE;
static D2D1CreateFactoryFunc *lpD2D1CreateFactory = NULL;
if (!loadAttempted && d2dDll == NULL) {
loadAttempted = TRUE;
d2dDll = JDK_LoadSystemLibrary("d2d1.dll");
}
if (d2dDll != NULL && lpD2D1CreateFactory == NULL) {
lpD2D1CreateFactory = (D2D1CreateFactoryFunc*)GetProcAddress(
d2dDll, "D2D1CreateFactory");
}
if (lpD2D1CreateFactory != NULL) {
ID2D1Factory* m_pDirect2dFactory;
HRESULT res = lpD2D1CreateFactory
(D2D1_FACTORY_TYPE_SINGLE_THREADED,
__uuidof(ID2D1Factory), NULL,
&m_pDirect2dFactory);
if (res == S_OK) {
#pragma warning(push)
#pragma warning(disable : 4996) // GetDesktopDpi is deprecated.
m_pDirect2dFactory->GetDesktopDpi(dpiX, dpiY);
#pragma warning(pop)
m_pDirect2dFactory->Release();
}
HDC hdc = GetDC(NULL);
if (hdc) {
*dpiX = static_cast<float>(GetDeviceCaps(hdc, LOGPIXELSX));
*dpiY = static_cast<float>(GetDeviceCaps(hdc, LOGPIXELSY));
ReleaseDC(NULL, hdc);
}
}
return;

0 comments on commit 0e1b84f

Please sign in to comment.
You can’t perform that action at this time.