Alexandre Julliard : winex11: Chain to the next driver when not using a device font.

Alexandre Julliard julliard at winehq.org
Thu Oct 20 14:25:10 CDT 2011


Module: wine
Branch: master
Commit: f00767807f5077279d70e1c03bf607b1632ef14c
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=f00767807f5077279d70e1c03bf607b1632ef14c

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Tue Oct 18 21:58:06 2011 +0200

winex11: Chain to the next driver when not using a device font.

---

 dlls/winex11.drv/text.c  |   13 ++++++++++---
 dlls/winex11.drv/xfont.c |   12 ++++++++----
 2 files changed, 18 insertions(+), 7 deletions(-)

diff --git a/dlls/winex11.drv/text.c b/dlls/winex11.drv/text.c
index bce0af9..96cc00b 100644
--- a/dlls/winex11.drv/text.c
+++ b/dlls/winex11.drv/text.c
@@ -43,16 +43,21 @@ BOOL X11DRV_ExtTextOut( PHYSDEV dev, INT x, INT y, UINT flags,
     X11DRV_PDEVICE *physDev = get_x11drv_dev( dev );
     RGNDATA *saved_region = NULL;
     unsigned int i;
-    fontObject*		pfo;
+    fontObject*		pfo = XFONT_GetFontObject( physDev->font );
     XFontStruct*	font;
     BOOL		rotated = FALSE;
     XChar2b		*str2b = NULL;
     BOOL		dibUpdateFlag = FALSE;
     BOOL                result = TRUE;
 
+    if (!pfo)
+    {
+        dev = GET_NEXT_PHYSDEV( dev, pExtTextOut );
+        return dev->funcs->pExtTextOut( dev, x, y, flags, lprect, wstr, count, lpDx );
+    }
+
     if (!X11DRV_SetupGCForText( physDev )) return TRUE;
 
-    pfo = XFONT_GetFontObject( physDev->font );
     font = pfo->fs;
 
     if (pfo->lf.lfEscapement && pfo->lpX11Trans)
@@ -232,5 +237,7 @@ BOOL X11DRV_GetTextExtentExPoint( PHYSDEV dev, LPCWSTR str, INT count,
 	HeapFree( GetProcessHeap(), 0, p );
 	return TRUE;
     }
-    return FALSE;
+
+    dev = GET_NEXT_PHYSDEV( dev, pGetTextExtentExPoint );
+    return dev->funcs->pGetTextExtentExPoint( dev, str, count, maxExt, lpnFit, alpDx, size );
 }
diff --git a/dlls/winex11.drv/xfont.c b/dlls/winex11.drv/xfont.c
index 95a082d..78cefed 100644
--- a/dlls/winex11.drv/xfont.c
+++ b/dlls/winex11.drv/xfont.c
@@ -3391,14 +3391,16 @@ BOOL X11DRV_EnumDeviceFonts( PHYSDEV dev, LPLOGFONTW plf, FONTENUMPROCW proc, LP
 BOOL X11DRV_GetTextMetrics(PHYSDEV dev, TEXTMETRICW *metrics)
 {
     X11DRV_PDEVICE *physDev = get_x11drv_dev( dev );
+    fontObject *pfo = XFONT_GetFontObject( physDev->font );
 
-    if( CHECK_PFONT(physDev->font) )
+    if (pfo)
     {
-	fontObject* pfo = __PFONT(physDev->font);
 	X11DRV_cptable[pfo->fi->cptable].pGetTextMetricsW( pfo, metrics );
 	return TRUE;
     }
-    return FALSE;
+
+    dev = GET_NEXT_PHYSDEV( dev, pGetTextMetrics );
+    return dev->funcs->pGetTextMetrics( dev, metrics );
 }
 
 
@@ -3452,5 +3454,7 @@ BOOL X11DRV_GetCharWidth( PHYSDEV dev, UINT firstChar, UINT lastChar, LPINT buff
 
 	return TRUE;
     }
-    return FALSE;
+
+    dev = GET_NEXT_PHYSDEV( dev, pGetCharWidth );
+    return dev->funcs->pGetCharWidth( dev, firstChar, lastChar, buffer );
 }




More information about the wine-cvs mailing list