summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2009-09-20 18:45:09 +0100
committerChris Wilson <chris@chris-wilson.co.uk>2009-09-20 19:59:21 +0100
commit878cef62b525e9f13ab2a8ab562ba8b6628aaa1f (patch)
tree012fd512090561807d5d6082d4f0e7ba17a246c7
parent531e8045980c966b8e51df933721f9b86c6b1539 (diff)
[xlib] Interim CAIRO_DEBUG variable to specify xrender level
Use CAIRO_DEBUG=xrender-version=x.y to override what the server reports. Useful to test cairo's behaviour against older servers.
-rw-r--r--src/cairo-xlib-display.c23
1 files changed, 19 insertions, 4 deletions
diff --git a/src/cairo-xlib-display.c b/src/cairo-xlib-display.c
index b517fbf0..56ea7c8c 100644
--- a/src/cairo-xlib-display.c
+++ b/src/cairo-xlib-display.c
@@ -237,7 +237,7 @@ _cairo_xlib_display_get (Display *dpy,
cairo_xlib_display_t *display;
cairo_xlib_display_t **prev;
XExtCodes *codes;
- int render_major, render_minor;
+ const char *env;
cairo_status_t status = CAIRO_STATUS_SUCCESS;
/* There is an apparent deadlock between this mutex and the
@@ -281,7 +281,24 @@ _cairo_xlib_display_get (Display *dpy,
* add our hook. For now, that means Render, so we call into its
* QueryVersion function to ensure it gets initialized.
*/
- XRenderQueryVersion (dpy, &render_major, &render_minor);
+ display->render_major = display->render_minor = -1;
+ XRenderQueryVersion (dpy, &display->render_major, &display->render_minor);
+ env = getenv ("CAIRO_DEBUG");
+ if (env != NULL && (env = strstr (env, "xrender-version=")) != NULL) {
+ int max_render_major, max_render_minor;
+
+ env += sizeof ("xrender-version=") - 1;
+ if (sscanf (env, "%d.%d", &max_render_major, &max_render_minor) != 2)
+ max_render_major = max_render_minor = -1;
+
+ if (max_render_major < display->render_major ||
+ (max_render_major == display->render_major &&
+ max_render_minor < display->render_minor))
+ {
+ display->render_major = max_render_major;
+ display->render_minor = max_render_minor;
+ }
+ }
codes = XAddExtension (dpy);
if (unlikely (codes == NULL)) {
@@ -303,8 +320,6 @@ _cairo_xlib_display_get (Display *dpy,
display->close_display_hooks = NULL;
display->closed = FALSE;
- display->render_major = render_major;
- display->render_minor = render_minor;
memset (display->cached_xrender_formats, 0,
sizeof (display->cached_xrender_formats));