[cairo-commit] 2 commits - src/cairo-xlib-display.c test/Makefile.sources test/outline-tolerance.c test/reference

Chris Wilson ickle at kemper.freedesktop.org
Mon Aug 20 05:37:01 PDT 2012


 src/cairo-xlib-display.c                 |    4 +-
 test/Makefile.sources                    |    1 
 test/outline-tolerance.c                 |   52 +++++++++++++++++++++++++++++++
 test/reference/outline-tolerance.ref.png |binary
 4 files changed, 55 insertions(+), 2 deletions(-)

New commits:
commit 2a0d81743270aaff29e8951c896cde644fd4e576
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Mon Aug 20 13:34:33 2012 +0100

    tests: Add outline-tolerance
    
    From https://bugs.freedesktop.org/show_bug.cgi?id=53841:
    
    "Rectangle drawn incorrectly when it has zero height
    and miter limit greater than 1.414"
    
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/test/Makefile.sources b/test/Makefile.sources
index 8975b46..ca509ba 100644
--- a/test/Makefile.sources
+++ b/test/Makefile.sources
@@ -224,6 +224,7 @@ test_sources = \
 	operator-alpha-alpha.c				\
 	operator-clear.c				\
 	operator-source.c				\
+	outline-tolerance.c				\
 	over-above-source.c				\
 	over-around-source.c				\
 	over-below-source.c				\
diff --git a/test/outline-tolerance.c b/test/outline-tolerance.c
new file mode 100644
index 0000000..6453f5c
--- /dev/null
+++ b/test/outline-tolerance.c
@@ -0,0 +1,52 @@
+/*
+ * Copyright © 2012 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person
+ * obtaining a copy of this software and associated documentation
+ * files (the "Software"), to deal in the Software without
+ * restriction, including without limitation the rights to use, copy,
+ * modify, merge, publish, distribute, sublicense, and/or sell copies
+ * of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+ * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ *
+ * Author: Chris Wilson <chris at chris-wilson.co.uk>
+ */
+
+#include "cairo-test.h"
+
+/* An assertion failure found by Rico Tzschichholz */
+
+static cairo_test_status_t
+draw (cairo_t *cr, int width, int height)
+{
+    cairo_set_source_rgb (cr, 0, 1, 0);
+    cairo_paint (cr);
+    cairo_set_source_rgb (cr, 1, 0, 0);
+
+    cairo_set_line_join (cr, CAIRO_LINE_JOIN_MITER);
+    cairo_set_line_width (cr, 200);
+    cairo_set_miter_limit (cr, 1.5);
+    cairo_rectangle (cr, 100, 25, 1000, 0);
+    cairo_stroke (cr);
+
+    return CAIRO_TEST_SUCCESS;
+}
+
+CAIRO_TEST (outline_tolerance,
+	    "Rectangle drawn incorrectly when it has zero height and miter limit greater than 1.414",
+	    "stroke", /* keywords */
+	    NULL, /* requirements */
+	    100, 50,
+	    NULL, draw)
diff --git a/test/reference/outline-tolerance.ref.png b/test/reference/outline-tolerance.ref.png
new file mode 100644
index 0000000..2733836
Binary files /dev/null and b/test/reference/outline-tolerance.ref.png differ
commit d6f8ce91dc449a29b0921a8787d9a3c9a687b429
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Sun Aug 19 23:55:28 2012 +0100

    xlib: Move the shm cleanup from CloseDisplay to finish()
    
    Make sure that we always detach the ShmSegments upon dispose, or else we
    can trivially leak lots of memory when using serial Display connections.
    
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/src/cairo-xlib-display.c b/src/cairo-xlib-display.c
index bfe6168..656164a 100644
--- a/src/cairo-xlib-display.c
+++ b/src/cairo-xlib-display.c
@@ -83,6 +83,8 @@ _cairo_xlib_display_finish (void *abstract_display)
 								link));
 	}
 
+	_cairo_xlib_display_fini_shm (display);
+
 	XSync (dpy, False);
 	XSetErrorHandler (old_handler);
 
@@ -95,8 +97,6 @@ _cairo_xlib_display_destroy (void *abstract_display)
 {
     cairo_xlib_display_t *display = abstract_display;
 
-    _cairo_xlib_display_fini_shm (display);
-
     free (display);
 }
 


More information about the cairo-commit mailing list