diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2009-09-04 09:35:22 +0100 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2009-09-04 09:35:22 +0100 |
commit | b065303740cc18fbcabfeef34d09c7d8b617647e (patch) | |
tree | a391202e1cf99a40586d75b05948420ed214926f | |
parent | 634fdb4afd15e2467979609b1af7c1c198fc83d4 (diff) |
[xlib] Enable pad_reflect by default
If the XServer claims to support the required Render extension then send
it the operations. However for the cases where we know it does not work,
i.e. the current and previous generations (<=1.6) of Xorg servers, enable
the buggy_pad_reflect fallbacks.
-rw-r--r-- | src/cairo-xlib-display.c | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/src/cairo-xlib-display.c b/src/cairo-xlib-display.c index 0c0ce61c..b517fbf0 100644 --- a/src/cairo-xlib-display.c +++ b/src/cairo-xlib-display.c @@ -316,7 +316,7 @@ _cairo_xlib_display_get (Display *dpy, #else display->buggy_gradients = FALSE; #endif - display->buggy_pad_reflect = TRUE; + display->buggy_pad_reflect = FALSE; display->buggy_repeat = FALSE; /* This buggy_repeat condition is very complicated because there @@ -361,28 +361,33 @@ _cairo_xlib_display_get (Display *dpy, * exactly when second the bug started, but since bug 1 is * present through 6.8.2 and bug 2 is present in 6.9.0 it seems * safest to just blacklist all old-versioning-scheme X servers, - * (just using VendorRelase < 70000000), as buggy_repeat=TRUE. + * (just using VendorRelease < 70000000), as buggy_repeat=TRUE. */ if (strstr (ServerVendor (dpy), "X.Org") != NULL) { if (VendorRelease (dpy) >= 60700000) { if (VendorRelease (dpy) < 70000000) display->buggy_repeat = TRUE; - /* We know that gradients simply do not work in eary Xorg servers */ + /* We know that gradients simply do not work in early Xorg servers */ if (VendorRelease (dpy) < 70200000) - { display->buggy_gradients = TRUE; - } + + /* And the extended repeat modes were not fixed until much later */ + display->buggy_pad_reflect = TRUE; } else { if (VendorRelease (dpy) < 10400000) display->buggy_repeat = TRUE; - if (VendorRelease (dpy) >= 10699000) - display->buggy_pad_reflect = FALSE; + + /* Too many bugs in the early drivers */ + if (VendorRelease (dpy) < 10699000) + display->buggy_pad_reflect = TRUE; } } else if (strstr (ServerVendor (dpy), "XFree86") != NULL) { if (VendorRelease (dpy) <= 40500000) display->buggy_repeat = TRUE; + display->buggy_gradients = TRUE; + display->buggy_pad_reflect = TRUE; } display->next = _cairo_xlib_display_list; |