summaryrefslogtreecommitdiff
path: root/src/cairo-xlib-display.c
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 /src/cairo-xlib-display.c
parent634fdb4afd15e2467979609b1af7c1c198fc83d4 (diff)
downloadcairo-b065303740cc18fbcabfeef34d09c7d8b617647e.tar.gz
[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.
Diffstat (limited to 'src/cairo-xlib-display.c')
-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 0c0ce61c8..b517fbf07 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;