diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2009-09-20 18:45:09 +0100 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2009-09-20 19:59:21 +0100 |
commit | 878cef62b525e9f13ab2a8ab562ba8b6628aaa1f (patch) | |
tree | 012fd512090561807d5d6082d4f0e7ba17a246c7 | |
parent | 531e8045980c966b8e51df933721f9b86c6b1539 (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.c | 23 |
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)); |