commit f28c94d4d5e7b3f81577f81977e2d756770dd1c7 Author: Aric Stewart Date: Tue Jun 22 21:48:50 2010 +0900 winex11.drv: make UploadGlyph fallback to notdef and space so as to not fail diff --git a/dlls/winex11.drv/xrender.c b/dlls/winex11.drv/xrender.c index 810b163..0a28318 100644 --- a/dlls/winex11.drv/xrender.c +++ b/dlls/winex11.drv/xrender.c @@ -1205,7 +1205,7 @@ void X11DRV_XRender_UpdateDrawable(X11DRV_PDEVICE *physDev) * * Helper to ExtTextOut. Must be called inside xrender_cs */ -static BOOL UploadGlyph(X11DRV_PDEVICE *physDev, int glyph, AA_Type format) +static VOID UploadGlyph(X11DRV_PDEVICE *physDev, int glyph, AA_Type format) { unsigned int buflen; char *buf; @@ -1252,8 +1252,16 @@ static BOOL UploadGlyph(X11DRV_PDEVICE *physDev, int glyph, AA_Type format) buflen = GetGlyphOutlineW(physDev->hdc, glyph, ggo_format, &gm, 0, NULL, &identity); } if(buflen == GDI_ERROR) { - WARN("GetGlyphOutlineW failed\n"); - return FALSE; + WARN("GetGlyphOutlineW failed using default glyph\n"); + buflen = GetGlyphOutlineW(physDev->hdc, 0, ggo_format, &gm, 0, NULL, &identity); + if(buflen == GDI_ERROR) { + WARN("GetGlyphOutlineW failed for default glyph trying for space\n"); + buflen = GetGlyphOutlineW(physDev->hdc, 0x20, ggo_format, &gm, 0, NULL, &identity); + if(buflen == GDI_ERROR) { + ERR("GetGlyphOutlineW for all attempts unable to upload a glyph\n"); + return; + } + } } TRACE("Turning off antialiasing for this monochrome font\n"); } @@ -1423,8 +1431,6 @@ static BOOL UploadGlyph(X11DRV_PDEVICE *physDev, int glyph, AA_Type format) } formatEntry->gis[glyph] = gi; - - return TRUE; } static void SharpGlyphMono(X11DRV_PDEVICE *physDev, INT x, INT y,