Author: tkreuzer
Date: Thu Aug 17 09:08:57 2017
New Revision: 75582
URL: http://svn.reactos.org/svn/reactos?rev=75582&view=rev
Log:
[WIN32K] Don't call IntIsFontRenderingEnabled() while holding an exclusive GDI object lock.
Should fix GUI hangs.
Modified:
trunk/reactos/win32ss/gdi/ntgdi/freetype.c
Modified: trunk/reactos/win32ss/gdi/ntgdi/freetype.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/gdi/ntgdi/freetype…
==============================================================================
--- trunk/reactos/win32ss/gdi/ntgdi/freetype.c [iso-8859-1] (original)
+++ trunk/reactos/win32ss/gdi/ntgdi/freetype.c [iso-8859-1] Thu Aug 17 09:08:57 2017
@@ -5111,6 +5111,10 @@
return FALSE;
}
+ /* NOTE: This function locks the screen DC, so it must never be called
+ with a DC already locked */
+ Render = IntIsFontRenderingEnabled();
+
// TODO: Write test-cases to exactly match real Windows in different
// bad parameters (e.g. does Windows check the DC or the RECT first?).
dc = DC_LockDc(hDC);
@@ -5238,7 +5242,6 @@
EmuBold = (plf->lfWeight >= FW_BOLD && FontGDI->OriginalWeight <= FW_NORMAL);
EmuItalic = (plf->lfItalic && !FontGDI->OriginalItalic);
- Render = IntIsFontRenderingEnabled();
if (Render)
RenderMode = IntGetFontRenderMode(plf);
else