Index: core/src/fxge/win32/fx_win32_device.cpp |
diff --git a/core/src/fxge/win32/fx_win32_device.cpp b/core/src/fxge/win32/fx_win32_device.cpp |
index 58f8769ac75014e2fadc39c059c4ee2b31d04c0f..44fbd4c399273798b3600036719c003f709c2f49 100644 |
--- a/core/src/fxge/win32/fx_win32_device.cpp |
+++ b/core/src/fxge/win32/fx_win32_device.cpp |
@@ -438,14 +438,20 @@ FX_BOOL CFX_Win32FontInfo::GetFontCharset(void* hFont, int& charset) { |
charset = tm.tmCharSet; |
return TRUE; |
} |
-IFX_SystemFontInfo* IFX_SystemFontInfo::CreateDefault(const char** pUnused) { |
+static FX_BOOL IsGDIEnabled() { |
+ // If GDI is disabled then GetDC for the desktop will fail. |
HDC hdc = ::GetDC(NULL); |
if (hdc) { |
::ReleaseDC(NULL, hdc); |
+ return TRUE; |
+ } |
+ return FALSE; |
+} |
+IFX_SystemFontInfo* IFX_SystemFontInfo::CreateDefault(const char** pUnused) { |
+ if (IsGDIEnabled()) { |
return new CFX_Win32FontInfo; |
} |
- // If GDI is disabled then GetDC for the desktop will fail. Select the |
- // fallback font information class if GDI is disabled. |
+ // Select the fallback font information class if GDI is disabled. |
CFX_Win32FallbackFontInfo* pInfoFallback = new CFX_Win32FallbackFontInfo; |
// Construct the font path manually, SHGetKnownFolderPath won't work under |
// a restrictive sandbox. |
@@ -464,7 +470,9 @@ void CFX_GEModule::InitPlatform() { |
ver.dwOSVersionInfoSize = sizeof(ver); |
GetVersionEx(&ver); |
pPlatformData->m_bHalfTone = ver.dwMajorVersion >= 5; |
- pPlatformData->m_GdiplusExt.Load(); |
+ if (IsGDIEnabled()) { |
+ pPlatformData->m_GdiplusExt.Load(); |
+ } |
m_pPlatformData = pPlatformData; |
m_pFontMgr->SetSystemFontInfo(IFX_SystemFontInfo::CreateDefault(nullptr)); |
} |