[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