summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Manjarres <danmanj@gmail.com>2014-06-22 09:47:58 -0700
committerBrian Paul <brianp@vmware.com>2014-10-13 22:05:58 -0600
commit291be28476ea60c6fb1eb2a882e2e25def5d3735 (patch)
tree37a44d8c091e6dd87433dd9eb53a01640d1ed89d
parent4e2cf84b1f5fd9f52dd1a12947a405a25d1e2137 (diff)
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 about bad drawables and bad graphics contexts. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=54372 Cc: mesa-stable@lists.freedesktop.org Reviewed-by: Brian Paul <brianp@vmware.com>
-rw-r--r--src/glx/xfont.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/glx/xfont.c b/src/glx/xfont.c
index 316c585ff3a..a086b7a03ef 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);