[GDI32] Fix Meta file packing recursion issues.

TextOut was looping back adding additional EMR packet to the meta file.
This commit is contained in:
James Tabor 2021-09-06 18:37:24 -05:00
parent 03516733ef
commit a022dc8eaf

View file

@ -475,6 +475,7 @@ ExtTextOutA(
return ret; return ret;
} }
static BOOL bBypassETOWMF = FALSE;
/* /*
* @implemented * @implemented
@ -493,6 +494,8 @@ ExtTextOutW(
{ {
PDC_ATTR pdcattr; PDC_ATTR pdcattr;
if ( !bBypassETOWMF )
{
HANDLE_METADC(BOOL, HANDLE_METADC(BOOL,
ExtTextOut, ExtTextOut,
FALSE, FALSE,
@ -504,14 +507,21 @@ ExtTextOutW(
lpString, lpString,
cwc, cwc,
lpDx); lpDx);
}
if ( GdiConvertAndCheckDC(hdc) == NULL ) return FALSE; if ( GdiConvertAndCheckDC(hdc) == NULL ) return FALSE;
if (!(fuOptions & (ETO_GLYPH_INDEX | ETO_IGNORELANGUAGE))) if (!(fuOptions & (ETO_GLYPH_INDEX | ETO_IGNORELANGUAGE)))
{ {
bBypassETOWMF = TRUE;
if (LoadLPK(LPK_ETO)) if (LoadLPK(LPK_ETO))
return LpkExtTextOut(hdc, x, y, fuOptions, lprc, lpString, cwc , lpDx, 0); return LpkExtTextOut(hdc, x, y, fuOptions, lprc, lpString, cwc , lpDx, 0);
} }
else
{
bBypassETOWMF = FALSE;
}
/* Get the DC attribute */ /* Get the DC attribute */
pdcattr = GdiGetDcAttr(hdc); pdcattr = GdiGetDcAttr(hdc);