From 2db1da2a1a1413ef6d7b89b873f2a045045f4103 Mon Sep 17 00:00:00 2001 From: Daniel Manjarres Date: Sun, 22 Jun 2014 09:47:58 -0700 Subject: [PATCH] glx: Fix glxUseXFont for glxWindow and glxPixmaps The current implementation of glxUseXFont requires creating a temporary pixmap and graphics context, which requires a real old-school X11 Window, not a glxDrawable. This patch changes things so that glxUseXFont will also accept a glxWindow or glxPixmap, and lookup the underlying X11 Drawable. Without this patch glxUseXFont generates a giant stream of Xerrors bout bad drawables and bad graphics contexts. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=54372 --- src/glx/xfont.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/glx/xfont.c b/src/glx/xfont.c index 316c585..8735386 100644 --- a/src/glx/xfont.c +++ b/src/glx/xfont.c @@ -221,6 +221,7 @@ DRI_glXUseXFont(struct glx_context *CC, Font font, int first, int count, int lis XGCValues values; unsigned long valuemask; XFontStruct *fs; + __GLXDRIdrawable *glxdraw; GLint swapbytes, lsbfirst, rowlength; GLint skiprows, skippixels, alignment; @@ -233,6 +234,10 @@ DRI_glXUseXFont(struct glx_context *CC, Font font, int first, int count, int lis dpy = CC->currentDpy; win = CC->currentDrawable; + glxdraw = GetGLXDRIDrawable(CC->currentDpy, CC->currentDrawable); + if(glxdraw) + win = glxdraw->xDrawable; + fs = XQueryFont(dpy, font); if (!fs) { __glXSetError(CC, GL_INVALID_VALUE); -- 1.8.4.4