summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2009-09-04 09:35:22 +0100
committerChris Wilson <chris@chris-wilson.co.uk>2009-09-04 09:35:22 +0100
commitb065303740cc18fbcabfeef34d09c7d8b617647e (patch)
treea391202e1cf99a40586d75b05948420ed214926f
parent634fdb4afd15e2467979609b1af7c1c198fc83d4 (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.c19
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;