[cairo] [PATCH] gl: Keep window size the same as surface's size.

Chuanbo Weng strgnm at gmail.com
Thu Jun 28 17:48:49 PDT 2012


When we pass non-integer width and height to
_cairo_boilerplate_gl_create_window(), it will create a window and
a gl-surface with different size. This will result in some problems.
For example, if we create a window and a gl-surface by invoking
_cairo_boilerplate_gl_create_window(, , 39.5, 39.5, ...), and do a
simple fill operation:
    cairo_set_source_rgb (cr, 1, 0, 0);
    cairo_rectangle (cr, 0, 0, 10, 1);
    cairo_fill(cr);
There will be no red rectangle in output, which is not correct.
This patch fixes 5 cases in cairo-test-suite, for example,
group-unaligned.
---
 boilerplate/cairo-boilerplate-glx.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/boilerplate/cairo-boilerplate-glx.c b/boilerplate/cairo-boilerplate-glx.c
index 35e8192..d597c81 100644
--- a/boilerplate/cairo-boilerplate-glx.c
+++ b/boilerplate/cairo-boilerplate-glx.c
@@ -200,7 +200,7 @@ _cairo_boilerplate_gl_create_window (const char 	       *name,
     attr.border_pixel = 0;
     attr.override_redirect = True;
     gltc->drawable = XCreateWindow (dpy, DefaultRootWindow (dpy), 0, 0,
-				    width, height, 0, vi->depth,
+				    ceil (width), ceil (height), 0, vi->depth,
 				    InputOutput, vi->visual,
 				    CWOverrideRedirect | CWBorderPixel | CWColormap,
 				    &attr);
@@ -281,7 +281,7 @@ _cairo_boilerplate_gl_create_window_db (const char		  *name,
     attr.border_pixel = 0;
     attr.override_redirect = True;
     gltc->drawable = XCreateWindow (dpy, DefaultRootWindow (dpy), 0, 0,
-				    width, height, 0, vi->depth,
+				    ceil (width), ceil (height), 0, vi->depth,
 				    InputOutput, vi->visual,
 				    CWOverrideRedirect | CWBorderPixel | CWColormap,
 				    &attr);
-- 
1.7.5.4



More information about the cairo mailing list