[cairo-commit] 8 commits - configure.in NEWS RELEASING src/cairo-image-surface.c src/Makefile.am

Carl Worth cworth at kemper.freedesktop.org
Mon Apr 14 16:53:57 PDT 2008


 NEWS                      |   29 +++++++++++++++++++++++++++++
 RELEASING                 |   13 +++++++------
 configure.in              |    4 ++--
 src/Makefile.am           |    1 -
 src/cairo-image-surface.c |    3 ++-
 5 files changed, 40 insertions(+), 10 deletions(-)

New commits:
commit 4ff59960f343f072efd10bfbfd78b8b2fbe1d4be
Author: Kouhei Sutou <kou at cozmixng.org>
Date:   Mon Apr 14 16:53:37 2008 -0700

    Fix typo in documentation (missing stride argument)

diff --git a/src/cairo-image-surface.c b/src/cairo-image-surface.c
index 092b77e..41e6bbd 100644
--- a/src/cairo-image-surface.c
+++ b/src/cairo-image-surface.c
@@ -392,7 +392,8 @@ _cairo_image_surface_create_with_content (cairo_content_t	content,
  * stride = cairo_format_stride_for_width (format, width);
  * data = malloc (stride * height);
  * surface = cairo_image_surface_create_for_data (data, format,
- *						  width, height);
+ *						  width, height,
+ *						  stride);
  * </programlisting></informalexample>
  *
  * Return value: the appropriate stride to use given the desired
commit e01072d4eae5a40f09a46373680d4ba6afa5c4e4
Author: Carl Worth <cworth at cworth.org>
Date:   Mon Apr 14 16:52:40 2008 -0700

    RELEASING: Send announcement of major releases to pr at lwn.net as well

diff --git a/RELEASING b/RELEASING
index 36e865e..431d780 100644
--- a/RELEASING
+++ b/RELEASING
@@ -105,12 +105,13 @@ Here are the steps to follow to create a new cairo release:
    odd micro version).
 
 10) Send a message to cairo-announce at cairographics.org and CC
-    gnome-announce-list at gnome.org to announce the new release using
-    the text provided from "make release-publish", adding the excerpt
-    from NEWS, your signature, followed by the standard "What is cairo"
-    and "Where to get more information about cairo" blurbs from README,
-    and finally tacking on the detailed changelog-ish thing that gets
-    mailed out when you push the tag (but not the diffstat thing).
+    gnome-announce-list at gnome.org, (pr at lwn.net as well for major
+    releases) to announce the new release using the text provided from
+    "make release-publish", adding the excerpt from NEWS, your
+    signature, followed by the standard "What is cairo" and "Where to
+    get more information about cairo" blurbs from README, and finally
+    tacking on the detailed changelog-ish thing that gets mailed out
+    when you push the tag (but not the diffstat thing).
 
 11) Edit the cairo wiki to add the announcement to the NEWS page and
     the front page. (just the parts before your signature).
commit 9db764c732ef6e3405866a60762592625aa94ca4
Merge: d96fdd5... 44e6cdd...
Author: Carl Worth <cworth at cworth.org>
Date:   Mon Apr 14 16:39:27 2008 -0700

    Merge in '1.6'
    
    This gets us a fix for not linking with g++ from 1.6.4
    
    We don't take from 1.6.4 the revert of the addition of
    missing locking from the GC cache, (meanwhile, we've
    already got a corrected fix for this).
    
    Conflicts:
    
    	src/cairo-xlib-screen.c

commit 44e6cdd9b1eb3330d3f4ef4929d0af50cd0010e5
Author: Carl Worth <cworth at cworth.org>
Date:   Fri Apr 11 14:48:18 2008 -0700

    Increment version to 1.6.5 after the 1.6.4 release

diff --git a/configure.in b/configure.in
index 685a5f1..6aa1052 100644
--- a/configure.in
+++ b/configure.in
@@ -7,7 +7,7 @@ dnl For the micro number: odd => in-progress development (from git)
 dnl			  even => tar-file snapshot or release
 m4_define(cairo_version_major, 1)
 m4_define(cairo_version_minor, 6)
-m4_define(cairo_version_micro, 4)
+m4_define(cairo_version_micro, 5)
 
 AC_INIT([cairo],
       cairo_version_major.cairo_version_minor.cairo_version_micro,
commit 08a804806355d99d7968976d6afb98bbc0f2613d
Author: Carl Worth <cworth at cworth.org>
Date:   Fri Apr 11 14:33:12 2008 -0700

    Increment version to 1.6.4

diff --git a/configure.in b/configure.in
index 065ff31..685a5f1 100644
--- a/configure.in
+++ b/configure.in
@@ -7,7 +7,7 @@ dnl For the micro number: odd => in-progress development (from git)
 dnl			  even => tar-file snapshot or release
 m4_define(cairo_version_major, 1)
 m4_define(cairo_version_minor, 6)
-m4_define(cairo_version_micro, 3)
+m4_define(cairo_version_micro, 4)
 
 AC_INIT([cairo],
       cairo_version_major.cairo_version_minor.cairo_version_micro,
@@ -30,7 +30,7 @@ LT_CURRENT=19
 
 # Increment any time the source changes; set to
 # 0 if you increment CURRENT
-LT_REVISION=4
+LT_REVISION=5
 
 # Increment if any interfaces have been added; set to 0
 # if any interfaces have been removed. removal has
commit a96176e12fa99b293453fa0321b1dfa4fd242917
Author: Carl Worth <cworth at cworth.org>
Date:   Fri Apr 11 14:32:37 2008 -0700

    NEWS: Add notes for cairo 1.6.4

diff --git a/NEWS b/NEWS
index 4b34a30..9aa263c 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,32 @@
+Release 1.6.4 (2008-04-11 Carl Worth <cworth at cworth.org>)
+=========================================================
+The cairo community is wildly embarrassed to announce the 1.6.4
+release of the cairo graphics library. This release reverts the xlib
+locking change introduced in 1.6.4, (and the application crashes that
+it caused).  The community would be glad to sack its current release
+manager and is accepting applications for someone who could do the job
+with more discipline.
+
+Revert 'add missing locking in cairo-xlib'
+------------------------------------------
+This change was introduced in cairo 1.6.2, but also introduced a bug
+which causes many cairo-xlib applications to crash, (with a
+segmentation fault inside of XSetClipMask). Instead of attempting
+another fix for the broken fix, the change in 1.6.2 has been
+reverted. The original bug which the change was addressing has been
+present since at least cairo 1.4, so it is not expected that leaving
+this bug unfixed will cause any new problems for applications moving
+from cairo 1.4 to cairo 1.6.
+
+At this point, the code of cairo 1.6.4 differs from cairo 1.6.0 only
+in the fix for the PostScript-printer crashes.
+
+Tweak build to avoid linking with g++
+-------------------------------------
+Cairo 1.6.4 avoids a quirk in automake that was causing the cairo
+library to be linked with g++ and linked against libstdc++ even when
+only C source files were compiled for the library.
+
 Release 1.6.2 (2008-04-11 Carl Worth <cworth at cworth.org>)
 =========================================================
 The cairo community is pleased (but somewhat sheepish) to announce the
commit 32e576382bc08ffaf98ebfc11c96e1453c437bbe
Author: Carl Worth <cworth at cworth.org>
Date:   Fri Apr 11 14:13:03 2008 -0700

    Prevent cairo from being linked unnecessarilly with g++
    
    The beos backend involves a source file written in C++.
    Apparently, automake sees the conditional inclusion of
    that source file and insists on doing the final link of
    cairo with g++ even though that file isn't being compiled
    at all.
    
    We definitely don't want that as it makes libcairo link
    and depend on libstdc++ unnecessarily, (which can break
    distribution packaging when not expecting it, etc.).

diff --git a/src/Makefile.am b/src/Makefile.am
index dfdcf1e..e56485c 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -235,7 +235,6 @@ beos_sources = cairo-beos-surface.cpp
 cairo_all_sources += $(beos_headers) $(beos_sources)
 if CAIRO_HAS_BEOS_SURFACE
 cairo_headers += $(beos_headers)
-cairo_sources += $(beos_sources)
 backend_pkgconfigs += cairo-beos.pc
 
 noinst_LTLIBRARIES = libcairo_beos.la
commit 8f1c8d4b26d6da11101c51ef388d1dcc7177cfb4
Author: Carl Worth <cworth at cworth.org>
Date:   Fri Apr 11 13:48:38 2008 -0700

    Revert "[xlib] Add locking around GC cache."
    
    This reverts commit 9cfd82e87b60c0d65e9cafda026cb9a498874575.
    
    The fix was broken as it introduced crashes by calling
    XSetClipMask with a NULL GC, (basically a reintroduction
    of the bug originally fixed here:
    
    	7802de6d5edaf998c98b141870dc2c6b4c0f3e91
    
    Let's revert for sake of the release, and fix this correctly
    on master.

diff --git a/src/cairo-xlib-private.h b/src/cairo-xlib-private.h
index 2d9737d..5bfc2ec 100644
--- a/src/cairo-xlib-private.h
+++ b/src/cairo-xlib-private.h
@@ -79,7 +79,6 @@ typedef struct _cairo_xlib_visual_info {
 struct _cairo_xlib_screen_info {
     cairo_xlib_screen_info_t *next;
     cairo_reference_count_t ref_count;
-    cairo_mutex_t mutex;
 
     cairo_xlib_display_t *display;
     Screen *screen;
diff --git a/src/cairo-xlib-screen.c b/src/cairo-xlib-screen.c
index fc07fda..8a3da66 100644
--- a/src/cairo-xlib-screen.c
+++ b/src/cairo-xlib-screen.c
@@ -256,14 +256,12 @@ _cairo_xlib_screen_info_close_display (cairo_xlib_screen_info_t *info)
 {
     int i;
 
-    CAIRO_MUTEX_LOCK (info->mutex);
     for (i = 0; i < ARRAY_LENGTH (info->gc); i++) {
 	if (info->gc[i] != NULL) {
 	    XFreeGC (info->display->display, info->gc[i]);
 	    info->gc[i] = NULL;
 	}
     }
-    CAIRO_MUTEX_UNLOCK (info->mutex);
 }
 
 void
@@ -297,8 +295,6 @@ _cairo_xlib_screen_info_destroy (cairo_xlib_screen_info_t *info)
 
     _cairo_array_fini (&info->visuals);
 
-    CAIRO_MUTEX_FINI (info->mutex);
-
     free (info);
 }
 
@@ -339,7 +335,6 @@ _cairo_xlib_screen_info_get (Display *dpy, Screen *screen)
 	info = malloc (sizeof (cairo_xlib_screen_info_t));
 	if (info != NULL) {
 	    CAIRO_REFERENCE_COUNT_INIT (&info->ref_count, 2); /* Add one for display cache */
-	    CAIRO_MUTEX_INIT (info->mutex);
 	    info->display = _cairo_xlib_display_reference (display);
 	    info->screen = screen;
 	    info->has_render = FALSE;
@@ -390,18 +385,16 @@ GC
 _cairo_xlib_screen_get_gc (cairo_xlib_screen_info_t *info, int depth)
 {
     GC gc;
-    cairo_bool_t needs_reset;
 
     depth = depth_to_index (depth);
 
-    CAIRO_MUTEX_LOCK (info->mutex);
     gc = info->gc[depth];
     info->gc[depth] = NULL;
-    needs_reset = info->gc_needs_clip_reset & (1 << depth);
-    CAIRO_MUTEX_UNLOCK (info->mutex);
 
-    if (needs_reset)
+    if (info->gc_needs_clip_reset & (1 << depth)) {
 	XSetClipMask(info->display->display, gc, None);
+	info->gc_needs_clip_reset &= ~(1 << depth);
+    }
 
     return gc;
 }
@@ -410,25 +403,21 @@ cairo_status_t
 _cairo_xlib_screen_put_gc (cairo_xlib_screen_info_t *info, int depth, GC gc, cairo_bool_t reset_clip)
 {
     cairo_status_t status = CAIRO_STATUS_SUCCESS;
-    GC oldgc;
 
     depth = depth_to_index (depth);
 
-    CAIRO_MUTEX_LOCK (info->mutex);
-    oldgc = info->gc[depth];
+    if (info->gc[depth] != NULL) {
+	status = _cairo_xlib_display_queue_work (info->display,
+		                               (cairo_xlib_notify_func) XFreeGC,
+					       info->gc[depth],
+					       NULL);
+    }
+
     info->gc[depth] = gc;
     if (reset_clip)
 	info->gc_needs_clip_reset |= 1 << depth;
     else
 	info->gc_needs_clip_reset &= ~(1 << depth);
-    CAIRO_MUTEX_UNLOCK (info->mutex);
-
-    if (oldgc != NULL) {
-	status = _cairo_xlib_display_queue_work (info->display,
-		                               (cairo_xlib_notify_func) XFreeGC,
-					       oldgc,
-					       NULL);
-    }
 
     return status;
 }


More information about the cairo-commit mailing list