[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,25 +494,34 @@ ExtTextOutW(
{ {
PDC_ATTR pdcattr; PDC_ATTR pdcattr;
HANDLE_METADC(BOOL, if ( !bBypassETOWMF )
ExtTextOut, {
FALSE, HANDLE_METADC(BOOL,
hdc, ExtTextOut,
x, FALSE,
y, hdc,
fuOptions, x,
lprc, y,
lpString, fuOptions,
cwc, lprc,
lpDx); lpString,
cwc,
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);