diff --git a/reactos/include/win32k/text.h b/reactos/include/win32k/text.h index 2f15da1c667..1c6beff9a94 100644 --- a/reactos/include/win32k/text.h +++ b/reactos/include/win32k/text.h @@ -7,6 +7,7 @@ typedef struct { LOGFONTW logfont; FONTOBJ *Font; + BOOLEAN Initialized; /* Don't reinitialize for each DC */ } TEXTOBJ, *PTEXTOBJ; /* Internal interface */ diff --git a/reactos/subsys/win32k/objects/text.c b/reactos/subsys/win32k/objects/text.c index 6497c5182da..7d10025c9e4 100644 --- a/reactos/subsys/win32k/objects/text.c +++ b/reactos/subsys/win32k/objects/text.c @@ -2971,6 +2971,12 @@ TextIntRealizeFont(HFONT FontHandle) return STATUS_INVALID_HANDLE; } + if (TextObj->Initialized) + { + TEXTOBJ_UnlockText(FontHandle); + return STATUS_SUCCESS; + } + if (! RtlCreateUnicodeString(&FaceName, TextObj->logfont.lfFaceName)) { TEXTOBJ_UnlockText(FontHandle); @@ -3003,6 +3009,7 @@ TextIntRealizeFont(HFONT FontHandle) } else { + TextObj->Initialized = TRUE; Status = STATUS_SUCCESS; }