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) | 
