diff options
Diffstat (limited to 'win32/PlatWin.cxx')
-rw-r--r-- | win32/PlatWin.cxx | 50 |
1 files changed, 26 insertions, 24 deletions
diff --git a/win32/PlatWin.cxx b/win32/PlatWin.cxx index 082a177e6..507075a77 100644 --- a/win32/PlatWin.cxx +++ b/win32/PlatWin.cxx @@ -3280,31 +3280,33 @@ void Platform_Initialise(void *hInstance) { #pragma warning(default: 4996) #endif -void Platform_Finalise() { +void Platform_Finalise(bool fromDllMain) { #if defined(USE_D2D) - if (defaultRenderingParams) { - defaultRenderingParams->Release(); - defaultRenderingParams = 0; - } - if (customClearTypeRenderingParams) { - customClearTypeRenderingParams->Release(); - customClearTypeRenderingParams = 0; - } - if (pIDWriteFactory) { - pIDWriteFactory->Release(); - pIDWriteFactory = 0; - } - if (pD2DFactory) { - pD2DFactory->Release(); - pD2DFactory = 0; - } - if (hDLLDWrite) { - FreeLibrary(hDLLDWrite); - hDLLDWrite = NULL; - } - if (hDLLD2D) { - FreeLibrary(hDLLD2D); - hDLLD2D = NULL; + if (!fromDllMain) { + if (defaultRenderingParams) { + defaultRenderingParams->Release(); + defaultRenderingParams = 0; + } + if (customClearTypeRenderingParams) { + customClearTypeRenderingParams->Release(); + customClearTypeRenderingParams = 0; + } + if (pIDWriteFactory) { + pIDWriteFactory->Release(); + pIDWriteFactory = 0; + } + if (pD2DFactory) { + pD2DFactory->Release(); + pD2DFactory = 0; + } + if (hDLLDWrite) { + FreeLibrary(hDLLDWrite); + hDLLDWrite = NULL; + } + if (hDLLD2D) { + FreeLibrary(hDLLD2D); + hDLLD2D = NULL; + } } #endif if (reverseArrowCursor != NULL) |