rpms/eclipse/devel eclipse-genjavadocoutput.patch, NONE, 1.1 eclipse-helpindexbuilder.patch, NONE, 1.1 eclipse-libswt-cairo1.0-1.patch, NONE, 1.1 eclipse-libswt-cairo1.0-2.patch, NONE, 1.1 eclipse-libswt-cairo1.0-3.patch, NONE, 1.1 eclipse-libswt-cairo1.0-4.patch, NONE, 1.1 eclipse-libswt-enableallandO2.patch, NONE, 1.1 eclipse-webapp-jasperclasspath.patch, NONE, 1.1 eclipse.spec, 1.197, 1.198 eclipse-dontgeneratehelpindices.patch, 1.2, NONE eclipse-javadoc.patch, 1.1, NONE eclipse-make-linux.patch, 1.3, NONE eclipse-swt-nocairo.fc4.patch, 1.1, NONE

fedora-cvs-commits at redhat.com fedora-cvs-commits at redhat.com
Sun Nov 6 15:33:13 UTC 2005


Author: overholt

Update of /cvs/dist/rpms/eclipse/devel
In directory cvs.devel.redhat.com:/tmp/cvs-serv6399

Modified Files:
	eclipse.spec 
Added Files:
	eclipse-genjavadocoutput.patch eclipse-helpindexbuilder.patch 
	eclipse-libswt-cairo1.0-1.patch 
	eclipse-libswt-cairo1.0-2.patch 
	eclipse-libswt-cairo1.0-3.patch 
	eclipse-libswt-cairo1.0-4.patch 
	eclipse-libswt-enableallandO2.patch 
	eclipse-webapp-jasperclasspath.patch 
Removed Files:
	eclipse-dontgeneratehelpindices.patch eclipse-javadoc.patch 
	eclipse-make-linux.patch eclipse-swt-nocairo.fc4.patch 
Log Message:
* Fri Nov 04 2005 Andrew Overholt <overholt at redhat.com> 3.1.1-1jpp_6fc
- Patch org.eclipse.help.webapp jasper classpath.

* Thu Nov 03 2005 Andrew Overholt <overholt at redhat.com> 3.1.1-1jpp_5fc
- Import work done by Debian Eclipse packagers:
  - Add Fedora version in Eclipse about dialog.
  - Update eclipse-javadoc.patch to match Debian's disable-filelog patch.
  - Remove buildDoc patches and add helpindexbuilder patch (e.o#114001).
  - Add patches to build Cairo SWT bindings.


eclipse-genjavadocoutput.patch:
 build.xml                                         |   10 +++++-----
 plugins/org.eclipse.help.webapp/build.xml         |    2 +-
 plugins/org.eclipse.jdt.doc.isv/buildDoc.xml      |    2 +-
 plugins/org.eclipse.pde.doc.user/buildDoc.xml     |    2 +-
 plugins/org.eclipse.platform.doc.isv/buildDoc.xml |    2 +-
 5 files changed, 9 insertions(+), 9 deletions(-)

--- NEW FILE eclipse-genjavadocoutput.patch ---
--- build.xml.orig	2005-11-03 12:03:42.000000000 -0500
+++ build.xml	2005-11-03 12:09:26.000000000 -0500
@@ -130,19 +130,19 @@
 		 pde.convertSchemaToHTML and help.buildHelpIndex tasks which are used when generating extension-point and help indeces.-->
 		<antcall target="install.eclipse.${archive.format}" />
 
-		<java fork="true" jar="${buildDirectory}/eclipse/startup.jar" dir="${buildDirectory}/plugins/org.eclipse.platform.doc.isv" output="platform.doc.isv.txt">
+		<java fork="true" jar="${buildDirectory}/eclipse/startup.jar" dir="${buildDirectory}/plugins/org.eclipse.platform.doc.isv">
 			<arg line="-data ${buildDirectory}/workspace -application org.eclipse.ant.core.antRunner gather.bin.parts -Ddestination.temp.folder=${buildDirectory}/tmp/eclipse/plugins/" />
 		</java>
-		<java fork="true" jar="${buildDirectory}/eclipse/startup.jar" dir="${buildDirectory}/plugins/org.eclipse.platform.doc.user" output="platform.doc.user.txt">
+		<java fork="true" jar="${buildDirectory}/eclipse/startup.jar" dir="${buildDirectory}/plugins/org.eclipse.platform.doc.user">
 			<arg line="-data ${buildDirectory}/workspace -application org.eclipse.ant.core.antRunner gather.bin.parts -Ddestination.temp.folder=${buildDirectory}/tmp/eclipse/plugins/" />
 		</java>
-		<java fork="true" jar="${buildDirectory}/eclipse/startup.jar" dir="${buildDirectory}/plugins/org.eclipse.jdt.doc.isv" output="jdt.doc.isv.txt">
+		<java fork="true" jar="${buildDirectory}/eclipse/startup.jar" dir="${buildDirectory}/plugins/org.eclipse.jdt.doc.isv">
 			<arg line="-data ${buildDirectory}/workspace -application org.eclipse.ant.core.antRunner gather.bin.parts -Ddestination.temp.folder=${buildDirectory}/tmp/eclipse/plugins/" />
 		</java>
-		<java fork="true" jar="${buildDirectory}/eclipse/startup.jar" dir="${buildDirectory}/plugins/org.eclipse.jdt.doc.user" output="jdt.doc.user.txt">
+		<java fork="true" jar="${buildDirectory}/eclipse/startup.jar" dir="${buildDirectory}/plugins/org.eclipse.jdt.doc.user">
 			<arg line="-data ${buildDirectory}/workspace -application org.eclipse.ant.core.antRunner gather.bin.parts -Ddestination.temp.folder=${buildDirectory}/tmp/eclipse/plugins/" />
 		</java>
-		<java fork="true" jar="${buildDirectory}/eclipse/startup.jar" dir="${buildDirectory}/plugins/org.eclipse.pde.doc.user" output="pde.doc.user.txt">
+		<java fork="true" jar="${buildDirectory}/eclipse/startup.jar" dir="${buildDirectory}/plugins/org.eclipse.pde.doc.user">
 			<arg line="-data ${buildDirectory}/workspace -application org.eclipse.ant.core.antRunner gather.bin.parts -Ddestination.temp.folder=${buildDirectory}/tmp/eclipse/plugins/" />
 		</java>
 
diff -uNr plugins.orig/org.eclipse.help.webapp/build.xml plugins/org.eclipse.help.webapp/build.xml
--- plugins.orig/org.eclipse.help.webapp/build.xml	2005-11-03 12:07:29.000000000 -0500
+++ plugins/org.eclipse.help.webapp/build.xml	2005-11-03 12:07:46.000000000 -0500
@@ -170,7 +170,7 @@
 			fork="true"
 			failonerror="false"
 			classpathref="jasper.classpath"
-			output="${temp.folder}/WEB-INF/lib/jsp.jar.bin.log">
+			>
 			<arg value="-d" /><arg value="${temp.folder}/jsp.jar.src" />
 			<arg value="-die" />
 			<arg value="-p" /><arg value="org.eclipse.help.internal.webapp.jsp"/>
diff -uNr plugins.orig/org.eclipse.jdt.doc.isv/buildDoc.xml plugins/org.eclipse.jdt.doc.isv/buildDoc.xml
--- plugins.orig/org.eclipse.jdt.doc.isv/buildDoc.xml	2005-11-03 12:08:20.000000000 -0500
+++ plugins/org.eclipse.jdt.doc.isv/buildDoc.xml	2005-11-03 12:06:01.000000000 -0500
@@ -67,7 +67,7 @@
 	<delete dir="reference/api"/>
 	<mkdir dir="reference/api"/>
 
-	<exec dir="." executable="${javadoc}" output="doc.bin.log">
+	<exec dir="." executable="${javadoc}">
 		<arg line="@${basedir}/${optionsFile} -J-Xmx500M" />
 	</exec>
 </target>
diff -uNr plugins.orig/org.eclipse.pde.doc.user/buildDoc.xml plugins/org.eclipse.pde.doc.user/buildDoc.xml
--- plugins.orig/org.eclipse.pde.doc.user/buildDoc.xml	2005-11-03 12:09:10.000000000 -0500
+++ plugins/org.eclipse.pde.doc.user/buildDoc.xml	2005-11-03 12:06:01.000000000 -0500
@@ -51,7 +51,7 @@
 		<delete dir="reference/api"/>
 		<mkdir dir="reference/api"/>
 
-		<exec dir="." executable="${javadoc}" output="doc.bin.log">
+		<exec dir="." executable="${javadoc}">
 			<arg line="@${basedir}/${optionsFile} -J-Xmx1000M" />
 		</exec>
 	</target>
diff -uNr plugins.orig/org.eclipse.platform.doc.isv/buildDoc.xml plugins/org.eclipse.platform.doc.isv/buildDoc.xml
--- plugins.orig/org.eclipse.platform.doc.isv/buildDoc.xml	2005-11-03 12:09:05.000000000 -0500
+++ plugins/org.eclipse.platform.doc.isv/buildDoc.xml	2005-11-03 12:06:01.000000000 -0500
@@ -100,7 +100,7 @@
 
 		<!--retrieve osgi javadoc-->
 		<unzip src="../org.eclipse.osgi/osgi/osgiJavaDoc.zip" dest="reference/osgi" />
-		<exec dir="." executable="${javadoc}" output="doc.bin.log">
+		<exec dir="." executable="${javadoc}">
 			<arg line="@${basedir}/${optionsFile} -J-Xmx1000M" />
 		</exec>
 

eclipse-helpindexbuilder.patch:
 HelpIndexBuilder.java |   11 +++++++++--
 1 files changed, 9 insertions(+), 2 deletions(-)

--- NEW FILE eclipse-helpindexbuilder.patch ---
diff -r -u plugins/org.eclipse.help.base/src/org/eclipse/help/search/HelpIndexBuilder.java plugins/org.eclipse.help.base/src/org/eclipse/help/search/HelpIndexBuilder.java
--- plugins/org.eclipse.help.base/src/org/eclipse/help/search/HelpIndexBuilder.java	2005-10-27 15:18:45.000000000 +0200
+++ plugins/org.eclipse.help.base/src/org/eclipse/help/search/HelpIndexBuilder.java	2005-10-27 15:30:57.000000000 +0200
@@ -555,8 +555,15 @@
 				hrefs.add(href);
 		}
 		NodeList subtopics = topic.getElementsByTagName("topic"); //$NON-NLS-1$
-		for (int i = 0; i < subtopics.getLength(); i++)
-			add((Element) subtopics.item(i), hrefs);
+		for (int i = 0; i < subtopics.getLength(); i++) {
+			Element subtopic = (Element) subtopics.item(i);
+			href = getAttribute(subtopic, "href");
+			if (href != null && !href.equals("") && !href.startsWith("http://") && !href.startsWith("https://")) { //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				href = SearchIndex.getIndexableHref(href);
+				if (href != null)
+					hrefs.add(href);
+			}
+		}
 	}
 	
 	/*

eclipse-libswt-cairo1.0-1.patch:
 cairo/org/eclipse/swt/graphics/Path.java      |  173 +++++++++--
 cairo/org/eclipse/swt/graphics/Pattern.java   |    8 
 cairo/org/eclipse/swt/graphics/Transform.java |   32 --
 gtk/org/eclipse/swt/graphics/GC.java          |  383 +++++++++++++++-----------
 gtk/org/eclipse/swt/graphics/GCData.java      |    3 
 gtk/org/eclipse/swt/graphics/Image.java       |   11 
 6 files changed, 403 insertions(+), 207 deletions(-)

--- NEW FILE eclipse-libswt-cairo1.0-1.patch ---
--- cairo/org/eclipse/swt/graphics/Path.java	2005-10-02 00:08:15.000000000 +0200
+++ cairo/org/eclipse/swt/graphics/Path.java	2005-10-02 00:10:44.000000000 +0200
@@ -62,7 +62,10 @@
 	if (device == null) SWT.error(SWT.ERROR_NULL_ARGUMENT);
 	this.device = device;
 	device.checkCairo();
-	handle = Cairo.cairo_create();
+	int /*long*/ surface = Cairo.cairo_image_surface_create(Cairo.CAIRO_FORMAT_ARGB32, 1, 1);
+	if (surface == 0) SWT.error(SWT.ERROR_NO_HANDLES);
+	handle = Cairo.cairo_create(surface);
+	Cairo.cairo_surface_destroy(surface);
 	if (handle == 0) SWT.error(SWT.ERROR_NO_HANDLES);
 	if (device.tracking) device.new_Object(this);
 }
@@ -99,16 +102,23 @@
 public void addArc(float x, float y, float width, float height, float startAngle, float arcAngle) {
 	if (isDisposed()) SWT.error(SWT.ERROR_GRAPHIC_DISPOSED);
 	move = true;
-	int /*long*/ matrix = Cairo.cairo_matrix_create();
-	Cairo.cairo_current_matrix(handle, matrix);
-	double lineWidth = Cairo.cairo_current_line_width(handle);
-	Cairo.cairo_translate(handle, x + width / 2f, y + height / 2f);
-	Cairo.cairo_scale(handle, width / 2f, height / 2f);
-	Cairo.cairo_set_line_width(handle, lineWidth / (width / 2f));
-	Cairo.cairo_arc_negative(handle, 0, 0, 1, -startAngle * (float)Compatibility.PI / 180, -(startAngle + arcAngle) * (float)Compatibility.PI / 180);
-	Cairo.cairo_set_line_width(handle, lineWidth);
-	Cairo.cairo_set_matrix(handle, matrix);
-	Cairo.cairo_destroy(matrix);
+	if (width == height) {
+		if (arcAngle >= 0) {
+			Cairo.cairo_arc_negative(handle, x + width / 2f, y + height / 2f, width / 2f, -startAngle * (float)Compatibility.PI / 180, -(startAngle + arcAngle) * (float)Compatibility.PI / 180);
+		} else {
+			Cairo.cairo_arc(handle, x + width / 2f, y + height / 2f, width / 2f, -startAngle * (float)Compatibility.PI / 180, -(startAngle + arcAngle) * (float)Compatibility.PI / 180);
+		}
+	} else {
+		Cairo.cairo_save(handle);
+		Cairo.cairo_translate(handle, x + width / 2f, y + height / 2f);
+		Cairo.cairo_scale(handle, width / 2f, height / 2f);
+		if (arcAngle >= 0) {
+			Cairo.cairo_arc_negative(handle, 0, 0, 1, -startAngle * (float)Compatibility.PI / 180, -(startAngle + arcAngle) * (float)Compatibility.PI / 180);
+		} else {
+			Cairo.cairo_arc(handle, 0, 0, 1, -startAngle * (float)Compatibility.PI / 180, -(startAngle + arcAngle) * (float)Compatibility.PI / 180);
+		}
+		Cairo.cairo_restore(handle);
+	}
 }
 
 /**
@@ -129,7 +139,10 @@
 	if (path == null) SWT.error(SWT.ERROR_NULL_ARGUMENT);
 	if (path.isDisposed()) SWT.error(SWT.ERROR_INVALID_ARGUMENT);
 	move = false;
-	Cairo.cairo_add_path(handle, path.handle);
+	int /*long*/ copy = Cairo.cairo_copy_path(path.handle);
+	if (copy == 0) SWT.error(SWT.ERROR_NO_HANDLES);
+	Cairo.cairo_append_path(handle, copy);
+	Cairo.cairo_path_destroy(copy);
 }
 
 /**
@@ -174,7 +187,7 @@
 	move = false;
 	GC.setCairoFont(handle, font);
 	cairo_font_extents_t extents = new cairo_font_extents_t();
-	Cairo.cairo_current_font_extents(handle, extents);
+	Cairo.cairo_font_extents(handle, extents);
 	double baseline = y + extents.ascent;
 	Cairo.cairo_move_to(handle, x, baseline);
 	byte[] buffer = Converter.wcsToMbcs(null, string, true);
@@ -227,7 +240,10 @@
 	gc.initCairo();
 	boolean result = false;
 	int /*long*/ cairo = gc.data.cairo;
-	Cairo.cairo_add_path(cairo, handle);
+	int /*long*/ copy = Cairo.cairo_copy_path(handle);
+	if (copy == 0) SWT.error(SWT.ERROR_NO_HANDLES);
+	Cairo.cairo_append_path(cairo, copy);
+	Cairo.cairo_path_destroy(copy);
 	if (outline) {
 		result = Cairo.cairo_in_stroke(cairo, x, y) != 0;		
 	} else {
@@ -255,7 +271,7 @@
 	if (isDisposed()) SWT.error(SWT.ERROR_GRAPHIC_DISPOSED);
 	if (!move) {
 		double[] currentX = new double[1], currentY = new double[1];
-		Cairo.cairo_current_point(handle, currentX, currentY);
+		Cairo.cairo_get_current_point(handle, currentX, currentY);
 		Cairo.cairo_move_to(handle, currentX[0], currentY[0]);
 	}
 	move = true;
@@ -281,12 +297,58 @@
 	if (isDisposed()) SWT.error(SWT.ERROR_GRAPHIC_DISPOSED);
 	if (bounds == null) SWT.error(SWT.ERROR_NULL_ARGUMENT);
 	if (bounds.length < 4) SWT.error(SWT.ERROR_INVALID_ARGUMENT);
-	double[] extents = new double[4];
-	Cairo.cairo_extents(handle, extents);
-	bounds[0] = (float)extents[0];
-	bounds[1] = (float)extents[1];
-	bounds[2] = (float)(extents[2] - extents[0]);
-	bounds[3] = (float)(extents[3] - extents[1]);
+	int /*long*/ copy = Cairo.cairo_copy_path(handle);
+	if (copy == 0) SWT.error(SWT.ERROR_NO_HANDLES);
+	cairo_path_t path = new cairo_path_t();
+	Cairo.memmove(path, copy, cairo_path_t.sizeof);
+	double minX = 0, minY = 0, maxX = 0, maxY = 0;
+	if (path.num_data > 0) {
+		int i = 0;
+		double[] points = new double[6]; 
+		cairo_path_data_t data = new cairo_path_data_t();
+		while (i < path.num_data) {
+			int /*long*/ offset = path.data + i * cairo_path_data_t.sizeof;
+			Cairo.memmove(data, offset, cairo_path_data_t.sizeof);
+			switch (data.type) {
+				case Cairo.CAIRO_PATH_MOVE_TO:
+					Cairo.memmove(points, offset + cairo_path_data_t.sizeof, cairo_path_data_t.sizeof);
+					minX = Math.min(minX, points[0]);
+					minY = Math.min(minY, points[1]);
+					maxX = Math.max(maxX, points[0]);
+					maxY = Math.max(maxY, points[1]);
+					break;
+				case Cairo.CAIRO_PATH_LINE_TO:
+					Cairo.memmove(points, offset + cairo_path_data_t.sizeof, cairo_path_data_t.sizeof);
+					minX = Math.min(minX, points[0]);
+					minY = Math.min(minY, points[1]);
+					maxX = Math.max(maxX, points[0]);
+					maxY = Math.max(maxY, points[1]);
+					break;
+				case Cairo.CAIRO_PATH_CURVE_TO:
+					Cairo.memmove(points, offset + cairo_path_data_t.sizeof, cairo_path_data_t.sizeof * 3);
+					minX = Math.min(minX, points[0]);
+					minY = Math.min(minY, points[1]);
+					maxX = Math.max(maxX, points[0]);
+					maxY = Math.max(maxY, points[1]);
+					minX = Math.min(minX, points[2]);
+					minY = Math.min(minY, points[3]);
+					maxX = Math.max(maxX, points[2]);
+					maxY = Math.max(maxY, points[3]);
+					minX = Math.min(minX, points[4]);
+					minY = Math.min(minY, points[5]);
+					maxX = Math.max(maxX, points[4]);
+					maxY = Math.max(maxY, points[5]);
+					break;
+				case Cairo.CAIRO_PATH_CLOSE_PATH: break;
+			}
+			i += data.length;
+		}
+	}
+	bounds[0] = (float)minX;
+	bounds[1] = (float)minY;
+	bounds[2] = (float)(maxX - minX);
+	bounds[3] = (float)(maxY - minY);
+	Cairo.cairo_path_destroy(copy);
 }
 
 /**
@@ -308,7 +370,7 @@
 	if (point == null) SWT.error(SWT.ERROR_NULL_ARGUMENT);
 	if (point.length < 2) SWT.error(SWT.ERROR_INVALID_ARGUMENT);
 	double[] x = new double[1], y = new double[1];
-	Cairo.cairo_current_point(handle, x, y);
+	Cairo.cairo_get_current_point(handle, x, y);
 	point[0] = (float)x[0];
 	point[1] = (float)y[0];
 }
@@ -326,15 +388,64 @@
  */
 public PathData getPathData() {
 	if (isDisposed()) SWT.error(SWT.ERROR_GRAPHIC_DISPOSED);
-	int[] n_types = new int[1];
-	int[] n_points = new int[1];
-	Cairo.cairo_points(handle, n_types, n_points, null, null);
-	byte[] types = new byte[n_types[0]];
-	float[] points = new float[n_points[0] * 2];
-	Cairo.cairo_points(handle, n_types, n_points, types, points);
+	int /*long*/ copy = Cairo.cairo_copy_path(handle);
+	if (copy == 0) SWT.error(SWT.ERROR_NO_HANDLES);
+	cairo_path_t path = new cairo_path_t();
+	Cairo.memmove(path, copy, cairo_path_t.sizeof);
+	byte[] types = new byte[path.num_data];
+	float[] pts = new float[path.num_data * 6];
+	int typeIndex = 0, ptsIndex = 0;
+	if (path.num_data > 0) {
+		int i = 0;
+		double[] points = new double[6]; 
+		cairo_path_data_t data = new cairo_path_data_t();
+		while (i < path.num_data) {
+			int /*long*/ offset = path.data + i * cairo_path_data_t.sizeof;
+			Cairo.memmove(data, offset, cairo_path_data_t.sizeof);
+			switch (data.type) {
+				case Cairo.CAIRO_PATH_MOVE_TO:
+					types[typeIndex++] = SWT.PATH_MOVE_TO;
+					Cairo.memmove(points, offset + cairo_path_data_t.sizeof, cairo_path_data_t.sizeof);
+					pts[ptsIndex++] = (float)points[0];
+					pts[ptsIndex++] = (float)points[1];
+					break;
+				case Cairo.CAIRO_PATH_LINE_TO:
+					types[typeIndex++] = SWT.PATH_LINE_TO;
+					Cairo.memmove(points, offset + cairo_path_data_t.sizeof, cairo_path_data_t.sizeof);
+					pts[ptsIndex++] = (float)points[0];
+					pts[ptsIndex++] = (float)points[1];
+					break;
+				case Cairo.CAIRO_PATH_CURVE_TO:
+					types[typeIndex++] = SWT.PATH_CUBIC_TO;
+					Cairo.memmove(points, offset + cairo_path_data_t.sizeof, cairo_path_data_t.sizeof * 3);
+					pts[ptsIndex++] = (float)points[0];
+					pts[ptsIndex++] = (float)points[1];
+					pts[ptsIndex++] = (float)points[2];
+					pts[ptsIndex++] = (float)points[3];
+					pts[ptsIndex++] = (float)points[4];
+					pts[ptsIndex++] = (float)points[5];
+					break;
+				case Cairo.CAIRO_PATH_CLOSE_PATH:
+					types[typeIndex++] = SWT.PATH_CLOSE;
+					break;
+			}
+			i += data.length;
+		}
+	}
+	if (typeIndex != types.length) {
+		byte[] newTypes = new byte[typeIndex];
+		System.arraycopy(types, 0, newTypes, 0, typeIndex);
+		types = newTypes;
+	}
+	if (ptsIndex != pts.length) {
+		float[] newPts = new float[ptsIndex];
+		System.arraycopy(pts, 0, newPts, 0, ptsIndex);
+		pts = newPts;
+	}
+	Cairo.cairo_path_destroy(copy);
 	PathData result = new PathData();
 	result.types = types;
-	result.points = points;
+	result.points = pts;
 	return result;
 }
 
@@ -353,7 +464,7 @@
 	if (isDisposed()) SWT.error(SWT.ERROR_GRAPHIC_DISPOSED);
 	if (!move) {
 		double[] currentX = new double[1], currentY = new double[1];
-		Cairo.cairo_current_point(handle, currentX, currentY);
+		Cairo.cairo_get_current_point(handle, currentX, currentY);
 		Cairo.cairo_move_to(handle, currentX[0], currentY[0]);
 	}
 	move = true;
@@ -400,7 +511,7 @@
 public void quadTo(float cx, float cy, float x, float y) {
 	if (isDisposed()) SWT.error(SWT.ERROR_GRAPHIC_DISPOSED);
 	double[] currentX = new double[1], currentY = new double[1];
-	Cairo.cairo_current_point(handle, currentX, currentY);
+	Cairo.cairo_get_current_point(handle, currentX, currentY);
 	if (!move) {
 		Cairo.cairo_move_to(handle, currentX[0], currentY[0]);
 	}
--- cairo/org/eclipse/swt/graphics/Pattern.java	2005-10-02 00:08:15.000000000 +0200
+++ cairo/org/eclipse/swt/graphics/Pattern.java	2005-10-02 00:10:44.000000000 +0200
@@ -94,6 +94,9 @@
  * @see #dispose()
  */
 public Pattern(Device device, float x1, float y1, float x2, float y2, Color color1, Color color2) {
+	this(device, x1, y1, x2, y2, color1, 0xFF, color2, 0xFF);
+}
+public Pattern(Device device, float x1, float y1, float x2, float y2, Color color1, int alpha1, Color color2, int alpha2) {
 	if (device == null) device = Device.getDevice();
 	if (device == null) SWT.error(SWT.ERROR_NULL_ARGUMENT);
 	if (color1 == null) SWT.error(SWT.ERROR_NULL_ARGUMENT);
@@ -104,9 +107,8 @@
 	device.checkCairo();
 	handle = Cairo.cairo_pattern_create_linear(x1, y1, x2, y2);
 	if (handle == 0) SWT.error(SWT.ERROR_NO_HANDLES);
-	//TODO - how about alpha?
-	GC.setCairoPatternColor(handle, 0, color1);
-	GC.setCairoPatternColor(handle, 1, color2);
+	GC.setCairoPatternColor(handle, 0, color1, alpha1);
+	GC.setCairoPatternColor(handle, 1, color2, alpha2);
 	Cairo.cairo_pattern_set_extend(handle, Cairo.CAIRO_EXTEND_REPEAT);
 	if (device.tracking) device.new_Object(this);
 }
--- cairo/org/eclipse/swt/graphics/Transform.java	2005-10-02 00:08:15.000000000 +0200
+++ cairo/org/eclipse/swt/graphics/Transform.java	2005-10-02 00:10:44.000000000 +0200
@@ -36,7 +36,7 @@
 	 * platforms and should never be accessed from application code.
 	 * </p>
 	 */
-	public int /*long*/ handle;
+	public double[] handle;
 	
 /**
  * Constructs a new identity Transform.
@@ -103,9 +103,9 @@
 	if (device == null) SWT.error(SWT.ERROR_NULL_ARGUMENT);
 	this.device = device;
 	device.checkCairo();
-	handle = Cairo.cairo_matrix_create();
-	if (handle == 0) SWT.error(SWT.ERROR_NO_HANDLES);
-	Cairo.cairo_matrix_set_affine(handle, m11, m12, m21, m22, dx, dy);
+	handle = new double[6];
+	if (handle == null) SWT.error(SWT.ERROR_NO_HANDLES);
+	Cairo.cairo_matrix_init(handle, m11, m12, m21, m22, dx, dy);
 	if (device.tracking) device.new_Object(this);
 }
 
@@ -121,10 +121,9 @@
  * they allocate.
  */
 public void dispose() {
-	if (handle == 0) return;
+	if (handle == null) return;
 	if (device.isDisposed()) return;
-	Cairo.cairo_matrix_destroy(handle);
-	handle = 0;
+	handle = null;
 	if (device.tracking) device.dispose_Object(this);
 	device = null;
 }
@@ -148,15 +147,12 @@
 	if (isDisposed()) SWT.error(SWT.ERROR_GRAPHIC_DISPOSED);
 	if (elements == null) SWT.error(SWT.ERROR_NULL_ARGUMENT);
 	if (elements.length < 6) SWT.error(SWT.ERROR_INVALID_ARGUMENT);
-	double[] a = new double[1], b = new double[1], c = new double[1], d = new double[1];
-	double[] tx = new double[1], ty = new double[1];
-	Cairo.cairo_matrix_get_affine(handle, a, b, c, d, tx, ty);
-	elements[0] = (float)a[0];
-	elements[1] = (float)b[0];
-	elements[2] = (float)c[0];
-	elements[3] = (float)d[0];
-	elements[4] = (float)tx[0];
-	elements[5] = (float)ty[0];
+	elements[0] = (float)handle[0];
+	elements[1] = (float)handle[1];
+	elements[2] = (float)handle[2];
+	elements[3] = (float)handle[3];
+	elements[4] = (float)handle[4];
+	elements[5] = (float)handle[5];
 }
 
 /**
@@ -186,7 +182,7 @@
  * @return <code>true</code> when the Transform is disposed, and <code>false</code> otherwise
  */
 public boolean isDisposed() {
-	return handle == 0;
+	return handle == null;
 }
 
 /**
@@ -275,7 +271,7 @@
  */
 public void setElements(float m11, float m12, float m21, float m22, float dx, float dy) {
 	if (isDisposed()) SWT.error(SWT.ERROR_GRAPHIC_DISPOSED);
-	Cairo.cairo_matrix_set_affine(handle, m11, m12, m21, m22, dx, dy);
+	Cairo.cairo_matrix_init(handle, m11, m12, m21, m22, dx, dy);
 }
 
 /** 
--- gtk/org/eclipse/swt/graphics/GCData.java	2005-10-02 00:08:13.000000000 +0200
+++ gtk/org/eclipse/swt/graphics/GCData.java	2005-10-02 00:10:44.000000000 +0200
@@ -41,12 +41,13 @@
 	public int lineStyle = SWT.LINE_SOLID;
 	public int[] dashes;
 	public boolean xorMode;
+	public int alpha = 0xFF;
 	public int antialias = SWT.DEFAULT;
 	public int textAntialias = SWT.DEFAULT;
 	public int interpolation = SWT.DEFAULT;
 
 	public int /*long*/ cairo;
-	public int /*long*/ matrix, inverseMatrix;
+	public double[] matrix, inverseMatrix;
 
 	public String string;
 	public int stringWidth = -1;
--- gtk/org/eclipse/swt/graphics/GC.java	2005-10-02 00:08:13.000000000 +0200
+++ gtk/org/eclipse/swt/graphics/GC.java	2005-10-02 00:10:44.000000000 +0200
@@ -145,6 +145,7 @@
 public static GC gtk_new(Drawable drawable, GCData data) {
 	GC gc = new GC();
 	int /*long*/ gdkGC = drawable.internal_new_GC(data);
+	gc.device = data.device;
 	gc.init(drawable, data, gdkGC);
 	return gc;
 }
@@ -268,11 +269,8 @@
 	
 	int /*long*/ cairo = data.cairo;
 	if (cairo != 0) Cairo.cairo_destroy(cairo);
-	int /*long*/ matrix = data.matrix;
-	if (matrix != 0) Cairo.cairo_matrix_destroy(matrix);
-	int /*long*/ inverseMatrix = data.inverseMatrix;
-	if (inverseMatrix != 0) Cairo.cairo_matrix_destroy(inverseMatrix);
-	data.cairo = data.matrix = data.inverseMatrix = 0;
+	data.cairo = 0;
+	data.matrix = data.inverseMatrix = null;
 
 	/* Free resources */
 	int /*long*/ clipRgn = data.clipRgn;
@@ -344,14 +342,25 @@
 	if (width == 0 || height == 0 || arcAngle == 0) return;
 	int /*long*/ cairo = data.cairo;
 	if (cairo != 0) {
-		Cairo.cairo_save(cairo);
 		float offset = data.lineWidth == 0 || (data.lineWidth % 2) == 1 ? 0.5f : 0f;
-		Cairo.cairo_translate(cairo, x + offset + width / 2f, y + offset + height / 2f);
-		Cairo.cairo_scale(cairo, width / 2f, height / 2f);
-		Cairo.cairo_set_line_width(cairo, Cairo.cairo_current_line_width(cairo) / (width / 2f));
-		Cairo.cairo_arc_negative(cairo, 0, 0, 1, -startAngle * (float)Compatibility.PI / 180, -(startAngle + arcAngle) * (float)Compatibility.PI / 180);
+		if (width == height) {
+            if (arcAngle >= 0) {
+                Cairo.cairo_arc_negative(cairo, x + offset + width / 2f, y + offset + height / 2f, width / 2f, -startAngle * (float)Compatibility.PI / 180, -(startAngle + arcAngle) * (float)Compatibility.PI / 180);
+            } else { 
+                Cairo.cairo_arc(cairo, x + offset + width / 2f, y + offset + height / 2f, width / 2f, -startAngle * (float)Compatibility.PI / 180, -(startAngle + arcAngle) * (float)Compatibility.PI / 180);
+            }
+		} else {
+			Cairo.cairo_save(cairo);
+			Cairo.cairo_translate(cairo, x + offset + width / 2f, y + offset + height / 2f);
+			Cairo.cairo_scale(cairo, width / 2f, height / 2f);
+            if (arcAngle >= 0) {
+                Cairo.cairo_arc_negative(cairo, 0, 0, 1, -startAngle * (float)Compatibility.PI / 180, -(startAngle + arcAngle) * (float)Compatibility.PI / 180);
+            } else {
+                Cairo.cairo_arc(cairo, 0, 0, 1, -startAngle * (float)Compatibility.PI / 180, -(startAngle + arcAngle) * (float)Compatibility.PI / 180);
+            }
+			Cairo.cairo_restore(cairo);
+		}
 		Cairo.cairo_stroke(cairo);
-		Cairo.cairo_restore(cairo);
 		return;
 	}
 	OS.gdk_draw_arc(data.drawable, handle, 0, x, y, width, height, startAngle * 64, arcAngle * 64);
@@ -472,6 +481,39 @@
 			SWT.error(SWT.ERROR_INVALID_ARGUMENT);
 		}
  	}
+	int /*long*/ cairo = data.cairo;
+	if (cairo != 0) {
+		if (data.alpha != 0) {
+			srcImage.createSurface();
+			Cairo.cairo_save(cairo);
+			Cairo.cairo_rectangle(cairo, destX + 0.5, destY + 0.5, destWidth, destHeight);
+			Cairo.cairo_clip(cairo);
+			Cairo.cairo_translate(cairo, destX - srcX + 0.5, destY - srcY + 0.5);
+			if (srcWidth != destWidth || srcHeight != destHeight) {
+				Cairo.cairo_scale(cairo, destWidth / (float)srcWidth,  destHeight / (float)srcHeight);
+			}
+			int filter = Cairo.CAIRO_FILTER_GOOD;
+			switch (data.interpolation) {
+				case SWT.DEFAULT: filter = Cairo.CAIRO_FILTER_GOOD; break;
+				case SWT.NONE: filter = Cairo.CAIRO_FILTER_NEAREST; break;
+				case SWT.LOW: filter = Cairo.CAIRO_FILTER_FAST; break;
+				case SWT.HIGH: filter = Cairo.CAIRO_FILTER_BEST; break;
+			}
+			int /*long*/ pattern = Cairo.cairo_pattern_create_for_surface(srcImage.surface);
+			if (pattern == 0) SWT.error(SWT.ERROR_NO_HANDLES);
+			Cairo.cairo_pattern_set_filter(pattern, filter);
+			Cairo.cairo_pattern_set_extend(pattern, Cairo.CAIRO_EXTEND_REFLECT);
+			Cairo.cairo_set_source(cairo, pattern);
+			if (data.alpha != 0xFF) {
+				Cairo.cairo_paint_with_alpha(cairo, data.alpha / (float)0xFF);
+			} else {
+				Cairo.cairo_paint(cairo);
+			}
+			Cairo.cairo_restore(cairo);
+			Cairo.cairo_pattern_destroy(pattern);
+		}
+		return;
+	}
 	if (srcImage.alpha != -1 || srcImage.alphaData != null) {
 		drawImageAlpha(srcImage, srcX, srcY, srcWidth, srcHeight, destX, destY, destWidth, destHeight, simple, imgWidth, imgHeight);
 	} else if (srcImage.transparentPixel != -1 || srcImage.mask != 0) {
@@ -481,33 +523,6 @@
 	}
 }
 void drawImage(Image srcImage, int srcX, int srcY, int srcWidth, int srcHeight, int destX, int destY, int destWidth, int destHeight, boolean simple, int imgWidth, int imgHeight) {
-	int /*long*/ cairo = data.cairo;
-	if (cairo != 0) {
-		srcImage.createSurface();
-		Cairo.cairo_save(cairo);
-		//TODO - draw a piece of the image
-//		if (srcX != 0 || srcY != 0) {
-//			Cairo.cairo_rectangle(cairo, destX, destY, destWidth, destHeight);
-//			Cairo.cairo_clip(cairo);
-//			Cairo.cairo_new_path(cairo);
-//		}
-		//TODO - need 0.5 to draw at 0,0 with no transformation ???
-		Cairo.cairo_translate(cairo, destX - srcX + 0.5, destY - srcY);
-		if (srcWidth != destWidth || srcHeight != destHeight) {
-			Cairo.cairo_scale(cairo, destWidth / (float)srcWidth,  destHeight / (float)srcHeight);
-		}
-		int filter = Cairo.CAIRO_FILTER_GOOD;
-		switch (data.interpolation) {
-			case SWT.DEFAULT: filter = Cairo.CAIRO_FILTER_GOOD; break;
-			case SWT.NONE: filter = Cairo.CAIRO_FILTER_NEAREST; break;
-			case SWT.LOW: filter = Cairo.CAIRO_FILTER_FAST; break;
-			case SWT.HIGH: filter = Cairo.CAIRO_FILTER_BEST; break;
-		}
-		Cairo.cairo_surface_set_filter(srcImage.surface, filter);
-		Cairo.cairo_show_surface(cairo, srcImage.surface, imgWidth, imgHeight);
-		Cairo.cairo_restore(cairo);
-		return;
-	}
 	if (srcWidth == destWidth && srcHeight == destHeight) {
 		OS.gdk_draw_drawable(data.drawable, handle, srcImage.pixmap, srcX, srcY, destX, destY, destWidth, destHeight);
 	} else {
@@ -718,14 +733,17 @@
 	}
 	int /*long*/ cairo = data.cairo;
 	if (cairo != 0) {
-		Cairo.cairo_save(cairo);
 		float offset = data.lineWidth == 0 || (data.lineWidth % 2) == 1 ? 0.5f : 0f;
-		Cairo.cairo_translate(cairo, x + offset + width / 2f, y + offset + height / 2f);
-		Cairo.cairo_scale(cairo, width / 2f, height / 2f);
-		Cairo.cairo_set_line_width(cairo, Cairo.cairo_current_line_width(cairo) / (width / 2f));
-		Cairo.cairo_arc_negative(cairo, 0, 0, 1, 0, -2 * (float)Compatibility.PI);
+		if (width == height) {
+			Cairo.cairo_arc_negative(cairo, x + offset + width / 2f, y + offset + height / 2f, width / 2f, 0, -2 * (float)Compatibility.PI);
+		} else {
+			Cairo.cairo_save(cairo);
+			Cairo.cairo_translate(cairo, x + offset + width / 2f, y + offset + height / 2f);
+			Cairo.cairo_scale(cairo, width / 2f, height / 2f);
+			Cairo.cairo_arc_negative(cairo, 0, 0, 1, 0, -2 * (float)Compatibility.PI);
+			Cairo.cairo_restore(cairo);
+		}
 		Cairo.cairo_stroke(cairo);
-		Cairo.cairo_restore(cairo);
 		return;
 	}
 	OS.gdk_draw_arc(data.drawable, handle, 0, x, y, width, height, 0, 23040);
@@ -757,7 +775,10 @@
 	Cairo.cairo_save(cairo);
 	float offset = data.lineWidth == 0 || (data.lineWidth % 2) == 1 ? 0.5f : 0f;
 	Cairo.cairo_translate(cairo, offset, offset);
-	Cairo.cairo_add_path(cairo, path.handle);
+	int /*long*/ copy = Cairo.cairo_copy_path(path.handle);
+	if (copy == 0) SWT.error(SWT.ERROR_NO_HANDLES);
+	Cairo.cairo_append_path(cairo, copy);
+	Cairo.cairo_path_destroy(copy);
 	Cairo.cairo_stroke(cairo);
 	Cairo.cairo_restore(cairo);
 }
@@ -964,13 +985,13 @@
 		Cairo.cairo_translate(cairo, nx + offset, ny + offset);
 		Cairo.cairo_scale(cairo, naw2, nah2);
 		Cairo.cairo_move_to(cairo, fw - 1, 0);
-//		Cairo.cairo_arc_to(cairo, 0, 0, 0, 1, 1);
-//		Cairo.cairo_arc_to(cairo, 0, fh, 1, fh, 1);
-//		Cairo.cairo_arc_to(cairo, fw, fh, fw, fh - 1, 1);
-//		Cairo.cairo_arc_to(cairo, fw, 0, fw - 1, 0, 1);
+	    Cairo.cairo_arc(cairo, fw - 1, 1, 1, Math.PI + Math.PI/2.0, Math.PI*2.0);
+	    Cairo.cairo_arc(cairo, fw - 1, fh - 1, 1, 0, Math.PI/2.0);
+	    Cairo.cairo_arc(cairo, 1, fh - 1, 1, Math.PI/2, Math.PI);
+	    Cairo.cairo_arc(cairo, 1, 1, 1, Math.PI, 270.0*Math.PI/180.0);
 		Cairo.cairo_close_path(cairo);
-		Cairo.cairo_stroke(cairo);
 		Cairo.cairo_restore(cairo);
+		Cairo.cairo_stroke(cairo);
 		return;
 	}
 	int naw2 = naw / 2;
@@ -1139,12 +1160,11 @@
 	if (cairo != 0) {
 		//TODO - honor flags
 		cairo_font_extents_t extents = new cairo_font_extents_t();
-		Cairo.cairo_current_font_extents(cairo, extents);
+		Cairo.cairo_font_extents(cairo, extents);
 		double baseline = y + extents.ascent;
 		Cairo.cairo_move_to(cairo, x, baseline);
 		byte[] buffer = Converter.wcsToMbcs(null, string, true);
-		Cairo.cairo_text_path(cairo, buffer);
-		Cairo.cairo_fill(cairo);
+		Cairo.cairo_show_text(cairo, buffer);
 		return;
 	}
 	setString(string, flags);
@@ -1251,18 +1271,32 @@
 	color.pixel = values.background_pixel;
 	int /*long*/ cairo = data.cairo;
 	if (cairo != 0) {
-		int /*long*/ colormap = OS.gdk_colormap_get_system();
-		OS.gdk_colormap_query_color(colormap, color.pixel, color);
+		if (width == height) {
+            if (arcAngle >= 0) {
+            	Cairo.cairo_arc_negative(cairo, x + width / 2f, y + height / 2f, width / 2f, -startAngle * (float)Compatibility.PI / 180,  -(startAngle + arcAngle) * (float)Compatibility.PI / 180);
+            } else {
+            	Cairo.cairo_arc(cairo, x + width / 2f, y + height / 2f, width / 2f, -startAngle * (float)Compatibility.PI / 180,  -(startAngle + arcAngle) * (float)Compatibility.PI / 180);
+            }
+			Cairo.cairo_line_to(cairo, x + width / 2f, y + height / 2f);
+		} else {
+			Cairo.cairo_save(cairo);
+			Cairo.cairo_translate(cairo, x + width / 2f, y + height / 2f);
+			Cairo.cairo_scale(cairo, width / 2f, height / 2f);
+			if (arcAngle >= 0) {
+				Cairo.cairo_arc_negative(cairo, 0, 0, 1, -startAngle * (float)Compatibility.PI / 180,  -(startAngle + arcAngle) * (float)Compatibility.PI / 180);
+			} else {
+				Cairo.cairo_arc(cairo, 0, 0, 1, -startAngle * (float)Compatibility.PI / 180,  -(startAngle + arcAngle) * (float)Compatibility.PI / 180);
+			}
+			Cairo.cairo_line_to(cairo, 0, 0);
+			Cairo.cairo_restore(cairo);
+		}
 		Cairo.cairo_save(cairo);
 		if (data.backgroundPattern != null) {
-			Cairo.cairo_set_pattern(cairo, data.backgroundPattern.handle);
+			Cairo.cairo_set_source(cairo, data.backgroundPattern.handle);
 		} else {
-			Cairo.cairo_set_rgb_color(cairo, (color.red & 0xFFFF) / (float)0xFFFF, (color.green & 0xFFFF) / (float)0xFFFF, (color.blue & 0xFFFF) / (float)0xFFFF);
+			OS.gdk_colormap_query_color(OS.gdk_colormap_get_system(), color.pixel, color);
+			Cairo.cairo_set_source_rgba(cairo, (color.red & 0xFFFF) / (float)0xFFFF, (color.green & 0xFFFF) / (float)0xFFFF, (color.blue & 0xFFFF) / (float)0xFFFF, data.alpha / (float)0xFF);
 		}
-		Cairo.cairo_translate(cairo, x + width / 2f, y + height / 2f);
-		Cairo.cairo_scale(cairo, width / 2f, height / 2f);
-		Cairo.cairo_arc_negative(cairo, 0, 0, 1, -startAngle * (float)Compatibility.PI / 180,  -(startAngle + arcAngle) * (float)Compatibility.PI / 180);
-		Cairo.cairo_line_to(cairo, 0, 0);
 		Cairo.cairo_fill(cairo);
 		Cairo.cairo_restore(cairo);
 		return;
@@ -1334,13 +1368,13 @@
 		} else {
 			pattern = Cairo.cairo_pattern_create_linear (0.0, 0.0, 1.0, 0.0);
 		}
-		Cairo.cairo_pattern_add_color_stop (pattern, 0, fromRGB.red / 255f, fromRGB.green / 255f, fromRGB.blue / 255f, 1);
-		Cairo.cairo_pattern_add_color_stop (pattern, 1, toRGB.red / 255f, toRGB.green / 255f, toRGB.blue / 255f, 1);
+		Cairo.cairo_pattern_add_color_stop_rgba (pattern, 0, fromRGB.red / 255f, fromRGB.green / 255f, fromRGB.blue / 255f, 1);
+		Cairo.cairo_pattern_add_color_stop_rgba (pattern, 1, toRGB.red / 255f, toRGB.green / 255f, toRGB.blue / 255f, 1);
 		Cairo.cairo_save(cairo);
 		Cairo.cairo_translate(cairo, x, y);
 		Cairo.cairo_scale(cairo, width, height);
 		Cairo.cairo_rectangle(cairo, 0, 0, 1, 1);
-		Cairo.cairo_set_pattern(cairo, pattern);
+		Cairo.cairo_set_source(cairo, pattern);
 		Cairo.cairo_fill(cairo);
 		Cairo.cairo_restore(cairo);
 		Cairo.cairo_pattern_destroy(pattern);
@@ -1383,17 +1417,22 @@
 	color.pixel = values.background_pixel;
 	int /*long*/ cairo = data.cairo;
 	if (cairo != 0) {
-		int /*long*/ colormap = OS.gdk_colormap_get_system();
-		OS.gdk_colormap_query_color(colormap, color.pixel, color);
+		if (width == height) {
+			Cairo.cairo_arc_negative(cairo, x + width / 2f, y + height / 2f, width / 2f, 0, 2 * (float)Compatibility.PI);
+		} else {
+			Cairo.cairo_save(cairo);
+			Cairo.cairo_translate(cairo, x + width / 2f, y + height / 2f);
+			Cairo.cairo_scale(cairo, width / 2f, height / 2f);
+			Cairo.cairo_arc_negative(cairo, 0, 0, 1, 0, 2 * (float)Compatibility.PI);
+			Cairo.cairo_restore(cairo);
+		}
 		Cairo.cairo_save(cairo);
 		if (data.backgroundPattern != null) {
-			Cairo.cairo_set_pattern(cairo, data.backgroundPattern.handle);
+			Cairo.cairo_set_source(cairo, data.backgroundPattern.handle);
 		} else {
-			Cairo.cairo_set_rgb_color(cairo, (color.red & 0xFFFF) / (float)0xFFFF, (color.green & 0xFFFF) / (float)0xFFFF, (color.blue & 0xFFFF) / (float)0xFFFF);
+			OS.gdk_colormap_query_color(OS.gdk_colormap_get_system(), color.pixel, color);
+			Cairo.cairo_set_source_rgba(cairo, (color.red & 0xFFFF) / (float)0xFFFF, (color.green & 0xFFFF) / (float)0xFFFF, (color.blue & 0xFFFF) / (float)0xFFFF, data.alpha / (float)0xFF);
 		}
-		Cairo.cairo_translate(cairo, x + width / 2f, y + height / 2f);
-		Cairo.cairo_scale(cairo, width / 2f, height / 2f);
-		Cairo.cairo_arc_negative(cairo, 0, 0, 1, 0, 2 * (float)Compatibility.PI);
 		Cairo.cairo_fill(cairo);
 		Cairo.cairo_restore(cairo);
 		return;
@@ -1435,11 +1474,14 @@
 	OS.gdk_colormap_query_color(colormap, color.pixel, color);
 	Cairo.cairo_save(cairo);
 	if (data.backgroundPattern != null) {
-		Cairo.cairo_set_pattern(cairo, data.backgroundPattern.handle);
+		Cairo.cairo_set_source(cairo, data.backgroundPattern.handle);
 	} else {
-		Cairo.cairo_set_rgb_color(cairo, (color.red & 0xFFFF) / (float)0xFFFF, (color.green & 0xFFFF) / (float)0xFFFF, (color.blue & 0xFFFF) / (float)0xFFFF);
+		Cairo.cairo_set_source_rgba(cairo, (color.red & 0xFFFF) / (float)0xFFFF, (color.green & 0xFFFF) / (float)0xFFFF, (color.blue & 0xFFFF) / (float)0xFFFF, data.alpha / (float)0xFF);
 	}
-	Cairo.cairo_add_path(cairo, path.handle);
+	int /*long*/ copy = Cairo.cairo_copy_path(path.handle);
+	if (copy == 0) SWT.error(SWT.ERROR_NO_HANDLES);
+	Cairo.cairo_append_path(cairo, copy);
+	Cairo.cairo_path_destroy(copy);
 	Cairo.cairo_fill(cairo);
 	Cairo.cairo_restore(cairo);
 }
@@ -1476,9 +1518,9 @@
 		OS.gdk_colormap_query_color(colormap, color.pixel, color);
 		Cairo.cairo_save(cairo);
 		if (data.backgroundPattern != null) {
-			Cairo.cairo_set_pattern(cairo, data.backgroundPattern.handle);
+			Cairo.cairo_set_source(cairo, data.backgroundPattern.handle);
 		} else {
-			Cairo.cairo_set_rgb_color(cairo, (color.red & 0xFFFF) / (float)0xFFFF, (color.green & 0xFFFF) / (float)0xFFFF, (color.blue & 0xFFFF) / (float)0xFFFF);
+			Cairo.cairo_set_source_rgba(cairo, (color.red & 0xFFFF) / (float)0xFFFF, (color.green & 0xFFFF) / (float)0xFFFF, (color.blue & 0xFFFF) / (float)0xFFFF, data.alpha / (float)0xFF);
 		}
 		drawPolyline(cairo, pointArray, true);
 		Cairo.cairo_fill(cairo);
@@ -1526,9 +1568,9 @@
 		OS.gdk_colormap_query_color(colormap, color.pixel, color);
 		Cairo.cairo_save(cairo);
 		if (data.backgroundPattern != null) {
-			Cairo.cairo_set_pattern(cairo, data.backgroundPattern.handle);
+			Cairo.cairo_set_source(cairo, data.backgroundPattern.handle);
 		} else {
-			Cairo.cairo_set_rgb_color(cairo, (color.red & 0xFFFF) / (float)0xFFFF, (color.green & 0xFFFF) / (float)0xFFFF, (color.blue & 0xFFFF) / (float)0xFFFF);
+			Cairo.cairo_set_source_rgba(cairo, (color.red & 0xFFFF) / (float)0xFFFF, (color.green & 0xFFFF) / (float)0xFFFF, (color.blue & 0xFFFF) / (float)0xFFFF, data.alpha / (float)0xFF);
 		}
 		Cairo.cairo_rectangle(cairo, x, y, width, height);
 		Cairo.cairo_fill(cairo);
@@ -1610,20 +1652,22 @@
 		int /*long*/ colormap = OS.gdk_colormap_get_system();
 		OS.gdk_colormap_query_color(colormap, color.pixel, color);
 		Cairo.cairo_save(cairo);
-		if (data.backgroundPattern != null) {
-			Cairo.cairo_set_pattern(cairo, data.backgroundPattern.handle);
-		} else {
-			Cairo.cairo_set_rgb_color(cairo, (color.red & 0xFFFF) / (float)0xFFFF, (color.green & 0xFFFF) / (float)0xFFFF, (color.blue & 0xFFFF) / (float)0xFFFF);
-		}
+		Cairo.cairo_save(cairo);
 		Cairo.cairo_translate(cairo, nx, ny);
 		Cairo.cairo_scale(cairo, naw2, nah2);
 		Cairo.cairo_move_to(cairo, fw - 1, 0);
-//		Cairo.cairo_arc_to(cairo, 0, 0, 0, 1, 1);
-//		Cairo.cairo_arc_to(cairo, 0, fh, 1, fh, 1);
-//		Cairo.cairo_arc_to(cairo, fw, fh, fw, fh - 1, 1);
-//		Cairo.cairo_arc_to(cairo, fw, 0, fw - 1, 0, 1);
+	    Cairo.cairo_arc(cairo, fw - 1, 1, 1, Math.PI + Math.PI/2.0, Math.PI*2.0);
+	    Cairo.cairo_arc(cairo, fw - 1, fh - 1, 1, 0, Math.PI/2.0);
+	    Cairo.cairo_arc(cairo, 1, fh - 1, 1, Math.PI/2, Math.PI);
+	    Cairo.cairo_arc(cairo, 1, 1, 1, Math.PI, 270.0*Math.PI/180.0);		
 		Cairo.cairo_close_path(cairo);
-		Cairo.cairo_stroke(cairo);
+		Cairo.cairo_restore(cairo);
+		if (data.backgroundPattern != null) {
+			Cairo.cairo_set_source(cairo, data.backgroundPattern.handle);
+		} else {
+			Cairo.cairo_set_source_rgba(cairo, (color.red & 0xFFFF) / (float)0xFFFF, (color.green & 0xFFFF) / (float)0xFFFF, (color.blue & 0xFFFF) / (float)0xFFFF, data.alpha / (float)0xFF);
+		}
+		Cairo.cairo_fill(cairo);
 		Cairo.cairo_restore(cairo);
 		return;
 	}
@@ -1736,8 +1780,7 @@
  */
 public int getAlpha() {
 	if (handle == 0) SWT.error(SWT.ERROR_GRAPHIC_DISPOSED);
-	if (data.cairo == 0) return 0xFF;
-	return (int)(Cairo.cairo_current_alpha(data.cairo) * 255);
+	return data.alpha;
 }
 
 /**
@@ -1758,8 +1801,15 @@
  */
 public int getAntialias() {
 	if (handle == 0) SWT.error(SWT.ERROR_GRAPHIC_DISPOSED);
-    if (data.cairo != 0) return SWT.ON;
-	return data.antialias;
+    if (data.cairo == 0) return SWT.DEFAULT;
+    int antialias = Cairo.cairo_get_antialias(data.cairo);
+	switch (antialias) {
+		case Cairo.CAIRO_ANTIALIAS_DEFAULT: return SWT.DEFAULT;
+		case Cairo.CAIRO_ANTIALIAS_NONE: return SWT.OFF;
+		case Cairo.CAIRO_ANTIALIAS_GRAY:
+		case Cairo.CAIRO_ANTIALIAS_SUBPIXEL: return SWT.ON;
+	}
+	return SWT.DEFAULT;
 }
 
 /** 
@@ -1909,7 +1959,7 @@
 	if (handle == 0) SWT.error(SWT.ERROR_GRAPHIC_DISPOSED);
 	int /*long*/ cairo = data.cairo;
 	if (cairo == 0) return SWT.FILL_EVEN_ODD;
-	return Cairo.cairo_current_fill_rule(cairo) == Cairo.CAIRO_FILL_RULE_WINDING ? SWT.FILL_WINDING : SWT.FILL_EVEN_ODD;
+	return Cairo.cairo_get_fill_rule(cairo) == Cairo.CAIRO_FILL_RULE_WINDING ? SWT.FILL_WINDING : SWT.FILL_EVEN_ODD;
 }
 
 /** 
@@ -2159,7 +2209,18 @@
  */
 public int getTextAntialias() {
     if (handle == 0) SWT.error(SWT.ERROR_GRAPHIC_DISPOSED);
-    return data.textAntialias;
+    if (data.cairo == 0) return SWT.DEFAULT;
+    int /*long*/ options = Cairo.cairo_font_options_create();
+    Cairo.cairo_get_font_options(data.cairo, options);
+    int antialias = Cairo.cairo_font_options_get_antialias(options);
+    Cairo.cairo_font_options_destroy(options);
+	switch (antialias) {
+		case Cairo.CAIRO_ANTIALIAS_DEFAULT: return SWT.DEFAULT;
+		case Cairo.CAIRO_ANTIALIAS_NONE: return SWT.OFF;
+		case Cairo.CAIRO_ANTIALIAS_GRAY:
+		case Cairo.CAIRO_ANTIALIAS_SUBPIXEL: return SWT.ON;
+	}
+	return SWT.DEFAULT;
 }
 
 /** 
@@ -2186,7 +2247,8 @@
 	if (transform.isDisposed()) SWT.error(SWT.ERROR_INVALID_ARGUMENT);
 	int /*long*/ cairo = data.cairo;
 	if (cairo != 0) {
-		Cairo.cairo_matrix_copy(transform.handle, data.matrix);
+		double[] matrix = data.matrix;
+		Cairo.cairo_matrix_init(transform.handle, matrix[0], matrix[1], matrix[2], matrix[3], matrix[4], matrix[5]);
 	} else {
 		transform.setElements(1, 0, 0, 1, 0, 0);
 	}
@@ -2268,27 +2330,32 @@
 	data.device.checkCairo();
 	int /*long*/ cairo = data.cairo;
 	if (cairo != 0) return;
-	data.cairo = cairo = Cairo.cairo_create();
-	if (cairo == 0) SWT.error(SWT.ERROR_NO_HANDLES);
-	data.matrix = Cairo.cairo_matrix_create();
-	if (data.matrix == 0) SWT.error(SWT.ERROR_NO_HANDLES);
-	data.inverseMatrix = Cairo.cairo_matrix_create();
-	if (data.inverseMatrix == 0) SWT.error(SWT.ERROR_NO_HANDLES);
+	data.matrix = new double[]{1, 0, 0, 1, 0, 0};
+	data.inverseMatrix = new double[]{1, 0, 0, 1, 0, 0};
 	int /*long*/ xDisplay = OS.GDK_DISPLAY();
+	int /*long*/ xVisual = OS.gdk_x11_visual_get_xvisual(OS.gdk_visual_get_system());
 	int /*long*/ xDrawable = 0;
 	int translateX = 0, translateY = 0;
+	int /*long*/ drawable = data.drawable;
 	if (data.image != null) {
-		xDrawable = OS.GDK_PIXMAP_XID(data.drawable);
+		xDrawable = OS.GDK_PIXMAP_XID(drawable);
 	} else {
 		int[] x = new int[1], y = new int[1];
 		int /*long*/ [] real_drawable = new int /*long*/ [1];
-		OS.gdk_window_get_internal_paint_info(data.drawable, real_drawable, x, y);
+		OS.gdk_window_get_internal_paint_info(drawable, real_drawable, x, y);
 		xDrawable = OS.gdk_x11_drawable_get_xid(real_drawable[0]);
 		translateX = -x[0];
 		translateY = -y[0];
 	}
-	Cairo.cairo_set_target_drawable(cairo, xDisplay, xDrawable);
-	Cairo.cairo_translate(cairo, translateX, translateY);
+	int[] w = new int[1], h = new int[1];
+	OS.gdk_drawable_get_size(drawable, w, h);
+	int width = w[0], height = h[0];
+	int /*long*/ surface = Cairo.cairo_xlib_surface_create(xDisplay, xDrawable, xVisual, width, height);
+	if (surface == 0) SWT.error(SWT.ERROR_NO_HANDLES);
+	Cairo.cairo_surface_set_device_offset(surface, translateX, translateY);
+	data.cairo = cairo = Cairo.cairo_create(surface);
+	Cairo.cairo_surface_destroy(surface);
+	if (cairo == 0) SWT.error(SWT.ERROR_NO_HANDLES);
 	Cairo.cairo_set_fill_rule(cairo, Cairo.CAIRO_FILL_RULE_EVEN_ODD);
 	GdkGCValues values = new GdkGCValues();
 	OS.gdk_gc_get_values(handle, values);
@@ -2296,7 +2363,7 @@
 	color.pixel = values.foreground_pixel;
 	int /*long*/ colormap = OS.gdk_colormap_get_system();
 	OS.gdk_colormap_query_color(colormap, color.pixel, color);
-	Cairo.cairo_set_rgb_color(cairo, (color.red & 0xFFFF) / (float)0xFFFF, (color.green & 0xFFFF) / (float)0xFFFF, (color.blue & 0xFFFF) / (float)0xFFFF);
+	Cairo.cairo_set_source_rgba(cairo, (color.red & 0xFFFF) / (float)0xFFFF, (color.green & 0xFFFF) / (float)0xFFFF, (color.blue & 0xFFFF) / (float)0xFFFF, data.alpha / (float)0xFF);
 	Cairo.cairo_set_line_width(cairo, Math.max(1, values.line_width));
 	int cap = Cairo.CAIRO_LINE_CAP_BUTT;
 	switch (values.cap_style) {
@@ -2356,12 +2423,9 @@
 	return handle == 0;
 }
 
-boolean isIdentity(int /*long*/ matrix) {
-	if (matrix == 0) return true;
-	double[] a = new double[1], b = new double[1], c = new double[1];
-	double[] d = new double[1], tx = new double[1], ty = new double[1];			
-	Cairo.cairo_matrix_get_affine(matrix, a, b, c, d, tx, ty);
-	return a[0] == 1 && b[0] == 0 && c[0] == 0 && d[0] == 1 && tx[0] == 0 && ty[0] == 0;
+boolean isIdentity(double[] matrix) {
+	if (matrix == null) return true;
+	return matrix[0] == 1 && matrix[1] == 0 && matrix[2] == 0 && matrix[3] == 1 && matrix[4] == 0 && matrix[5] == 0;
 }
 
 /**
@@ -2416,12 +2480,9 @@
 	} else {
 		int /*long*/ cairo = data.cairo;
 		if (cairo != 0) Cairo.cairo_destroy(cairo);
-		int /*long*/ matrix = data.matrix;
-		if (matrix != 0) Cairo.cairo_matrix_destroy(matrix);
-		int /*long*/ inverseMatrix = data.inverseMatrix;
-		if (inverseMatrix != 0) Cairo.cairo_matrix_destroy(inverseMatrix);
-		data.cairo = data.matrix = data.inverseMatrix = 0;
-		data.antialias = data.textAntialias = data.interpolation = SWT.DEFAULT;
+		data.cairo = 0;
+		data.matrix = data.inverseMatrix = null;
+		data.interpolation = SWT.DEFAULT;
 		data.backgroundPattern = data.foregroundPattern = null;
 		setClipping(0);
 	}
@@ -2442,7 +2503,17 @@
 	if (handle == 0) SWT.error(SWT.ERROR_GRAPHIC_DISPOSED);
 	if (data.cairo == 0 && (alpha & 0xff) == 0xff) return;
 	initCairo();
-	Cairo.cairo_set_alpha(data.cairo, (alpha & 0xff) / 255f);
+	data.alpha = alpha & 0xff;
+	if (data.foregroundPattern == null) {
+		GdkGCValues values = new GdkGCValues();
+		OS.gdk_gc_get_values(handle, values);
+		GdkColor color = new GdkColor();
+		color.pixel = values.foreground_pixel;
+		int /*long*/ colormap = OS.gdk_colormap_get_system();
+		OS.gdk_colormap_query_color(colormap, color.pixel, color);
+		int /*long*/ cairo = data.cairo;
+		Cairo.cairo_set_source_rgba(cairo, (color.red & 0xFFFF) / (float)0xFFFF, (color.green & 0xFFFF) / (float)0xFFFF, (color.blue & 0xFFFF) / (float)0xFFFF, data.alpha / (float)0xFF);
+	}
 }
 
 /**
@@ -2468,16 +2539,18 @@
 public void setAntialias(int antialias) {
 	if (handle == 0) SWT.error(SWT.ERROR_GRAPHIC_DISPOSED);
 	if (data.cairo == 0 && antialias == SWT.DEFAULT) return;
+	int mode = 0;
 	switch (antialias) {
-		case SWT.DEFAULT: break;
-		case SWT.OFF: break;
-		case SWT.ON:
-            initCairo();
+		case SWT.DEFAULT: mode = Cairo.CAIRO_ANTIALIAS_DEFAULT; break;
+		case SWT.OFF: mode = Cairo.CAIRO_ANTIALIAS_NONE; break;
+		case SWT.ON: mode = Cairo.CAIRO_ANTIALIAS_GRAY;
             break;
 		default:
 			SWT.error(SWT.ERROR_INVALID_ARGUMENT);
 	}
-	data.antialias = antialias;
+    initCairo();
+    int /*long*/ cairo = data.cairo;
+    Cairo.cairo_set_antialias(cairo, mode);
 }
 
 /**
@@ -2545,12 +2618,12 @@
 	if (pangoStyle == OS.PANGO_STYLE_OBLIQUE) slant = Cairo.CAIRO_FONT_SLANT_OBLIQUE;
 	int weight = Cairo.CAIRO_FONT_WEIGHT_NORMAL;
 	if (pangoWeight == OS.PANGO_WEIGHT_BOLD) weight = Cairo.CAIRO_FONT_WEIGHT_BOLD;
-	Cairo.cairo_select_font(cairo, buffer, slant, weight);
-	Cairo.cairo_scale_font(cairo, height);
+	Cairo.cairo_select_font_face(cairo, buffer, slant, weight);
+	Cairo.cairo_set_font_size(cairo, height);
 }
 
 static void setCairoClip(int /*long*/ cairo, int /*long*/ clipRgn) {
-	Cairo.cairo_init_clip(cairo);
+	Cairo.cairo_reset_clip(cairo);
 	if (clipRgn == 0) return;
 	int[] nRects = new int[1];
 	int /*long*/[] rects = new int /*long*/[1];
@@ -2565,9 +2638,13 @@
 	if (rects[0] != 0) OS.g_free(rects[0]);
 }
 
-static void setCairoPatternColor(int /*long*/ pattern, int offset, Color c) {
+static void setCairoPatternColor(int /*long*/ pattern, int offset, Color c, int alpha) {
 	GdkColor color = c.handle;
-	Cairo.cairo_pattern_add_color_stop(pattern, offset, (color.red & 0xFFFF) / (float)0xFFFF, (color.green & 0xFFFF) / (float)0xFFFF, (color.blue & 0xFFFF) / (float)0xFFFF, 1);
+	double aa = (alpha & 0xFF) / (double)0xFF;
+	double red = ((color.red & 0xFFFF) / (double)0xFFFF);
+	double green = ((color.green & 0xFFFF) / (double)0xFFFF);
+	double blue = ((color.blue & 0xFFFF) / (double)0xFFFF);
+	Cairo.cairo_pattern_add_color_stop_rgba(pattern, offset, red, green, blue, aa);
 }
 
 void setClipping(int /*long*/ clipRgn) {
@@ -2659,7 +2736,10 @@
 	if (path != null) {
 		initCairo();
 		int /*long*/ cairo = data.cairo;
-		Cairo.cairo_add_path(cairo, path.handle);
+		int /*long*/ copy = Cairo.cairo_copy_path(path.handle);
+		if (copy == 0) SWT.error(SWT.ERROR_NO_HANDLES);
+		Cairo.cairo_append_path(cairo, copy);
+		Cairo.cairo_path_destroy(copy);
 		Cairo.cairo_clip(cairo);
 		Cairo.cairo_new_path(cairo);
 	}
@@ -2793,7 +2873,7 @@
 	int /*long*/ cairo = data.cairo;
 	if (cairo != 0) {
 		GdkColor gdkColor = color.handle;
-		Cairo.cairo_set_rgb_color(cairo, (gdkColor.red & 0xFFFF) / (float)0xFFFF, (gdkColor.green & 0xFFFF) / (float)0xFFFF, (gdkColor.blue & 0xFFFF) / (float)0xFFFF);
+		Cairo.cairo_set_source_rgba(cairo, (gdkColor.red & 0xFFFF) / (float)0xFFFF, (gdkColor.green & 0xFFFF) / (float)0xFFFF, (gdkColor.blue & 0xFFFF) / (float)0xFFFF, data.alpha / (float)0xFF);
 	}
 	data.foregroundPattern = null;
 }
@@ -2821,7 +2901,7 @@
 	initCairo();
 	int /*long*/ cairo = data.cairo;
 	if (pattern != null) {
-		Cairo.cairo_set_pattern(cairo, pattern.handle);
+		Cairo.cairo_set_source(cairo, pattern.handle);
 	} else {
 		GdkGCValues values = new GdkGCValues();
 		OS.gdk_gc_get_values(handle, values);
@@ -2829,7 +2909,7 @@
 		color.pixel = values.foreground_pixel;
 		int /*long*/ colormap = OS.gdk_colormap_get_system();
 		OS.gdk_colormap_query_color(colormap, color.pixel, color);
-		Cairo.cairo_set_rgb_color(cairo, (color.red & 0xFFFF) / (float)0xFFFF, (color.green & 0xFFFF) / (float)0xFFFF, (color.blue & 0xFFFF) / (float)0xFFFF);
+		Cairo.cairo_set_source_rgba(cairo, (color.red & 0xFFFF) / (float)0xFFFF, (color.green & 0xFFFF) / (float)0xFFFF, (color.blue & 0xFFFF) / (float)0xFFFF, data.alpha / (float)0xFF);
 	}
 	data.foregroundPattern = pattern;
 }
@@ -3177,14 +3257,20 @@
 public void setTextAntialias(int antialias) {
     if (handle == 0) SWT.error(SWT.ERROR_GRAPHIC_DISPOSED);
 	if (data.cairo == 0 && antialias == SWT.DEFAULT) return;
-    switch (antialias) {
-        case SWT.DEFAULT: break;
-        case SWT.OFF: break;
-        case SWT.ON: break;
-        default:
-            SWT.error(SWT.ERROR_INVALID_ARGUMENT);
-    }
-    data.textAntialias = antialias;
+	int mode = 0;
+	switch (antialias) {
+		case SWT.DEFAULT: mode = Cairo.CAIRO_ANTIALIAS_DEFAULT; break;
+		case SWT.OFF: mode = Cairo.CAIRO_ANTIALIAS_NONE; break;
+		case SWT.ON: mode = Cairo.CAIRO_ANTIALIAS_GRAY;
+            break;
+		default:
+			SWT.error(SWT.ERROR_INVALID_ARGUMENT);
+	}
+    initCairo();
+    int /*long*/ options = Cairo.cairo_font_options_create();
+    Cairo.cairo_font_options_set_antialias(options, mode);
+    Cairo.cairo_set_font_options(data.cairo, options);
+    Cairo.cairo_font_options_destroy(options);
 }
 
 /** 
@@ -3211,20 +3297,21 @@
 	if (data.cairo == 0 && transform == null) return;
 	initCairo();
 	int /*long*/ cairo = data.cairo;
-	Cairo.cairo_concat_matrix(cairo, data.inverseMatrix);
+	Cairo.cairo_transform(cairo, data.inverseMatrix);
 	if (transform != null) {
-		Cairo.cairo_concat_matrix(cairo, transform.handle);
-		Cairo.cairo_matrix_copy(data.matrix, transform.handle);
-		Cairo.cairo_matrix_copy(data.inverseMatrix, transform.handle);
+		Cairo.cairo_transform(cairo, transform.handle);
+		double[] matrix = transform.handle;
+		Cairo.cairo_matrix_init(data.matrix, matrix[0], matrix[1], matrix[2], matrix[3], matrix[4], matrix[5]);
+		Cairo.cairo_matrix_init(data.matrix, matrix[0], matrix[1], matrix[2], matrix[3], matrix[4], matrix[5]);
 		Cairo.cairo_matrix_invert(data.inverseMatrix);
 	} else {
-		Cairo.cairo_matrix_set_identity(data.matrix);
-		Cairo.cairo_matrix_set_identity(data.inverseMatrix);
+		Cairo.cairo_matrix_init_identity(data.matrix);
+		Cairo.cairo_matrix_init_identity(data.inverseMatrix);
 	}
 	//TODO - round off problems
 	int /*long*/ clipRgn = data.clipRgn;
 	if (clipRgn != 0) {
-		int /*long*/ matrix = data.inverseMatrix;
+		double[] matrix = data.inverseMatrix;
 		int /*long*/ newRgn = OS.gdk_region_new();
 		int[] nRects = new int[1];
 		int /*long*/[] rects = new int /*long*/[1];
--- gtk/org/eclipse/swt/graphics/Image.java	2005-10-02 00:08:13.000000000 +0200
+++ gtk/org/eclipse/swt/graphics/Image.java	2005-10-02 00:10:44.000000000 +0200
@@ -552,10 +552,10 @@
 	if (surface != 0) return;
 	/* Generate the mask if necessary. */
 	if (transparentPixel != -1) createMask();
+	int[] w = new int[1], h = new int[1];
+	OS.gdk_drawable_get_size(pixmap, w, h);
+	int width = w[0], height = h[0];
 	if (mask != 0 || alpha != -1 || alphaData != null) {
-		int[] w = new int[1], h = new int[1];
-	 	OS.gdk_drawable_get_size(pixmap, w, h);
-	 	int width = w[0], height = h[0]; 	
 	 	int /*long*/ pixbuf = OS.gdk_pixbuf_new(OS.GDK_COLORSPACE_RGB, true, 8, width, height);
 		if (pixbuf == 0) SWT.error(SWT.ERROR_NO_HANDLES);
 		int /*long*/ colormap = OS.gdk_colormap_get_system();
@@ -616,14 +616,13 @@
 		}
 		surfaceData = OS.g_malloc(stride * height);
 		OS.memmove(surfaceData, pixels, stride * height);
-		surface = Cairo.cairo_surface_create_for_image(surfaceData, Cairo.CAIRO_FORMAT_ARGB32, width, height, stride);
+		surface = Cairo.cairo_image_surface_create_for_data(surfaceData, Cairo.CAIRO_FORMAT_ARGB32, width, height, stride);
 		OS.g_object_unref(pixbuf);
 	} else {
 		int /*long*/ xDisplay = OS.GDK_DISPLAY();
 		int /*long*/ xDrawable = OS.GDK_PIXMAP_XID(pixmap);
 		int /*long*/ xVisual = OS.gdk_x11_visual_get_xvisual(OS.gdk_visual_get_system());
-		int /*long*/ xColormap = OS.gdk_x11_colormap_get_xcolormap(OS.gdk_colormap_get_system());
-		surface = Cairo.cairo_xlib_surface_create(xDisplay, xDrawable, xVisual, 0, xColormap);
+		surface = Cairo.cairo_xlib_surface_create(xDisplay, xDrawable, xVisual, width, height);
 	}
 	/* Destroy the image mask if the there is a GC created on the image */
 	if (transparentPixel != -1 && memGC != null) destroyMask();

eclipse-libswt-cairo1.0-2.patch:
 cairo/library/cairo.c                                       | 1225 ++++++------
 cairo/library/cairo.h                                       |    1 
 cairo/library/cairo_stats.c                                 |  127 -
 cairo/library/cairo_stats.h                                 |  123 -
 cairo/library/cairo_structs.c                               |   71 
 cairo/library/cairo_structs.h                               |   24 
 cairo/org/eclipse/swt/internal/cairo/Cairo.java             |  179 -
 cairo/org/eclipse/swt/internal/cairo/cairo_path_data_t.java |   28 
 cairo/org/eclipse/swt/internal/cairo/cairo_path_t.java      |   29 
 gtk/library/make_linux.mak                                  |    4 
 10 files changed, 1105 insertions(+), 706 deletions(-)

--- NEW FILE eclipse-libswt-cairo1.0-2.patch ---
--- cairo/library/cairo.c	2005-10-02 00:08:17.000000000 +0200
+++ cairo/library/cairo.c	2005-10-02 00:10:44.000000000 +0200
@@ -25,6 +25,16 @@
 
 #define Cairo_NATIVE(func) Java_org_eclipse_swt_internal_cairo_Cairo_##func
 
+#ifndef NO_cairo_1append_1path
+JNIEXPORT void JNICALL Cairo_NATIVE(cairo_1append_1path)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1)
+{
+	Cairo_NATIVE_ENTER(env, that, cairo_1append_1path_FUNC);
+	cairo_append_path((cairo_t *)arg0, (cairo_path_t *)arg1);
+	Cairo_NATIVE_EXIT(env, that, cairo_1append_1path_FUNC);
+}
+#endif
+
 #ifndef NO_cairo_1arc
 JNIEXPORT void JNICALL Cairo_NATIVE(cairo_1arc)
 	(JNIEnv *env, jclass that, jint arg0, jdouble arg1, jdouble arg2, jdouble arg3, jdouble arg4, jdouble arg5)
@@ -55,6 +65,16 @@
 }
 #endif
 
+#ifndef NO_cairo_1clip_1preserve
+JNIEXPORT void JNICALL Cairo_NATIVE(cairo_1clip_1preserve)
+	(JNIEnv *env, jclass that, jint arg0)
+{
+	Cairo_NATIVE_ENTER(env, that, cairo_1clip_1preserve_FUNC);
+	cairo_clip_preserve((cairo_t *)arg0);
+	Cairo_NATIVE_EXIT(env, that, cairo_1clip_1preserve_FUNC);
+}
+#endif
+
 #ifndef NO_cairo_1close_1path
 JNIEXPORT void JNICALL Cairo_NATIVE(cairo_1close_1path)
 	(JNIEnv *env, jclass that, jint arg0)
@@ -65,353 +85,403 @@
 }
 #endif
 
-#ifndef NO_cairo_1concat_1matrix
-JNIEXPORT void JNICALL Cairo_NATIVE(cairo_1concat_1matrix)
-	(JNIEnv *env, jclass that, jint arg0, jint arg1)
+#ifndef NO_cairo_1copy_1page
+JNIEXPORT void JNICALL Cairo_NATIVE(cairo_1copy_1page)
+	(JNIEnv *env, jclass that, jint arg0)
 {
-	Cairo_NATIVE_ENTER(env, that, cairo_1concat_1matrix_FUNC);
-	cairo_concat_matrix((cairo_t *)arg0, (cairo_matrix_t *)arg1);
-	Cairo_NATIVE_EXIT(env, that, cairo_1concat_1matrix_FUNC);
+	Cairo_NATIVE_ENTER(env, that, cairo_1copy_1page_FUNC);
+	cairo_copy_page((cairo_t *)arg0);
+	Cairo_NATIVE_EXIT(env, that, cairo_1copy_1page_FUNC);
 }
 #endif
 
-#ifndef NO_cairo_1copy
-JNIEXPORT void JNICALL Cairo_NATIVE(cairo_1copy)
-	(JNIEnv *env, jclass that, jint arg0, jint arg1)
+#ifndef NO_cairo_1copy_1path
+JNIEXPORT jint JNICALL Cairo_NATIVE(cairo_1copy_1path)
+	(JNIEnv *env, jclass that, jint arg0)
 {
-	Cairo_NATIVE_ENTER(env, that, cairo_1copy_FUNC);
-	cairo_copy((cairo_t *)arg0, (cairo_t *)arg1);
-	Cairo_NATIVE_EXIT(env, that, cairo_1copy_FUNC);
+	jint rc = 0;
+	Cairo_NATIVE_ENTER(env, that, cairo_1copy_1path_FUNC);
+	rc = (jint)cairo_copy_path((cairo_t *)arg0);
+	Cairo_NATIVE_EXIT(env, that, cairo_1copy_1path_FUNC);
+	return rc;
 }
 #endif
 
-#ifndef NO_cairo_1copy_1page
-JNIEXPORT void JNICALL Cairo_NATIVE(cairo_1copy_1page)
+#ifndef NO_cairo_1copy_1path_1flat
+JNIEXPORT jint JNICALL Cairo_NATIVE(cairo_1copy_1path_1flat)
 	(JNIEnv *env, jclass that, jint arg0)
 {
-	Cairo_NATIVE_ENTER(env, that, cairo_1copy_1page_FUNC);
-	cairo_copy_page((cairo_t *)arg0);
-	Cairo_NATIVE_EXIT(env, that, cairo_1copy_1page_FUNC);
+	jint rc = 0;
+	Cairo_NATIVE_ENTER(env, that, cairo_1copy_1path_1flat_FUNC);
+	rc = (jint)cairo_copy_path_flat((cairo_t *)arg0);
+	Cairo_NATIVE_EXIT(env, that, cairo_1copy_1path_1flat_FUNC);
+	return rc;
 }
 #endif
 
 #ifndef NO_cairo_1create
 JNIEXPORT jint JNICALL Cairo_NATIVE(cairo_1create)
-	(JNIEnv *env, jclass that)
+	(JNIEnv *env, jclass that, jint arg0)
 {
 	jint rc = 0;
 	Cairo_NATIVE_ENTER(env, that, cairo_1create_FUNC);
-	rc = (jint)cairo_create();
+	rc = (jint)cairo_create((cairo_surface_t *)arg0);
 	Cairo_NATIVE_EXIT(env, that, cairo_1create_FUNC);
 	return rc;
 }
 #endif
 
-#ifndef NO_cairo_1current_1alpha
-JNIEXPORT jdouble JNICALL Cairo_NATIVE(cairo_1current_1alpha)
-	(JNIEnv *env, jclass that, jint arg0)
+#ifndef NO_cairo_1curve_1to
+JNIEXPORT void JNICALL Cairo_NATIVE(cairo_1curve_1to)
+	(JNIEnv *env, jclass that, jint arg0, jdouble arg1, jdouble arg2, jdouble arg3, jdouble arg4, jdouble arg5, jdouble arg6)
 {
-	jdouble rc = 0;
-	Cairo_NATIVE_ENTER(env, that, cairo_1current_1alpha_FUNC);
-	rc = (jdouble)cairo_current_alpha((cairo_t *)arg0);
-	Cairo_NATIVE_EXIT(env, that, cairo_1current_1alpha_FUNC);
-	return rc;
+	Cairo_NATIVE_ENTER(env, that, cairo_1curve_1to_FUNC);
+	cairo_curve_to((cairo_t *)arg0, arg1, arg2, arg3, arg4, arg5, arg6);
+	Cairo_NATIVE_EXIT(env, that, cairo_1curve_1to_FUNC);
 }
 #endif
 
-#ifndef NO_cairo_1current_1fill_1rule
-JNIEXPORT jint JNICALL Cairo_NATIVE(cairo_1current_1fill_1rule)
+#ifndef NO_cairo_1destroy
+JNIEXPORT void JNICALL Cairo_NATIVE(cairo_1destroy)
 	(JNIEnv *env, jclass that, jint arg0)
 {
-	jint rc = 0;
-	Cairo_NATIVE_ENTER(env, that, cairo_1current_1fill_1rule_FUNC);
-	rc = (jint)cairo_current_fill_rule((cairo_t *)arg0);
-	Cairo_NATIVE_EXIT(env, that, cairo_1current_1fill_1rule_FUNC);
-	return rc;
+	Cairo_NATIVE_ENTER(env, that, cairo_1destroy_FUNC);
+	cairo_destroy((cairo_t *)arg0);
+	Cairo_NATIVE_EXIT(env, that, cairo_1destroy_FUNC);
 }
 #endif
 
-#ifndef NO_cairo_1current_1font
-JNIEXPORT jint JNICALL Cairo_NATIVE(cairo_1current_1font)
-	(JNIEnv *env, jclass that, jint arg0)
+#ifndef NO_cairo_1device_1to_1user
+JNIEXPORT void JNICALL Cairo_NATIVE(cairo_1device_1to_1user)
+	(JNIEnv *env, jclass that, jint arg0, jdoubleArray arg1, jdoubleArray arg2)
 {
-	jint rc = 0;
-	Cairo_NATIVE_ENTER(env, that, cairo_1current_1font_FUNC);
-	rc = (jint)cairo_current_font((cairo_t *)arg0);
-	Cairo_NATIVE_EXIT(env, that, cairo_1current_1font_FUNC);
-	return rc;
+	jdouble *lparg1=NULL;
+	jdouble *lparg2=NULL;
+	Cairo_NATIVE_ENTER(env, that, cairo_1device_1to_1user_FUNC);
+	if (arg1) if ((lparg1 = (*env)->GetDoubleArrayElements(env, arg1, NULL)) == NULL) goto fail;
+	if (arg2) if ((lparg2 = (*env)->GetDoubleArrayElements(env, arg2, NULL)) == NULL) goto fail;
+	cairo_device_to_user((cairo_t *)arg0, lparg1, lparg2);
+fail:
+	if (arg2 && lparg2) (*env)->ReleaseDoubleArrayElements(env, arg2, lparg2, 0);
+	if (arg1 && lparg1) (*env)->ReleaseDoubleArrayElements(env, arg1, lparg1, 0);
+	Cairo_NATIVE_EXIT(env, that, cairo_1device_1to_1user_FUNC);
 }
 #endif
 
-#ifndef NO_cairo_1current_1font_1extents
-JNIEXPORT void JNICALL Cairo_NATIVE(cairo_1current_1font_1extents)
-	(JNIEnv *env, jclass that, jint arg0, jobject arg1)
+#ifndef NO_cairo_1device_1to_1user_1distance
+JNIEXPORT void JNICALL Cairo_NATIVE(cairo_1device_1to_1user_1distance)
+	(JNIEnv *env, jclass that, jint arg0, jdoubleArray arg1, jdoubleArray arg2)
 {
-	cairo_font_extents_t _arg1, *lparg1=NULL;
-	Cairo_NATIVE_ENTER(env, that, cairo_1current_1font_1extents_FUNC);
-	if (arg1) if ((lparg1 = getcairo_font_extents_tFields(env, arg1, &_arg1)) == NULL) goto fail;
-	cairo_current_font_extents((cairo_t *)arg0, (cairo_font_extents_t *)lparg1);
+	jdouble *lparg1=NULL;
+	jdouble *lparg2=NULL;
+	Cairo_NATIVE_ENTER(env, that, cairo_1device_1to_1user_1distance_FUNC);
+	if (arg1) if ((lparg1 = (*env)->GetDoubleArrayElements(env, arg1, NULL)) == NULL) goto fail;
+	if (arg2) if ((lparg2 = (*env)->GetDoubleArrayElements(env, arg2, NULL)) == NULL) goto fail;
+	cairo_device_to_user_distance((cairo_t *)arg0, lparg1, lparg2);
 fail:
-	if (arg1 && lparg1) setcairo_font_extents_tFields(env, arg1, lparg1);
-	Cairo_NATIVE_EXIT(env, that, cairo_1current_1font_1extents_FUNC);
+	if (arg2 && lparg2) (*env)->ReleaseDoubleArrayElements(env, arg2, lparg2, 0);
+	if (arg1 && lparg1) (*env)->ReleaseDoubleArrayElements(env, arg1, lparg1, 0);
+	Cairo_NATIVE_EXIT(env, that, cairo_1device_1to_1user_1distance_FUNC);
 }
 #endif
 
-#ifndef NO_cairo_1current_1line_1cap
-JNIEXPORT jint JNICALL Cairo_NATIVE(cairo_1current_1line_1cap)
+#ifndef NO_cairo_1fill
+JNIEXPORT void JNICALL Cairo_NATIVE(cairo_1fill)
 	(JNIEnv *env, jclass that, jint arg0)
 {
-	jint rc = 0;
-	Cairo_NATIVE_ENTER(env, that, cairo_1current_1line_1cap_FUNC);
[...2166 lines suppressed...]
-public static final synchronized native int cairo_current_line_join (int /*long*/ cr);
-public static final synchronized native double cairo_current_miter_limit (int /*long*/ cr);
-public static final synchronized native void cairo_current_matrix (int /*long*/ cr, int /*long*/ matrix);
-public static final synchronized native int /*long*/ cairo_current_target_surface (int /*long*/ cr);
-public static final synchronized native void cairo_current_path (int /*long*/ cr, int /*long*/ move_to, int /*long*/ line_to, int /*long*/ curve_to, int /*long*/ close_path,int /*long*/ closure);
-public static final synchronized native void cairo_current_path_flat (int /*long*/ cr, int /*long*/ move_to, int /*long*/ line_to, int /*long*/ close_path, int /*long*/ closure);
+public static final synchronized native void cairo_clip_preserve (int /*long*/ cr);
+public static final synchronized native void cairo_reset_clip (int /*long*/ cr);
+public static final synchronized native int /*long*/ cairo_font_options_create ();
+public static final synchronized native void cairo_font_options_destroy (int /*long*/ options);
+public static final synchronized native void cairo_font_options_set_antialias (int /*long*/ options, int antialias);
+public static final synchronized native int  cairo_font_options_get_antialias (int /*long*/ options);
+public static final synchronized native void cairo_set_font_options (int /*long*/ cr, int /*long*/ options);
+public static final synchronized native void cairo_get_font_options (int /*long*/ cr, int /*long*/ options);
+public static final synchronized native void cairo_select_font_face (int /*long*/ cr, byte[] family, int slant, int weight);
+public static final synchronized native void cairo_set_font_size (int /*long*/ cr, double size);
+public static final synchronized native void cairo_set_font_matrix (int /*long*/ cr, double[] matrix);
+public static final synchronized native void cairo_get_font_matrix (int /*long*/ cr, double[] matrix);
+public static final synchronized native void cairo_show_text (int /*long*/ cr, byte[] utf8);
+public static final synchronized native void cairo_show_glyphs (int /*long*/ cr, int /*long*/ glyphs, int num_glyphs);
+public static final synchronized native int /*long*/ cairo_get_font_face (int /*long*/ cr);
+public static final synchronized native void cairo_font_extents (int /*long*/ cr, cairo_font_extents_t extents);
+public static final synchronized native void cairo_set_font_face (int /*long*/ cr, int /*long*/ font_face);
+public static final synchronized native void cairo_text_extents (int /*long*/ cr, byte[] utf8, int /*long*/ extents);
+public static final synchronized native void cairo_glyph_extents (int /*long*/ cr, int /*long*/ glyphs, int num_glyphs, int /*long*/ extents);
+public static final synchronized native void cairo_text_path (int /*long*/ cr, byte[] utf8);
+public static final synchronized native void cairo_glyph_path (int /*long*/ cr, int /*long*/ glyphs, int num_glyphs);
+public static final synchronized native int cairo_get_operator (int /*long*/ cr);
+public static final synchronized native int /*long*/ cairo_get_source (int /*long*/ cr);
+public static final synchronized native double cairo_get_tolerance (int /*long*/ cr);
+public static final synchronized native void cairo_get_current_point (int /*long*/ cr, double[] x, double[] y);
+public static final synchronized native int cairo_get_antialias (int /*long*/ cr);
+public static final synchronized native int cairo_get_fill_rule (int /*long*/ cr);
+public static final synchronized native double cairo_get_line_width (int /*long*/ cr);
+public static final synchronized native int cairo_get_line_cap (int /*long*/ cr);
+public static final synchronized native int cairo_get_line_join (int /*long*/ cr);
+public static final synchronized native double cairo_get_miter_limit (int /*long*/ cr);
+public static final synchronized native void cairo_get_matrix (int /*long*/ cr, double[] matrix);
+public static final synchronized native int /*long*/ cairo_get_target (int /*long*/ cr);
+public static final synchronized native int /*long*/ cairo_copy_path (int /*long*/ cr);
+public static final synchronized native int /*long*/ cairo_copy_path_flat (int /*long*/ cr);
+public static final synchronized native void cairo_append_path (int /*long*/ cr, int /*long*/ path);
+public static final synchronized native void cairo_path_destroy (int /*long*/ path);
 public static final synchronized native int cairo_status (int /*long*/ cr);
-public static final synchronized native int /*long*/ cairo_status_string (int /*long*/ cr);
-public static final synchronized native int /*long*/ cairo_surface_create_for_image (int /*long*/ data, int format, int width, int height, int stride);
+public static final synchronized native int /*long*/ cairo_status_to_string (int status);
+public static final synchronized native int /*long*/ cairo_image_surface_create (int format, int width, int height);
+public static final synchronized native int /*long*/ cairo_image_surface_create_for_data (int /*long*/ data, int format, int width, int height, int stride);
+public static final synchronized native int cairo_image_surface_get_width (int /*long*/ surface);
+public static final synchronized native int cairo_image_surface_get_height (int /*long*/ surface);
 public static final synchronized native int /*long*/ cairo_surface_create_similar (int /*long*/ other, int format, int width, int height);
 public static final synchronized native void cairo_surface_reference (int /*long*/ surface);
 public static final synchronized native void cairo_surface_destroy (int /*long*/ surface);
-public static final synchronized native int cairo_surface_set_repeat (int /*long*/ surface, int repeat);
-public static final synchronized native int cairo_surface_set_matrix (int /*long*/ surface, int /*long*/ matrix);
-public static final synchronized native int cairo_surface_get_matrix (int /*long*/ surface, int /*long*/ matrix);
-public static final synchronized native int cairo_surface_set_filter (int /*long*/ surface, int filter);
-public static final synchronized native int cairo_surface_get_filter (int /*long*/ surface);
-public static final synchronized native int /*long*/ cairo_image_surface_create (int format, int width, int height);
-public static final synchronized native int /*long*/ cairo_image_surface_create_for_data (int /*long*/ data, int format, int width, int height, int stride);
+public static final synchronized native void cairo_surface_finish (int /*long*/ surface);
+public static final synchronized native int cairo_surface_set_user_data (int /*long*/ surface, int /*long*/ key, int /*long*/ user_data, int /*long*/ destroy);
+public static final synchronized native int /*long*/ cairo_surface_get_user_data (int /*long*/ surface, int /*long*/ key);
+public static final synchronized native void cairo_surface_set_device_offset (int /*long*/ surface, double x_offset, double y_offset);
 public static final synchronized native int /*long*/ cairo_pattern_create_for_surface (int /*long*/ surface);
 public static final synchronized native int /*long*/ cairo_pattern_create_linear (double x0, double y0, double x1, double y1);
 public static final synchronized native int /*long*/ cairo_pattern_create_radial (double cx0, double cy0, double radius0, double cx1, double cy1, double radius1);
 public static final synchronized native void cairo_pattern_reference (int /*long*/ pattern);
 public static final synchronized native void cairo_pattern_destroy (int /*long*/ pattern);
-public static final synchronized native int cairo_pattern_add_color_stop (int /*long*/ pattern, double offset, double red, double green, double blue, double alpha);
-public static final synchronized native int cairo_pattern_set_matrix (int /*long*/ pattern, int /*long*/ matrix);
-public static final synchronized native int cairo_pattern_get_matrix (int /*long*/ pattern, int /*long*/ matrix);
-public static final synchronized native int cairo_pattern_set_extend (int /*long*/ pattern, int extend);
+public static final synchronized native void cairo_pattern_add_color_stop_rgb (int /*long*/ pattern, double offset, double red, double green, double blue);
+public static final synchronized native void cairo_pattern_add_color_stop_rgba (int /*long*/ pattern, double offset, double red, double green, double blue, double alpha);
+public static final synchronized native void cairo_pattern_set_matrix (int /*long*/ pattern, double[] matrix);
+public static final synchronized native void cairo_pattern_get_matrix (int /*long*/ pattern, double[] matrix);
+public static final synchronized native void cairo_pattern_set_extend (int /*long*/ pattern, int extend);
 public static final synchronized native int cairo_pattern_get_extend (int /*long*/ pattern);
-public static final synchronized native int cairo_pattern_set_filter (int /*long*/ pattern, int filter);
+public static final synchronized native void cairo_pattern_set_filter (int /*long*/ pattern, int filter);
 public static final synchronized native int cairo_pattern_get_filter (int /*long*/ pattern);
-public static final synchronized native int /*long*/ cairo_xlib_surface_create (int /*long*/ dpy, int /*long*/ drawable, int /*long*/ visual, int format, int /*long*/ colormap);
-public static final synchronized native int /*long*/ cairo_matrix_create ();
-public static final synchronized native void cairo_matrix_destroy (int /*long*/ matrix);
-public static final synchronized native int cairo_matrix_copy (int /*long*/ matrix, int /*long*/ other);
-public static final synchronized native int cairo_matrix_set_identity (int /*long*/ matrix);
-public static final synchronized native int cairo_matrix_set_affine (int /*long*/ cr, double a, double b, double c, double d, double tx, double ty);
-public static final synchronized native int cairo_matrix_get_affine (int /*long*/ matrix, double[] a, double[] b, double[] c, double[] d, double[] tx, double[] ty);
-public static final synchronized native int cairo_matrix_translate (int /*long*/ matrix, double tx, double ty);
-public static final synchronized native int cairo_matrix_scale (int /*long*/ matrix, double sx, double sy);
-public static final synchronized native int cairo_matrix_rotate (int /*long*/ matrix, double radians);
-public static final synchronized native int cairo_matrix_invert (int /*long*/ matrix);
-public static final synchronized native int cairo_matrix_multiply (int /*long*/ result, int /*long*/ a, int /*long*/ b);
-public static final synchronized native int cairo_matrix_transform_distance (int /*long*/ matrix, double[] dx, double[] dy);
-public static final synchronized native int cairo_matrix_transform_point (int /*long*/ matrix, double[] x, double[] y);
+public static final synchronized native void cairo_matrix_init (double[] matrix, double xx, double yx, double xy, double yy, double x0, double y0);
+public static final synchronized native void cairo_matrix_init_identity (double[] matrix);
+public static final synchronized native void cairo_matrix_init_translate (double[] matrix, double tx, double ty);
+public static final synchronized native void cairo_matrix_init_scale (double[] matrix, double sx, double sy);
+public static final synchronized native void cairo_matrix_init_rotate (double[] matrix, double radians);
+public static final synchronized native void cairo_matrix_translate (double[] matrix, double tx, double ty);
+public static final synchronized native void cairo_matrix_scale (double[] matrix, double sx, double sy);
+public static final synchronized native void cairo_matrix_rotate (double[] matrix, double radians);
+public static final synchronized native int cairo_matrix_invert (double[] matrix);
+public static final synchronized native void cairo_matrix_multiply (double[] result, double[] a, double[] b);
+public static final synchronized native void cairo_matrix_transform_distance (double[] matrix, double[] dx, double[] dy);
+public static final synchronized native void cairo_matrix_transform_point (double[] matrix, double[] x, double[] y);
+public static final synchronized native int /*long*/ cairo_xlib_surface_create (int /*long*/ dpy, int /*long*/ drawable, int /*long*/ visual, int width, int height);
+public static final synchronized native int /*long*/ cairo_xlib_surface_create_for_bitmap (int /*long*/ dpy, int /*long*/ pixmap, int /*long*/ screen, int width, int height);
+public static final synchronized native void cairo_xlib_surface_set_size (int /*long*/ surface, int width, int height);
+public static final native void memmove(cairo_path_t dest, int /*long*/ src, int /*long*/ size);
+public static final native void memmove(cairo_path_data_t dest, int /*long*/ src, int /*long*/ size);
+public static final native void memmove(double[] dest, int /*long*/ src, int /*long*/ size);
 
 }
--- cairo/org/eclipse/swt/internal/cairo/cairo_path_data_t.java	1970-01-01 01:00:00.000000000 +0100
+++ cairo/org/eclipse/swt/internal/cairo/cairo_path_data_t.java	2005-10-02 00:10:45.000000000 +0200
@@ -0,0 +1,28 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * Contributor(s):
+ *
+ * IBM
+ * -  Binding to permit interfacing between Cairo and SWT
+ * -  Copyright (C) 2005 IBM Corp.  All Rights Reserved.
+ *
+ * ***** END LICENSE BLOCK ***** */
+package org.eclipse.swt.internal.cairo;
+
+
+public class cairo_path_data_t {
+	public int type;
+	public int length;
+	public static final int sizeof = Cairo.cairo_path_data_t_sizeof();
+}
--- cairo/org/eclipse/swt/internal/cairo/cairo_path_t.java	1970-01-01 01:00:00.000000000 +0100
+++ cairo/org/eclipse/swt/internal/cairo/cairo_path_t.java	2005-10-02 00:10:45.000000000 +0200
@@ -0,0 +1,29 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * Contributor(s):
+ *
+ * IBM
+ * -  Binding to permit interfacing between Cairo and SWT
+ * -  Copyright (C) 2005 IBM Corp.  All Rights Reserved.
+ *
+ * ***** END LICENSE BLOCK ***** */
+package org.eclipse.swt.internal.cairo;
+
+
+public class cairo_path_t {
+	public int status;
+	public int /*long*/ data;
+	public int num_data;
+	public static final int sizeof = Cairo.cairo_path_t_sizeof();
+}
--- gtk/library/make_linux.mak	2005-10-02 00:08:16.000000000 +0200
+++ gtk/library/make_linux.mak	2005-10-02 00:10:45.000000000 +0200
@@ -70,7 +70,7 @@
 SWT_OBJECTS = swt.o callback.o
 AWT_OBJECTS = swt_awt.o
 SWTPI_OBJECTS = swt.o os.o os_structs.o os_custom.o os_stats.o
-CAIRO_OBJECTS = swt.o cairo.o cairo_structs.o cairo_stats.o cairo_custom.o
+CAIRO_OBJECTS = swt.o cairo.o cairo_structs.o cairo_stats.o
 ATK_OBJECTS = swt.o atk.o atk_structs.o atk_custom.o atk_stats.o
 GNOME_OBJECTS = swt.o gnome.o gnome_structs.o gnome_stats.o
 MOZILLA_OBJECTS = swt.o xpcom.o xpcom_custom.o xpcom_structs.o xpcom_stats.o
@@ -123,8 +123,6 @@
 
 cairo.o: cairo.c cairo.h swt.h
 	$(CC) $(CFLAGS) $(CAIROCFLAGS) -c cairo.c
-cairo_custom.o: cairo_custom.c cairo_structs.h cairo.h swt.h
-	$(CC) $(CFLAGS) $(CAIROCFLAGS) -c cairo_custom.c
 cairo_structs.o: cairo_structs.c cairo_structs.h cairo.h swt.h
 	$(CC) $(CFLAGS) $(CAIROCFLAGS) -c cairo_structs.c
 cairo_stats.o: cairo_stats.c cairo_structs.h cairo.h cairo_stats.h swt.h

eclipse-libswt-cairo1.0-3.patch:
 org.eclipse.swt.gtk.linux.ppc/build.xml |  245 ++++++++++++++++++++------------
 org.eclipse.swt.gtk.linux.x86/build.xml |  245 ++++++++++++++++++++------------
 2 files changed, 308 insertions(+), 182 deletions(-)

--- NEW FILE eclipse-libswt-cairo1.0-3.patch ---
--- plugins/org.eclipse.swt.gtk.linux.ppc/build.xml	2005-10-02 00:08:39.000000000 +0200
+++ plugins/org.eclipse.swt.gtk.linux.ppc/build.xml	2005-10-02 00:10:45.000000000 +0200
@@ -14,6 +14,7 @@
 		<property name="destination" value="${basedir}"/>
 		<property name="plugindir" value="../org.eclipse.swt"/>
 		<property name="bootclasspath" value=""/>
+		<property name="toolsplugindir" value="../org.eclipse.swt.tools"/>
 		<property name="javacVerbose" value="true"/>
 	</target>
 
@@ -37,64 +38,64 @@
 		<delete dir="${temp.folder}/@dot.bin"/>
 		<mkdir dir="${temp.folder}/@dot.bin"/>
 		<javac destdir="${temp.folder}/@dot.bin" verbose="${javacVerbose}" debug="on" failonerror="no" bootclasspath="${bootclasspath}" source="1.3" target="1.2">
-			<src path="${plugindir}/Eclipse SWT/cairo/"/>
-			<src path="${plugindir}/Eclipse SWT/common/"/>
-			<src path="${plugindir}/Eclipse SWT/common_j2se/"/>
-			<src path="${plugindir}/Eclipse SWT/emulated/bidi/"/>
-			<src path="${plugindir}/Eclipse SWT/emulated/coolbar/"/>
-			<src path="${plugindir}/Eclipse SWT/gtk/"/>
-			<src path="${plugindir}/Eclipse SWT Accessibility/common/"/>
-			<src path="${plugindir}/Eclipse SWT Accessibility/gtk/"/>
-			<src path="${plugindir}/Eclipse SWT AWT/common/"/>
-			<src path="${plugindir}/Eclipse SWT AWT/gtk/"/>
-			<src path="${plugindir}/Eclipse SWT Browser/common/"/>
-			<src path="${plugindir}/Eclipse SWT Browser/mozilla/"/>
-			<src path="${plugindir}/Eclipse SWT Custom Widgets/common/"/>
-			<src path="${plugindir}/Eclipse SWT Drag and Drop/common/"/>
-			<src path="${plugindir}/Eclipse SWT Drag and Drop/gtk/"/>
-			<src path="${plugindir}/Eclipse SWT PI/cairo/"/>
-			<src path="${plugindir}/Eclipse SWT PI/common/"/>
-			<src path="${plugindir}/Eclipse SWT PI/common_j2se/"/>
-			<src path="${plugindir}/Eclipse SWT PI/gtk/"/>
-			<src path="${plugindir}/Eclipse SWT Mozilla/common/"/>
-			<src path="${plugindir}/Eclipse SWT Mozilla/gtk/"/>
-			<src path="${plugindir}/Eclipse SWT Printing/common/"/>
-			<src path="${plugindir}/Eclipse SWT Printing/gtk/"/>
-			<src path="${plugindir}/Eclipse SWT Program/cde/"/>
-			<src path="${plugindir}/Eclipse SWT Program/common/"/>
-			<src path="${plugindir}/Eclipse SWT Program/gnome/"/>
-			<src path="${plugindir}/Eclipse SWT Program/gtk/"/>
+			<src path="${basedir}/src/Eclipse SWT/cairo/"/>
+			<src path="${basedir}/src/Eclipse SWT/common/"/>
+			<src path="${basedir}/src/Eclipse SWT/common_j2se/"/>
+			<src path="${basedir}/src/Eclipse SWT/emulated/bidi/"/>
+			<src path="${basedir}/src/Eclipse SWT/emulated/coolbar/"/>
+			<src path="${basedir}/src/Eclipse SWT/gtk/"/>
+			<src path="${basedir}/src/Eclipse SWT Accessibility/common/"/>
+			<src path="${basedir}/src/Eclipse SWT Accessibility/gtk/"/>
+			<src path="${basedir}/src/Eclipse SWT AWT/common/"/>
+			<src path="${basedir}/src/Eclipse SWT AWT/gtk/"/>
+			<src path="${basedir}/src/Eclipse SWT Browser/common/"/>
+			<src path="${basedir}/src/Eclipse SWT Browser/mozilla/"/>
+			<src path="${basedir}/src/Eclipse SWT Custom Widgets/common/"/>
+			<src path="${basedir}/src/Eclipse SWT Drag and Drop/common/"/>
+			<src path="${basedir}/src/Eclipse SWT Drag and Drop/gtk/"/>
+			<src path="${basedir}/src/Eclipse SWT Mozilla/gtk/"/>
+			<src path="${basedir}/src/Eclipse SWT Mozilla/common/"/>
+			<src path="${basedir}/src/Eclipse SWT PI/cairo/"/>
+			<src path="${basedir}/src/Eclipse SWT PI/common/"/>
+			<src path="${basedir}/src/Eclipse SWT PI/common_j2se/"/>
+			<src path="${basedir}/src/Eclipse SWT PI/gtk/"/>
+			<src path="${basedir}/src/Eclipse SWT Printing/common/"/>
+			<src path="${basedir}/src/Eclipse SWT Printing/gtk/"/>
+			<src path="${basedir}/src/Eclipse SWT Program/cde/"/>
+			<src path="${basedir}/src/Eclipse SWT Program/common/"/>
+			<src path="${basedir}/src/Eclipse SWT Program/gnome/"/>
+			<src path="${basedir}/src/Eclipse SWT Program/gtk/"/>
 		</javac>
         <property name="includes" value=""/>
         <property name="excludes" value="**/*.java,**/library/,**/package.htm*"/>
 		<copy todir="${temp.folder}/@dot.bin">
-			<fileset dir="${plugindir}/Eclipse SWT/cairo/" includes="${includes}" excludes="${excludes}"/>
-			<fileset dir="${plugindir}/Eclipse SWT/common/" includes="${includes}" excludes="${excludes}"/>
-			<fileset dir="${plugindir}/Eclipse SWT/common_j2se/" includes="${includes}" excludes="${excludes}"/>
-			<fileset dir="${plugindir}/Eclipse SWT/emulated/bidi/" includes="${includes}" excludes="${excludes}"/>
-			<fileset dir="${plugindir}/Eclipse SWT/emulated/coolbar/" includes="${includes}" excludes="${excludes}"/>
-			<fileset dir="${plugindir}/Eclipse SWT/gtk/" includes="${includes}" excludes="${excludes}"/>
-			<fileset dir="${plugindir}/Eclipse SWT Accessibility/common/" includes="${includes}" excludes="${excludes}"/>
-			<fileset dir="${plugindir}/Eclipse SWT Accessibility/gtk/" includes="${includes}" excludes="${excludes}"/>
-			<fileset dir="${plugindir}/Eclipse SWT AWT/common/" includes="${includes}" excludes="${excludes}"/>
-			<fileset dir="${plugindir}/Eclipse SWT AWT/gtk/" includes="${includes}" excludes="${excludes}"/>
-			<fileset dir="${plugindir}/Eclipse SWT Browser/common/" includes="${includes}" excludes="${excludes}"/>
-			<fileset dir="${plugindir}/Eclipse SWT Browser/mozilla/" includes="${includes}" excludes="${excludes}"/>
-			<fileset dir="${plugindir}/Eclipse SWT Custom Widgets/common/" includes="${includes}" excludes="${excludes}"/>
-			<fileset dir="${plugindir}/Eclipse SWT Drag and Drop/common/" includes="${includes}" excludes="${excludes}"/>
-			<fileset dir="${plugindir}/Eclipse SWT Drag and Drop/gtk/" includes="${includes}" excludes="${excludes}"/>
-			<fileset dir="${plugindir}/Eclipse SWT Mozilla/gtk/" includes="${includes}" excludes="${excludes}"/>
-			<fileset dir="${plugindir}/Eclipse SWT Mozilla/common/" includes="${includes}" excludes="${excludes}"/>
-			<fileset dir="${plugindir}/Eclipse SWT PI/cairo/" includes="${includes}" excludes="${excludes}"/>
-			<fileset dir="${plugindir}/Eclipse SWT PI/common/" includes="${includes}" excludes="${excludes}"/>
-			<fileset dir="${plugindir}/Eclipse SWT PI/common_j2se/" includes="${includes}" excludes="${excludes}"/>
-			<fileset dir="${plugindir}/Eclipse SWT PI/gtk/" includes="${includes}" excludes="${excludes}"/>
-			<fileset dir="${plugindir}/Eclipse SWT Printing/common/" includes="${includes}" excludes="${excludes}"/>
-			<fileset dir="${plugindir}/Eclipse SWT Printing/gtk/" includes="${includes}" excludes="${excludes}"/>
-			<fileset dir="${plugindir}/Eclipse SWT Program/cde/" includes="${includes}" excludes="${excludes}"/>
-			<fileset dir="${plugindir}/Eclipse SWT Program/common/" includes="${includes}" excludes="${excludes}"/>
-			<fileset dir="${plugindir}/Eclipse SWT Program/gnome/" includes="${includes}" excludes="${excludes}"/>
-			<fileset dir="${plugindir}/Eclipse SWT Program/gtk/" includes="${includes}" excludes="${excludes}"/>
+			<fileset dir="${basedir}/src/Eclipse SWT/cairo/" includes="${includes}" excludes="${excludes}"/>
+			<fileset dir="${basedir}/src/Eclipse SWT/common/" includes="${includes}" excludes="${excludes}"/>
+			<fileset dir="${basedir}/src/Eclipse SWT/common_j2se/" includes="${includes}" excludes="${excludes}"/>
+			<fileset dir="${basedir}/src/Eclipse SWT/emulated/bidi/" includes="${includes}" excludes="${excludes}"/>
+			<fileset dir="${basedir}/src/Eclipse SWT/emulated/coolbar/" includes="${includes}" excludes="${excludes}"/>
+			<fileset dir="${basedir}/src/Eclipse SWT/gtk/" includes="${includes}" excludes="${excludes}"/>
+			<fileset dir="${basedir}/src/Eclipse SWT Accessibility/common/" includes="${includes}" excludes="${excludes}"/>
+			<fileset dir="${basedir}/src/Eclipse SWT Accessibility/gtk/" includes="${includes}" excludes="${excludes}"/>
+			<fileset dir="${basedir}/src/Eclipse SWT AWT/common/" includes="${includes}" excludes="${excludes}"/>
+			<fileset dir="${basedir}/src/Eclipse SWT AWT/gtk/" includes="${includes}" excludes="${excludes}"/>
+			<fileset dir="${basedir}/src/Eclipse SWT Browser/common/" includes="${includes}" excludes="${excludes}"/>
+			<fileset dir="${basedir}/src/Eclipse SWT Browser/mozilla/" includes="${includes}" excludes="${excludes}"/>
+			<fileset dir="${basedir}/src/Eclipse SWT Custom Widgets/common/" includes="${includes}" excludes="${excludes}"/>
+			<fileset dir="${basedir}/src/Eclipse SWT Drag and Drop/common/" includes="${includes}" excludes="${excludes}"/>
+			<fileset dir="${basedir}/src/Eclipse SWT Drag and Drop/gtk/" includes="${includes}" excludes="${excludes}"/>
+			<fileset dir="${basedir}/src/Eclipse SWT Mozilla/common/" includes="${includes}" excludes="${excludes}"/>
+			<fileset dir="${basedir}/src/Eclipse SWT Mozilla/gtk/" includes="${includes}" excludes="${excludes}"/>
+			<fileset dir="${basedir}/src/Eclipse SWT PI/cairo/" includes="${includes}" excludes="${excludes}"/>
+			<fileset dir="${basedir}/src/Eclipse SWT PI/common/" includes="${includes}" excludes="${excludes}"/>
+			<fileset dir="${basedir}/src/Eclipse SWT PI/common_j2se/" includes="${includes}" excludes="${excludes}"/>
+			<fileset dir="${basedir}/src/Eclipse SWT PI/gtk/" includes="${includes}" excludes="${excludes}"/>
+			<fileset dir="${basedir}/src/Eclipse SWT Printing/common/" includes="${includes}" excludes="${excludes}"/>
+			<fileset dir="${basedir}/src/Eclipse SWT Printing/gtk/" includes="${includes}" excludes="${excludes}"/>
+			<fileset dir="${basedir}/src/Eclipse SWT Program/cde/" includes="${includes}" excludes="${excludes}"/>
+			<fileset dir="${basedir}/src/Eclipse SWT Program/common/" includes="${includes}" excludes="${excludes}"/>
+			<fileset dir="${basedir}/src/Eclipse SWT Program/gnome/" includes="${includes}" excludes="${excludes}"/>
+			<fileset dir="${basedir}/src/Eclipse SWT Program/gtk/" includes="${includes}" excludes="${excludes}"/>
 		</copy>
 
 		<mkdir dir="${build.result.folder}/@dot"/>
@@ -108,57 +109,117 @@
 
 	<target name="build.jars" depends="init">
 		<available property="@dot" file="${build.result.folder}/@dot"/>
+		<available property="source.present" file="${basedir}/src" type="dir" />
+		<antcall target="copy.source" />
 		<antcall target="@dot"/>
 	</target>
 
+	<target name="copy.source" unless="source.present">
+			<echo>Copying source from org.eclipse.swt project to folder ${basedir}/src folder ${temp.folder}.</echo>
+			<delete dir="${basedir}/src"/>
+			<mkdir dir="${basedir}/src"/>
+		
+			<!-- Copy the existing 32 bit SWT source folders to the 64 bit source folder -->
+			<copy todir="${basedir}/src">
+				<fileset dir="${plugindir}" includes="Eclipse*/**"/>
+			</copy>
+	</target>
+	
 	<target name="src.zip" depends="init" unless="src.zip">
 		<mkdir dir="${build.result.folder}/"/>
 		<zip zipfile="${build.result.folder}/src.zip">
-			<fileset dir="${plugindir}/Eclipse SWT/cairo/" includes="**/*.java" excludes=""/>
-			<fileset dir="${plugindir}/Eclipse SWT/common/" includes="**/*.java" excludes=""/>
-			<fileset dir="${plugindir}/Eclipse SWT/common/library/"/>
-			<fileset dir="${plugindir}/Eclipse SWT/common_j2se/" includes="**/*.java" excludes=""/>
-			<fileset dir="${plugindir}/Eclipse SWT/emulated/bidi/" includes="**/*.java" excludes=""/>
-			<fileset dir="${plugindir}/Eclipse SWT/emulated/coolbar/" includes="**/*.java" excludes=""/>
-			<fileset dir="${plugindir}/Eclipse SWT/gtk/" includes="**/*.java" excludes=""/>
-			<fileset dir="${plugindir}/Eclipse SWT Accessibility/common/" includes="**/*.java" excludes=""/>
-			<fileset dir="${plugindir}/Eclipse SWT Accessibility/gtk/" includes="**/*.java" excludes=""/>
-			<fileset dir="${plugindir}/Eclipse SWT AWT/common/" includes="**/*.java" excludes=""/>
-			<fileset dir="${plugindir}/Eclipse SWT AWT/gtk/" includes="**/*.java" excludes=""/>
-			<fileset dir="${plugindir}/Eclipse SWT AWT/gtk/library/"/>
-			<fileset dir="${plugindir}/Eclipse SWT Browser/common/" includes="**/*.java" excludes=""/>
-			<fileset dir="${plugindir}/Eclipse SWT Browser/mozilla/" includes="**/*.java" excludes=""/>
-			<fileset dir="${plugindir}/Eclipse SWT Custom Widgets/common/" includes="**/*.java" excludes=""/>
-			<fileset dir="${plugindir}/Eclipse SWT Drag and Drop/common/" includes="**/*.java" excludes=""/>
-			<fileset dir="${plugindir}/Eclipse SWT Drag and Drop/gtk/" includes="**/*.java" excludes=""/>
-			<fileset dir="${plugindir}/Eclipse SWT Mozilla/common/" includes="**/*.java" excludes=""/>
-			<fileset dir="${plugindir}/Eclipse SWT Mozilla/common/library/"/>
-			<fileset dir="${plugindir}/Eclipse SWT Mozilla/gtk/" includes="**/*.java" excludes=""/>
-			<fileset dir="${plugindir}/Eclipse SWT PI/cairo/" includes="**/*.java" excludes=""/>
-			<fileset dir="${plugindir}/Eclipse SWT PI/cairo/library/"/>
-			<fileset dir="${plugindir}/Eclipse SWT PI/common/" includes="**/*.java" excludes=""/>
-			<fileset dir="${plugindir}/Eclipse SWT PI/common_j2se/" includes="**/*.java" excludes=""/>
-			<fileset dir="${plugindir}/Eclipse SWT PI/gtk/" includes="**/*.java" excludes=""/>
-			<fileset dir="${plugindir}/Eclipse SWT PI/gtk/library/"/>
-			<fileset dir="${plugindir}/Eclipse SWT Printing/common/" includes="**/*.java" excludes=""/>
-			<fileset dir="${plugindir}/Eclipse SWT Printing/gtk/" includes="**/*.java" excludes=""/>
-			<fileset dir="${plugindir}/Eclipse SWT Program/cde/" includes="**/*.java" excludes=""/>
-			<fileset dir="${plugindir}/Eclipse SWT Program/cde/library/"/>
-			<fileset dir="${plugindir}/Eclipse SWT Program/common/" includes="**/*.java" excludes=""/>
-			<fileset dir="${plugindir}/Eclipse SWT Program/gnome/" includes="**/*.java" excludes=""/>
-			<fileset dir="${plugindir}/Eclipse SWT Program/gnome/library/"/>
-			<fileset dir="${plugindir}/Eclipse SWT Program/gtk/" includes="**/*.java" excludes=""/>
-			<fileset dir="${plugindir}/Eclipse SWT/common_j2se/" includes="**/*.properties" excludes=""/>
-			<fileset dir="${plugindir}/Eclipse SWT/common/" includes="**/version.txt" excludes=""/>
+			<fileset dir="${basedir}/src/Eclipse SWT/cairo/" includes="**/*.java" excludes=""/>
+			<fileset dir="${basedir}/src/Eclipse SWT/common/" includes="**/*.java" excludes=""/>
+			<fileset dir="${basedir}/src/Eclipse SWT/common/library/"/>
+			<fileset dir="${basedir}/src/Eclipse SWT/common_j2se/" includes="**/*.java" excludes=""/>
+			<fileset dir="${basedir}/src/Eclipse SWT/emulated/bidi/" includes="**/*.java" excludes=""/>
+			<fileset dir="${basedir}/src/Eclipse SWT/emulated/coolbar/" includes="**/*.java" excludes=""/>
+			<fileset dir="${basedir}/src/Eclipse SWT/gtk/" includes="**/*.java" excludes=""/>
+			<fileset dir="${basedir}/src/Eclipse SWT Accessibility/common/" includes="**/*.java" excludes=""/>
+			<fileset dir="${basedir}/src/Eclipse SWT Accessibility/gtk/" includes="**/*.java" excludes=""/>
+			<fileset dir="${basedir}/src/Eclipse SWT AWT/common/" includes="**/*.java" excludes=""/>
+			<fileset dir="${basedir}/src/Eclipse SWT AWT/gtk/" includes="**/*.java" excludes=""/>
+			<fileset dir="${basedir}/src/Eclipse SWT AWT/gtk/library/"/>
+			<fileset dir="${basedir}/src/Eclipse SWT Browser/common/" includes="**/*.java" excludes=""/>
+			<fileset dir="${basedir}/src/Eclipse SWT Browser/mozilla/" includes="**/*.java" excludes=""/>
+			<fileset dir="${basedir}/src/Eclipse SWT Custom Widgets/common/" includes="**/*.java" excludes=""/>
+			<fileset dir="${basedir}/src/Eclipse SWT Drag and Drop/common/" includes="**/*.java" excludes=""/>
+			<fileset dir="${basedir}/src/Eclipse SWT Drag and Drop/gtk/" includes="**/*.java" excludes=""/>
+			<fileset dir="${basedir}/src/Eclipse SWT Mozilla/common/" includes="**/*.java" excludes=""/>
+			<fileset dir="${basedir}/src/Eclipse SWT Mozilla/common/library/"/>
+			<fileset dir="${basedir}/src/Eclipse SWT Mozilla/gtk/" includes="**/*.java" excludes=""/>
+			<fileset dir="${basedir}/src/Eclipse SWT PI/cairo/" includes="**/*.java" excludes=""/>
+			<fileset dir="${basedir}/src/Eclipse SWT PI/cairo/library/"/>
+			<fileset dir="${basedir}/src/Eclipse SWT PI/common/" includes="**/*.java" excludes=""/>
+			<fileset dir="${basedir}/src/Eclipse SWT PI/common_j2se/" includes="**/*.java" excludes=""/>
+			<fileset dir="${basedir}/src/Eclipse SWT PI/gtk/" includes="**/*.java" excludes=""/>
+			<fileset dir="${basedir}/src/Eclipse SWT PI/gtk/library/"/>
+			<fileset dir="${basedir}/src/Eclipse SWT Printing/common/" includes="**/*.java" excludes=""/>
+			<fileset dir="${basedir}/src/Eclipse SWT Printing/gtk/" includes="**/*.java" excludes=""/>
+			<fileset dir="${basedir}/src/Eclipse SWT Program/cde/" includes="**/*.java" excludes=""/>
+			<fileset dir="${basedir}/src/Eclipse SWT Program/cde/library/"/>
+			<fileset dir="${basedir}/src/Eclipse SWT Program/common/" includes="**/*.java" excludes=""/>
+			<fileset dir="${basedir}/src/Eclipse SWT Program/gtk/" includes="**/*.java" excludes=""/>
+			<fileset dir="${basedir}/src/Eclipse SWT Program/gnome/" includes="**/*.java" excludes=""/>
+			<fileset dir="${basedir}/src/Eclipse SWT Program/gnome/library/"/>
+			<fileset dir="${basedir}/src/Eclipse SWT/common_j2se/" includes="**/*.properties" excludes=""/>
+			<fileset dir="${basedir}/src/Eclipse SWT/common/" includes="**/version.txt" excludes=""/>
 			<fileset dir="${basedir}" includes="about.html,about_files/" excludes=""/>
 		</zip>
 	</target>
 
-	<target name="build.sources" depends="init">
+	<target name="build.sources" depends="build.cfiles">
 		<available property="src.zip" file="${build.result.folder}/src.zip"/>
 		<antcall target="src.zip"/>
 	</target>
 
+	<target name="build.cfiles" depends="build.jars">
+		<!--compile the jar in org.eclipse.swt.tools-->
+		<ant antfile="build.xml" dir="${toolsplugindir}" inheritAll="false" target="build.jars" />
+
+		<!-- generate the C code from the SWT PI java classes -->
+		<!-- assumes the swttools.jar has already been built  -->
+		<java classname="org.eclipse.swt.tools.internal.JNIGeneratorApp" classpath="${toolsplugindir}/bin:${toolsplugindir}/swttools.jar:${basedir}/swt.jar"><arg value="org.eclipse.swt.internal.gtk.OS"/><arg value="${basedir}/src/Eclipse SWT PI/gtk/library/"/><arg value="${build.result.folder}/swt.jar"/></java>
+		<java classname="org.eclipse.swt.tools.internal.JNIGeneratorApp" classpath="${toolsplugindir}/bin:${toolsplugindir}/swttools.jar:${basedir}/swt.jar"><arg value="org.eclipse.swt.internal.accessibility.gtk.ATK"/><arg value="${basedir}/src/Eclipse SWT PI/gtk/library/"/><arg value="${build.result.folder}/swt.jar"/></java>
+		<java classname="org.eclipse.swt.tools.internal.JNIGeneratorApp" classpath="${toolsplugindir}/bin:${toolsplugindir}/swttools.jar:${basedir}/swt.jar"><arg value="org.eclipse.swt.internal.cairo.Cairo"/><arg value="${basedir}/src/Eclipse SWT PI/cairo/library/"/><arg value="${build.result.folder}/swt.jar"/></java>
+		<java classname="org.eclipse.swt.tools.internal.JNIGeneratorApp" classpath="${toolsplugindir}/bin:${toolsplugindir}/swttools.jar:${basedir}/swt.jar"><arg value="org.eclipse.swt.internal.gnome.GNOME"/><arg value="${basedir}/src/Eclipse SWT Program/gnome/library/"/><arg value="${build.result.folder}/swt.jar"/></java>
+		<java classname="org.eclipse.swt.tools.internal.JNIGeneratorApp" classpath="${toolsplugindir}/bin:${toolsplugindir}/swttools.jar:${basedir}/swt.jar"><arg value="org.eclipse.swt.internal.cde.CDE"/><arg value="${basedir}/src/Eclipse SWT Program/cde/library/"/><arg value="${build.result.folder}/swt.jar"/></java>
+		<java classname="org.eclipse.swt.tools.internal.JNIGeneratorApp" classpath="${toolsplugindir}/bin:${toolsplugindir}/swttools.jar:${basedir}/swt.jar"><arg value="org.eclipse.swt.internal.mozilla.XPCOM"/><arg value="${basedir}/src/Eclipse SWT Mozilla/common/library/"/><arg value="${build.result.folder}/swt.jar"/></java>
+
+		<!-- copy all the files into /library folders into a temporary bin/library folder  -->
+		<!-- since this is the structure assumed by the native makefile and given that     -->
+		<!-- this script needs to work outside of the Eclipse workspace without modifying  -->
+		<!-- the content of the org.eclipse.swt project.                                   -->
+		<mkdir dir="${basedir}/src/bin/library"/>
+		<copy todir="${basedir}/src/bin/library">
+			<fileset dir="${basedir}/src/Eclipse SWT/common/library"/>
+			<fileset dir="${basedir}/src/Eclipse SWT AWT/gtk/library"/>
+			<fileset dir="${basedir}/src/Eclipse SWT Mozilla/common/library"/>
+			<fileset dir="${basedir}/src/Eclipse SWT PI/cairo/library"/>
+			<fileset dir="${basedir}/src/Eclipse SWT PI/gtk/library"/>
+			<fileset dir="${basedir}/src/Eclipse SWT Program/cde/library"/>
+			<fileset dir="${basedir}/src/Eclipse SWT Program/gnome/library"/>
+		</copy>
+	</target>
+
+	<target name="build.nativeLibraries" depends="build.cfiles" description="Build native libraries without changing the content of org.eclipse.swt">
+		<property name="sourcedir" value="${basedir}/src/bin/library" />
+	    <property name="lib_destdir" value="${sourcedir}/../../../../${fragment}" />
+		<tstamp/>
+		<exec dir="${sourcedir}" executable="sh">
+			<arg line="./build.sh"/>
+			<arg line="clean"/>
+		</exec>
+		<mkdir dir="${lib_destdir}" />
+		<exec dir="${sourcedir}" executable="sh">
+			<arg line="./build.sh"/>
+			<arg line="all"/>
+		</exec>
+		<copy todir="${lib_destdir}">
+			<fileset dir="${sourcedir}/" includes="*.so"/>
+		</copy>
+	</target>
+
 	<target name="build.zips" depends="init">
 	</target>
 
@@ -212,6 +273,8 @@
 		<delete file="${plugin.destination}/${full.name}.jar"/>
 		<delete file="${plugin.destination}/${full.name}.zip"/>
 		<delete dir="${temp.folder}"/>
+		<!-- delete swttools.jar so that it will be compiled in the build.jars target -->
+		<ant antfile="build.xml" dir="${toolsplugindir}" inheritAll="false" target="clean"/>
 	</target>
 
 	<target name="refresh" depends="init" if="eclipse.running">
--- plugins/org.eclipse.swt.gtk.linux.x86/build.xml	2005-10-02 00:09:01.000000000 +0200
+++ plugins/org.eclipse.swt.gtk.linux.x86/build.xml	2005-10-02 00:10:45.000000000 +0200
@@ -14,6 +14,7 @@
 		<property name="destination" value="${basedir}"/>
 		<property name="plugindir" value="../org.eclipse.swt"/>
 		<property name="bootclasspath" value=""/>
+		<property name="toolsplugindir" value="../org.eclipse.swt.tools"/>
 		<property name="javacVerbose" value="true"/>
 	</target>
 
@@ -37,64 +38,64 @@
 		<delete dir="${temp.folder}/@dot.bin"/>
 		<mkdir dir="${temp.folder}/@dot.bin"/>
 		<javac destdir="${temp.folder}/@dot.bin" verbose="${javacVerbose}" debug="on" failonerror="no" bootclasspath="${bootclasspath}" source="1.3" target="1.2">
-			<src path="${plugindir}/Eclipse SWT/cairo/"/>
-			<src path="${plugindir}/Eclipse SWT/common/"/>
-			<src path="${plugindir}/Eclipse SWT/common_j2se/"/>
-			<src path="${plugindir}/Eclipse SWT/emulated/bidi/"/>
-			<src path="${plugindir}/Eclipse SWT/emulated/coolbar/"/>
-			<src path="${plugindir}/Eclipse SWT/gtk/"/>
-			<src path="${plugindir}/Eclipse SWT Accessibility/common/"/>
-			<src path="${plugindir}/Eclipse SWT Accessibility/gtk/"/>
-			<src path="${plugindir}/Eclipse SWT AWT/common/"/>
-			<src path="${plugindir}/Eclipse SWT AWT/gtk/"/>
-			<src path="${plugindir}/Eclipse SWT Browser/common/"/>
-			<src path="${plugindir}/Eclipse SWT Browser/mozilla/"/>
-			<src path="${plugindir}/Eclipse SWT Custom Widgets/common/"/>
-			<src path="${plugindir}/Eclipse SWT Drag and Drop/common/"/>
-			<src path="${plugindir}/Eclipse SWT Drag and Drop/gtk/"/>
-			<src path="${plugindir}/Eclipse SWT PI/cairo/"/>
-			<src path="${plugindir}/Eclipse SWT PI/common/"/>
-			<src path="${plugindir}/Eclipse SWT PI/common_j2se/"/>
-			<src path="${plugindir}/Eclipse SWT PI/gtk/"/>
-			<src path="${plugindir}/Eclipse SWT Mozilla/common/"/>
-			<src path="${plugindir}/Eclipse SWT Mozilla/gtk/"/>
-			<src path="${plugindir}/Eclipse SWT Printing/common/"/>
-			<src path="${plugindir}/Eclipse SWT Printing/gtk/"/>
-			<src path="${plugindir}/Eclipse SWT Program/cde/"/>
-			<src path="${plugindir}/Eclipse SWT Program/common/"/>
-			<src path="${plugindir}/Eclipse SWT Program/gnome/"/>
-			<src path="${plugindir}/Eclipse SWT Program/gtk/"/>
+			<src path="${basedir}/src/Eclipse SWT/cairo/"/>
+			<src path="${basedir}/src/Eclipse SWT/common/"/>
+			<src path="${basedir}/src/Eclipse SWT/common_j2se/"/>
+			<src path="${basedir}/src/Eclipse SWT/emulated/bidi/"/>
+			<src path="${basedir}/src/Eclipse SWT/emulated/coolbar/"/>
+			<src path="${basedir}/src/Eclipse SWT/gtk/"/>
+			<src path="${basedir}/src/Eclipse SWT Accessibility/common/"/>
+			<src path="${basedir}/src/Eclipse SWT Accessibility/gtk/"/>
+			<src path="${basedir}/src/Eclipse SWT AWT/common/"/>
+			<src path="${basedir}/src/Eclipse SWT AWT/gtk/"/>
+			<src path="${basedir}/src/Eclipse SWT Browser/common/"/>
+			<src path="${basedir}/src/Eclipse SWT Browser/mozilla/"/>
+			<src path="${basedir}/src/Eclipse SWT Custom Widgets/common/"/>
+			<src path="${basedir}/src/Eclipse SWT Drag and Drop/common/"/>
+			<src path="${basedir}/src/Eclipse SWT Drag and Drop/gtk/"/>
+			<src path="${basedir}/src/Eclipse SWT Mozilla/gtk/"/>
+			<src path="${basedir}/src/Eclipse SWT Mozilla/common/"/>
+			<src path="${basedir}/src/Eclipse SWT PI/cairo/"/>
+			<src path="${basedir}/src/Eclipse SWT PI/common/"/>
+			<src path="${basedir}/src/Eclipse SWT PI/common_j2se/"/>
+			<src path="${basedir}/src/Eclipse SWT PI/gtk/"/>
+			<src path="${basedir}/src/Eclipse SWT Printing/common/"/>
+			<src path="${basedir}/src/Eclipse SWT Printing/gtk/"/>
+			<src path="${basedir}/src/Eclipse SWT Program/cde/"/>
+			<src path="${basedir}/src/Eclipse SWT Program/common/"/>
+			<src path="${basedir}/src/Eclipse SWT Program/gnome/"/>
+			<src path="${basedir}/src/Eclipse SWT Program/gtk/"/>
 		</javac>
         <property name="includes" value=""/>
         <property name="excludes" value="**/*.java,**/library/,**/package.htm*"/>
 		<copy todir="${temp.folder}/@dot.bin">
-			<fileset dir="${plugindir}/Eclipse SWT/cairo/" includes="${includes}" excludes="${excludes}"/>
-			<fileset dir="${plugindir}/Eclipse SWT/common/" includes="${includes}" excludes="${excludes}"/>
-			<fileset dir="${plugindir}/Eclipse SWT/common_j2se/" includes="${includes}" excludes="${excludes}"/>
-			<fileset dir="${plugindir}/Eclipse SWT/emulated/bidi/" includes="${includes}" excludes="${excludes}"/>
-			<fileset dir="${plugindir}/Eclipse SWT/emulated/coolbar/" includes="${includes}" excludes="${excludes}"/>
-			<fileset dir="${plugindir}/Eclipse SWT/gtk/" includes="${includes}" excludes="${excludes}"/>
-			<fileset dir="${plugindir}/Eclipse SWT Accessibility/common/" includes="${includes}" excludes="${excludes}"/>
-			<fileset dir="${plugindir}/Eclipse SWT Accessibility/gtk/" includes="${includes}" excludes="${excludes}"/>
-			<fileset dir="${plugindir}/Eclipse SWT AWT/common/" includes="${includes}" excludes="${excludes}"/>
-			<fileset dir="${plugindir}/Eclipse SWT AWT/gtk/" includes="${includes}" excludes="${excludes}"/>
-			<fileset dir="${plugindir}/Eclipse SWT Browser/common/" includes="${includes}" excludes="${excludes}"/>
-			<fileset dir="${plugindir}/Eclipse SWT Browser/mozilla/" includes="${includes}" excludes="${excludes}"/>
-			<fileset dir="${plugindir}/Eclipse SWT Custom Widgets/common/" includes="${includes}" excludes="${excludes}"/>
-			<fileset dir="${plugindir}/Eclipse SWT Drag and Drop/common/" includes="${includes}" excludes="${excludes}"/>
-			<fileset dir="${plugindir}/Eclipse SWT Drag and Drop/gtk/" includes="${includes}" excludes="${excludes}"/>
-			<fileset dir="${plugindir}/Eclipse SWT Mozilla/gtk/" includes="${includes}" excludes="${excludes}"/>
-			<fileset dir="${plugindir}/Eclipse SWT Mozilla/common/" includes="${includes}" excludes="${excludes}"/>
-			<fileset dir="${plugindir}/Eclipse SWT PI/cairo/" includes="${includes}" excludes="${excludes}"/>
-			<fileset dir="${plugindir}/Eclipse SWT PI/common/" includes="${includes}" excludes="${excludes}"/>
-			<fileset dir="${plugindir}/Eclipse SWT PI/common_j2se/" includes="${includes}" excludes="${excludes}"/>
-			<fileset dir="${plugindir}/Eclipse SWT PI/gtk/" includes="${includes}" excludes="${excludes}"/>
-			<fileset dir="${plugindir}/Eclipse SWT Printing/common/" includes="${includes}" excludes="${excludes}"/>
-			<fileset dir="${plugindir}/Eclipse SWT Printing/gtk/" includes="${includes}" excludes="${excludes}"/>
-			<fileset dir="${plugindir}/Eclipse SWT Program/cde/" includes="${includes}" excludes="${excludes}"/>
-			<fileset dir="${plugindir}/Eclipse SWT Program/common/" includes="${includes}" excludes="${excludes}"/>
-			<fileset dir="${plugindir}/Eclipse SWT Program/gnome/" includes="${includes}" excludes="${excludes}"/>
-			<fileset dir="${plugindir}/Eclipse SWT Program/gtk/" includes="${includes}" excludes="${excludes}"/>
+			<fileset dir="${basedir}/src/Eclipse SWT/cairo/" includes="${includes}" excludes="${excludes}"/>
+			<fileset dir="${basedir}/src/Eclipse SWT/common/" includes="${includes}" excludes="${excludes}"/>
+			<fileset dir="${basedir}/src/Eclipse SWT/common_j2se/" includes="${includes}" excludes="${excludes}"/>
+			<fileset dir="${basedir}/src/Eclipse SWT/emulated/bidi/" includes="${includes}" excludes="${excludes}"/>
+			<fileset dir="${basedir}/src/Eclipse SWT/emulated/coolbar/" includes="${includes}" excludes="${excludes}"/>
+			<fileset dir="${basedir}/src/Eclipse SWT/gtk/" includes="${includes}" excludes="${excludes}"/>
+			<fileset dir="${basedir}/src/Eclipse SWT Accessibility/common/" includes="${includes}" excludes="${excludes}"/>
+			<fileset dir="${basedir}/src/Eclipse SWT Accessibility/gtk/" includes="${includes}" excludes="${excludes}"/>
+			<fileset dir="${basedir}/src/Eclipse SWT AWT/common/" includes="${includes}" excludes="${excludes}"/>
+			<fileset dir="${basedir}/src/Eclipse SWT AWT/gtk/" includes="${includes}" excludes="${excludes}"/>
+			<fileset dir="${basedir}/src/Eclipse SWT Browser/common/" includes="${includes}" excludes="${excludes}"/>
+			<fileset dir="${basedir}/src/Eclipse SWT Browser/mozilla/" includes="${includes}" excludes="${excludes}"/>
+			<fileset dir="${basedir}/src/Eclipse SWT Custom Widgets/common/" includes="${includes}" excludes="${excludes}"/>
+			<fileset dir="${basedir}/src/Eclipse SWT Drag and Drop/common/" includes="${includes}" excludes="${excludes}"/>
+			<fileset dir="${basedir}/src/Eclipse SWT Drag and Drop/gtk/" includes="${includes}" excludes="${excludes}"/>
+			<fileset dir="${basedir}/src/Eclipse SWT Mozilla/common/" includes="${includes}" excludes="${excludes}"/>
+			<fileset dir="${basedir}/src/Eclipse SWT Mozilla/gtk/" includes="${includes}" excludes="${excludes}"/>
+			<fileset dir="${basedir}/src/Eclipse SWT PI/cairo/" includes="${includes}" excludes="${excludes}"/>
+			<fileset dir="${basedir}/src/Eclipse SWT PI/common/" includes="${includes}" excludes="${excludes}"/>
+			<fileset dir="${basedir}/src/Eclipse SWT PI/common_j2se/" includes="${includes}" excludes="${excludes}"/>
+			<fileset dir="${basedir}/src/Eclipse SWT PI/gtk/" includes="${includes}" excludes="${excludes}"/>
+			<fileset dir="${basedir}/src/Eclipse SWT Printing/common/" includes="${includes}" excludes="${excludes}"/>
+			<fileset dir="${basedir}/src/Eclipse SWT Printing/gtk/" includes="${includes}" excludes="${excludes}"/>
+			<fileset dir="${basedir}/src/Eclipse SWT Program/cde/" includes="${includes}" excludes="${excludes}"/>
+			<fileset dir="${basedir}/src/Eclipse SWT Program/common/" includes="${includes}" excludes="${excludes}"/>
+			<fileset dir="${basedir}/src/Eclipse SWT Program/gnome/" includes="${includes}" excludes="${excludes}"/>
+			<fileset dir="${basedir}/src/Eclipse SWT Program/gtk/" includes="${includes}" excludes="${excludes}"/>
 		</copy>
 
 		<mkdir dir="${build.result.folder}/@dot"/>
@@ -108,57 +109,117 @@
 
 	<target name="build.jars" depends="init">
 		<available property="@dot" file="${build.result.folder}/@dot"/>
+		<available property="source.present" file="${basedir}/src" type="dir" />
+		<antcall target="copy.source" />
 		<antcall target="@dot"/>
 	</target>
 
+	<target name="copy.source" unless="source.present">
+			<echo>Copying source from org.eclipse.swt project to folder ${basedir}/src folder ${temp.folder}.</echo>
+			<delete dir="${basedir}/src"/>
+			<mkdir dir="${basedir}/src"/>
+		
+			<!-- Copy the existing 32 bit SWT source folders to the 64 bit source folder -->
+			<copy todir="${basedir}/src">
+				<fileset dir="${plugindir}" includes="Eclipse*/**"/>
+			</copy>
+	</target>
+	
 	<target name="src.zip" depends="init" unless="src.zip">
 		<mkdir dir="${build.result.folder}/"/>
 		<zip zipfile="${build.result.folder}/src.zip">
-			<fileset dir="${plugindir}/Eclipse SWT/cairo/" includes="**/*.java" excludes=""/>
-			<fileset dir="${plugindir}/Eclipse SWT/common/" includes="**/*.java" excludes=""/>
-			<fileset dir="${plugindir}/Eclipse SWT/common/library/"/>
-			<fileset dir="${plugindir}/Eclipse SWT/common_j2se/" includes="**/*.java" excludes=""/>
-			<fileset dir="${plugindir}/Eclipse SWT/emulated/bidi/" includes="**/*.java" excludes=""/>
-			<fileset dir="${plugindir}/Eclipse SWT/emulated/coolbar/" includes="**/*.java" excludes=""/>
-			<fileset dir="${plugindir}/Eclipse SWT/gtk/" includes="**/*.java" excludes=""/>
-			<fileset dir="${plugindir}/Eclipse SWT Accessibility/common/" includes="**/*.java" excludes=""/>
-			<fileset dir="${plugindir}/Eclipse SWT Accessibility/gtk/" includes="**/*.java" excludes=""/>
-			<fileset dir="${plugindir}/Eclipse SWT AWT/common/" includes="**/*.java" excludes=""/>
-			<fileset dir="${plugindir}/Eclipse SWT AWT/gtk/" includes="**/*.java" excludes=""/>
-			<fileset dir="${plugindir}/Eclipse SWT AWT/gtk/library/"/>
-			<fileset dir="${plugindir}/Eclipse SWT Browser/common/" includes="**/*.java" excludes=""/>
-			<fileset dir="${plugindir}/Eclipse SWT Browser/mozilla/" includes="**/*.java" excludes=""/>
-			<fileset dir="${plugindir}/Eclipse SWT Custom Widgets/common/" includes="**/*.java" excludes=""/>
-			<fileset dir="${plugindir}/Eclipse SWT Drag and Drop/common/" includes="**/*.java" excludes=""/>
-			<fileset dir="${plugindir}/Eclipse SWT Drag and Drop/gtk/" includes="**/*.java" excludes=""/>
-			<fileset dir="${plugindir}/Eclipse SWT Mozilla/common/" includes="**/*.java" excludes=""/>
-			<fileset dir="${plugindir}/Eclipse SWT Mozilla/common/library/"/>
-			<fileset dir="${plugindir}/Eclipse SWT Mozilla/gtk/" includes="**/*.java" excludes=""/>
-			<fileset dir="${plugindir}/Eclipse SWT PI/cairo/" includes="**/*.java" excludes=""/>
-			<fileset dir="${plugindir}/Eclipse SWT PI/cairo/library/"/>
-			<fileset dir="${plugindir}/Eclipse SWT PI/common/" includes="**/*.java" excludes=""/>
-			<fileset dir="${plugindir}/Eclipse SWT PI/common_j2se/" includes="**/*.java" excludes=""/>
-			<fileset dir="${plugindir}/Eclipse SWT PI/gtk/" includes="**/*.java" excludes=""/>
-			<fileset dir="${plugindir}/Eclipse SWT PI/gtk/library/"/>
-			<fileset dir="${plugindir}/Eclipse SWT Printing/common/" includes="**/*.java" excludes=""/>
-			<fileset dir="${plugindir}/Eclipse SWT Printing/gtk/" includes="**/*.java" excludes=""/>
-			<fileset dir="${plugindir}/Eclipse SWT Program/cde/" includes="**/*.java" excludes=""/>
-			<fileset dir="${plugindir}/Eclipse SWT Program/cde/library/"/>
-			<fileset dir="${plugindir}/Eclipse SWT Program/common/" includes="**/*.java" excludes=""/>
-			<fileset dir="${plugindir}/Eclipse SWT Program/gnome/" includes="**/*.java" excludes=""/>
-			<fileset dir="${plugindir}/Eclipse SWT Program/gnome/library/"/>
-			<fileset dir="${plugindir}/Eclipse SWT Program/gtk/" includes="**/*.java" excludes=""/>
-			<fileset dir="${plugindir}/Eclipse SWT/common_j2se/" includes="**/*.properties" excludes=""/>
-			<fileset dir="${plugindir}/Eclipse SWT/common/" includes="**/version.txt" excludes=""/>
+			<fileset dir="${basedir}/src/Eclipse SWT/cairo/" includes="**/*.java" excludes=""/>
+			<fileset dir="${basedir}/src/Eclipse SWT/common/" includes="**/*.java" excludes=""/>
+			<fileset dir="${basedir}/src/Eclipse SWT/common/library/"/>
+			<fileset dir="${basedir}/src/Eclipse SWT/common_j2se/" includes="**/*.java" excludes=""/>
+			<fileset dir="${basedir}/src/Eclipse SWT/emulated/bidi/" includes="**/*.java" excludes=""/>
+			<fileset dir="${basedir}/src/Eclipse SWT/emulated/coolbar/" includes="**/*.java" excludes=""/>
+			<fileset dir="${basedir}/src/Eclipse SWT/gtk/" includes="**/*.java" excludes=""/>
+			<fileset dir="${basedir}/src/Eclipse SWT Accessibility/common/" includes="**/*.java" excludes=""/>
+			<fileset dir="${basedir}/src/Eclipse SWT Accessibility/gtk/" includes="**/*.java" excludes=""/>
+			<fileset dir="${basedir}/src/Eclipse SWT AWT/common/" includes="**/*.java" excludes=""/>
+			<fileset dir="${basedir}/src/Eclipse SWT AWT/gtk/" includes="**/*.java" excludes=""/>
+			<fileset dir="${basedir}/src/Eclipse SWT AWT/gtk/library/"/>
+			<fileset dir="${basedir}/src/Eclipse SWT Browser/common/" includes="**/*.java" excludes=""/>
+			<fileset dir="${basedir}/src/Eclipse SWT Browser/mozilla/" includes="**/*.java" excludes=""/>
+			<fileset dir="${basedir}/src/Eclipse SWT Custom Widgets/common/" includes="**/*.java" excludes=""/>
+			<fileset dir="${basedir}/src/Eclipse SWT Drag and Drop/common/" includes="**/*.java" excludes=""/>
+			<fileset dir="${basedir}/src/Eclipse SWT Drag and Drop/gtk/" includes="**/*.java" excludes=""/>
+			<fileset dir="${basedir}/src/Eclipse SWT Mozilla/common/" includes="**/*.java" excludes=""/>
+			<fileset dir="${basedir}/src/Eclipse SWT Mozilla/common/library/"/>
+			<fileset dir="${basedir}/src/Eclipse SWT Mozilla/gtk/" includes="**/*.java" excludes=""/>
+			<fileset dir="${basedir}/src/Eclipse SWT PI/cairo/" includes="**/*.java" excludes=""/>
+			<fileset dir="${basedir}/src/Eclipse SWT PI/cairo/library/"/>
+			<fileset dir="${basedir}/src/Eclipse SWT PI/common/" includes="**/*.java" excludes=""/>
+			<fileset dir="${basedir}/src/Eclipse SWT PI/common_j2se/" includes="**/*.java" excludes=""/>
+			<fileset dir="${basedir}/src/Eclipse SWT PI/gtk/" includes="**/*.java" excludes=""/>
+			<fileset dir="${basedir}/src/Eclipse SWT PI/gtk/library/"/>
+			<fileset dir="${basedir}/src/Eclipse SWT Printing/common/" includes="**/*.java" excludes=""/>
+			<fileset dir="${basedir}/src/Eclipse SWT Printing/gtk/" includes="**/*.java" excludes=""/>
+			<fileset dir="${basedir}/src/Eclipse SWT Program/cde/" includes="**/*.java" excludes=""/>
+			<fileset dir="${basedir}/src/Eclipse SWT Program/cde/library/"/>
+			<fileset dir="${basedir}/src/Eclipse SWT Program/common/" includes="**/*.java" excludes=""/>
+			<fileset dir="${basedir}/src/Eclipse SWT Program/gtk/" includes="**/*.java" excludes=""/>
+			<fileset dir="${basedir}/src/Eclipse SWT Program/gnome/" includes="**/*.java" excludes=""/>
+			<fileset dir="${basedir}/src/Eclipse SWT Program/gnome/library/"/>
+			<fileset dir="${basedir}/src/Eclipse SWT/common_j2se/" includes="**/*.properties" excludes=""/>
+			<fileset dir="${basedir}/src/Eclipse SWT/common/" includes="**/version.txt" excludes=""/>
 			<fileset dir="${basedir}" includes="about.html,about_files/" excludes=""/>
 		</zip>
 	</target>
 
-	<target name="build.sources" depends="init">
+	<target name="build.sources" depends="build.cfiles">
 		<available property="src.zip" file="${build.result.folder}/src.zip"/>
 		<antcall target="src.zip"/>
 	</target>
 
+	<target name="build.cfiles" depends="build.jars">
+		<!--compile the jar in org.eclipse.swt.tools-->
+		<ant antfile="build.xml" dir="${toolsplugindir}" inheritAll="false" target="build.jars" />
+
+		<!-- generate the C code from the SWT PI java classes -->
+		<!-- assumes the swttools.jar has already been built  -->
+		<java classname="org.eclipse.swt.tools.internal.JNIGeneratorApp" classpath="${toolsplugindir}/bin:${toolsplugindir}/swttools.jar:${basedir}/swt.jar"><arg value="org.eclipse.swt.internal.gtk.OS"/><arg value="${basedir}/src/Eclipse SWT PI/gtk/library/"/><arg value="${build.result.folder}/swt.jar"/></java>
+		<java classname="org.eclipse.swt.tools.internal.JNIGeneratorApp" classpath="${toolsplugindir}/bin:${toolsplugindir}/swttools.jar:${basedir}/swt.jar"><arg value="org.eclipse.swt.internal.accessibility.gtk.ATK"/><arg value="${basedir}/src/Eclipse SWT PI/gtk/library/"/><arg value="${build.result.folder}/swt.jar"/></java>
+		<java classname="org.eclipse.swt.tools.internal.JNIGeneratorApp" classpath="${toolsplugindir}/bin:${toolsplugindir}/swttools.jar:${basedir}/swt.jar"><arg value="org.eclipse.swt.internal.cairo.Cairo"/><arg value="${basedir}/src/Eclipse SWT PI/cairo/library/"/><arg value="${build.result.folder}/swt.jar"/></java>
+		<java classname="org.eclipse.swt.tools.internal.JNIGeneratorApp" classpath="${toolsplugindir}/bin:${toolsplugindir}/swttools.jar:${basedir}/swt.jar"><arg value="org.eclipse.swt.internal.gnome.GNOME"/><arg value="${basedir}/src/Eclipse SWT Program/gnome/library/"/><arg value="${build.result.folder}/swt.jar"/></java>
+		<java classname="org.eclipse.swt.tools.internal.JNIGeneratorApp" classpath="${toolsplugindir}/bin:${toolsplugindir}/swttools.jar:${basedir}/swt.jar"><arg value="org.eclipse.swt.internal.cde.CDE"/><arg value="${basedir}/src/Eclipse SWT Program/cde/library/"/><arg value="${build.result.folder}/swt.jar"/></java>
+		<java classname="org.eclipse.swt.tools.internal.JNIGeneratorApp" classpath="${toolsplugindir}/bin:${toolsplugindir}/swttools.jar:${basedir}/swt.jar"><arg value="org.eclipse.swt.internal.mozilla.XPCOM"/><arg value="${basedir}/src/Eclipse SWT Mozilla/common/library/"/><arg value="${build.result.folder}/swt.jar"/></java>
+
+		<!-- copy all the files into /library folders into a temporary bin/library folder  -->
+		<!-- since this is the structure assumed by the native makefile and given that     -->
+		<!-- this script needs to work outside of the Eclipse workspace without modifying  -->
+		<!-- the content of the org.eclipse.swt project.                                   -->
+		<mkdir dir="${basedir}/src/bin/library"/>
+		<copy todir="${basedir}/src/bin/library">
+			<fileset dir="${basedir}/src/Eclipse SWT/common/library"/>
+			<fileset dir="${basedir}/src/Eclipse SWT AWT/gtk/library"/>
+			<fileset dir="${basedir}/src/Eclipse SWT Mozilla/common/library"/>
+			<fileset dir="${basedir}/src/Eclipse SWT PI/cairo/library"/>
+			<fileset dir="${basedir}/src/Eclipse SWT PI/gtk/library"/>
+			<fileset dir="${basedir}/src/Eclipse SWT Program/cde/library"/>
+			<fileset dir="${basedir}/src/Eclipse SWT Program/gnome/library"/>
+		</copy>
+	</target>
+
+	<target name="build.nativeLibraries" depends="build.cfiles" description="Build native libraries without changing the content of org.eclipse.swt">
+		<property name="sourcedir" value="${basedir}/src/bin/library" />
+	    <property name="lib_destdir" value="${sourcedir}/../../../../${fragment}" />
+		<tstamp/>
+		<exec dir="${sourcedir}" executable="sh">
+			<arg line="./build.sh"/>
+			<arg line="clean"/>
+		</exec>
+		<mkdir dir="${lib_destdir}" />
+		<exec dir="${sourcedir}" executable="sh">
+			<arg line="./build.sh"/>
+			<arg line="all"/>
+		</exec>
+		<copy todir="${lib_destdir}">
+			<fileset dir="${sourcedir}/" includes="*.so"/>
+		</copy>
+	</target>
+
 	<target name="build.zips" depends="init">
 	</target>
 
@@ -217,6 +278,8 @@
 		<delete file="${plugin.destination}/${full.name}.jar"/>
 		<delete file="${plugin.destination}/${full.name}.zip"/>
 		<delete dir="${temp.folder}"/>
+		<!-- delete swttools.jar so that it will be compiled in the build.jars target -->
+		<ant antfile="build.xml" dir="${toolsplugindir}" inheritAll="false" target="clean"/>
 	</target>
 
 	<target name="refresh" depends="init" if="eclipse.running">

eclipse-libswt-cairo1.0-4.patch:
 JNIGenerator.java                               |    1 
 org.eclipse.swt.internal.cairo.Cairo.properties |  506 +++++++++++++-----------
 2 files changed, 277 insertions(+), 230 deletions(-)

--- NEW FILE eclipse-libswt-cairo1.0-4.patch ---
--- org/eclipse/swt/tools/internal/JNIGenerator.java	2005-10-02 00:08:07.000000000 +0200
+++ org/eclipse/swt/tools/internal/JNIGenerator.java	2005-10-02 00:17:41.000000000 +0200
@@ -170,6 +170,7 @@
 	if (clazz == Float.TYPE) return "jfloat";
 	if (clazz == Double.TYPE) return "jdouble";
 	if (clazz == String.class) return "jstring";
+	if (clazz == Class.class) return "jclass";
 	if (clazz.isArray()) {
 		Class componentType = clazz.getComponentType();
 		return getTypeSignature4(componentType) + " *";
--- org/eclipse/swt/tools/internal/org.eclipse.swt.internal.cairo.Cairo.properties	2005-10-02 00:08:07.000000000 +0200
+++ org/eclipse/swt/tools/internal/org.eclipse.swt.internal.cairo.Cairo.properties	2005-10-02 00:10:45.000000000 +0200
@@ -9,9 +9,9 @@
 #     IBM Corporation - initial API and implementation
 ###############################################################################
 org_eclipse_swt_internal_cairo_Cairo=
-Cairo_cairo_add_path=flags=no_gen
-Cairo_cairo_add_path_0=
-Cairo_cairo_add_path_1=
+Cairo_cairo_append_path=
+Cairo_cairo_append_path_0=cast=(cairo_t *)
+Cairo_cairo_append_path_1=cast=(cairo_path_t *)
 
 Cairo_cairo_arc=
 Cairo_cairo_arc_0=cast=(cairo_t *)
@@ -32,88 +32,23 @@
 Cairo_cairo_clip=
 Cairo_cairo_clip_0=cast=(cairo_t *)
 
+Cairo_cairo_clip_preserve=
+Cairo_cairo_clip_preserve_0=cast=(cairo_t *)
+
 Cairo_cairo_close_path=
 Cairo_cairo_close_path_0=cast=(cairo_t *)
 
-Cairo_cairo_concat_matrix=
-Cairo_cairo_concat_matrix_0=cast=(cairo_t *)
-Cairo_cairo_concat_matrix_1=cast=(cairo_matrix_t *)
-
-Cairo_cairo_copy=
-Cairo_cairo_copy_0=cast=(cairo_t *)
-Cairo_cairo_copy_1=cast=(cairo_t *)
-
 Cairo_cairo_copy_page=
 Cairo_cairo_copy_page_0=cast=(cairo_t *)
 
-Cairo_cairo_create=
-
-Cairo_cairo_current_alpha=
-Cairo_cairo_current_alpha_0=cast=(cairo_t *)
-
-Cairo_cairo_current_fill_rule=
-Cairo_cairo_current_fill_rule_0=cast=(cairo_t *)
-
-Cairo_cairo_current_font=
-Cairo_cairo_current_font_0=cast=(cairo_t *)
+Cairo_cairo_copy_path=
+Cairo_cairo_copy_path_0=cast=(cairo_t *)
 
-Cairo_cairo_current_font_extents=
-Cairo_cairo_current_font_extents_0=cast=(cairo_t *)
-Cairo_cairo_current_font_extents_1=cast=(cairo_font_extents_t *)
-
-Cairo_cairo_current_line_cap=
-Cairo_cairo_current_line_cap_0=cast=(cairo_t *)
-
-Cairo_cairo_current_line_join=
-Cairo_cairo_current_line_join_0=cast=(cairo_t *)
-
-Cairo_cairo_current_line_width=
-Cairo_cairo_current_line_width_0=cast=(cairo_t *)
-
-Cairo_cairo_current_matrix=
-Cairo_cairo_current_matrix_0=cast=(cairo_t *)
-Cairo_cairo_current_matrix_1=cast=cairo_matrix_t *
-
-Cairo_cairo_current_miter_limit=
-Cairo_cairo_current_miter_limit_0=cast=(cairo_t *)
-
-Cairo_cairo_current_operator=
-Cairo_cairo_current_operator_0=cast=(cairo_t *)
-
-Cairo_cairo_current_path=
-Cairo_cairo_current_path_0=cast=(cairo_t *)
-Cairo_cairo_current_path_1=cast=(cairo_move_to_func_t *)
-Cairo_cairo_current_path_2=cast=(cairo_line_to_func_t *)
-Cairo_cairo_current_path_3=cast=(cairo_curve_to_func_t *)
-Cairo_cairo_current_path_4=cast=(cairo_close_path_func_t *)
-Cairo_cairo_current_path_5=cast=(void *)
-
-Cairo_cairo_current_path_flat=
-Cairo_cairo_current_path_flat_0=cast=(cairo_t *)
-Cairo_cairo_current_path_flat_1=cast=(cairo_move_to_func_t *)
-Cairo_cairo_current_path_flat_2=cast=(cairo_line_to_func_t *)
-Cairo_cairo_current_path_flat_3=cast=(cairo_close_path_func_t *)
-Cairo_cairo_current_path_flat_4=cast=(void *)
-
-Cairo_cairo_current_pattern=
-Cairo_cairo_current_pattern_0=cast=(cairo_t *)
-
-Cairo_cairo_current_point=
-Cairo_cairo_current_point_0=cast=(cairo_t *)
-Cairo_cairo_current_point_1=
-Cairo_cairo_current_point_2=
-
-Cairo_cairo_current_rgb_color=
-Cairo_cairo_current_rgb_color_0=cast=(cairo_t *)
-Cairo_cairo_current_rgb_color_1=
-Cairo_cairo_current_rgb_color_2=
-Cairo_cairo_current_rgb_color_3=
+Cairo_cairo_copy_path_flat=
+Cairo_cairo_copy_path_flat_0=cast=(cairo_t *)
 
-Cairo_cairo_current_target_surface=
-Cairo_cairo_current_target_surface_0=cast=(cairo_t *)
-
-Cairo_cairo_current_tolerance=
-Cairo_cairo_current_tolerance_0=cast=(cairo_t *)
+Cairo_cairo_create=
+Cairo_cairo_create_0=cast=cairo_surface_t *
 
 Cairo_cairo_curve_to=
 Cairo_cairo_curve_to_0=cast=(cairo_t *)
@@ -124,15 +59,18 @@
 Cairo_cairo_curve_to_5=
 Cairo_cairo_curve_to_6=
 
-Cairo_cairo_default_matrix=
-Cairo_cairo_default_matrix_0=cast=(cairo_t *)
-
 Cairo_cairo_destroy=
 Cairo_cairo_destroy_0=cast=(cairo_t *)
 
-Cairo_cairo_extents=flags=no_gen
-Cairo_cairo_extents_0=
-Cairo_cairo_extents_1=
+Cairo_cairo_device_to_user=
+Cairo_cairo_device_to_user_0=cast=(cairo_t *)
+Cairo_cairo_device_to_user_1=
+Cairo_cairo_device_to_user_2=
+
+Cairo_cairo_device_to_user_distance=
+Cairo_cairo_device_to_user_distance_0=cast=(cairo_t *)
+Cairo_cairo_device_to_user_distance_1=
+Cairo_cairo_device_to_user_distance_2=
 
 Cairo_cairo_fill=
 Cairo_cairo_fill_0=cast=(cairo_t *)
@@ -144,13 +82,76 @@
 Cairo_cairo_fill_extents_3=
 Cairo_cairo_fill_extents_4=
 
-Cairo_cairo_font_destroy=
-Cairo_cairo_font_destroy_0=cast=(cairo_font_t *)
+Cairo_cairo_fill_preserve=
+Cairo_cairo_fill_preserve_0=cast=(cairo_t *)
+
+Cairo_cairo_font_extents=
+Cairo_cairo_font_extents_0=cast=(cairo_t *)
+Cairo_cairo_font_extents_1=
 
 Cairo_cairo_font_extents_t_sizeof=
 
-Cairo_cairo_font_reference=
-Cairo_cairo_font_reference_0=cast=(cairo_font_t *)
+Cairo_cairo_font_options_create=
+
+Cairo_cairo_font_options_destroy=
+Cairo_cairo_font_options_destroy_0=cast=cairo_font_options_t *
+
+Cairo_cairo_font_options_get_antialias=
+Cairo_cairo_font_options_get_antialias_0=cast=cairo_font_options_t *
+
+Cairo_cairo_font_options_set_antialias=
+Cairo_cairo_font_options_set_antialias_0=cast=cairo_font_options_t *
+Cairo_cairo_font_options_set_antialias_1=
+
+Cairo_cairo_get_antialias=
+Cairo_cairo_get_antialias_0=cast=(cairo_t *)
+
+Cairo_cairo_get_current_point=
+Cairo_cairo_get_current_point_0=cast=(cairo_t *)
+Cairo_cairo_get_current_point_1=
+Cairo_cairo_get_current_point_2=
+
+Cairo_cairo_get_fill_rule=
+Cairo_cairo_get_fill_rule_0=cast=(cairo_t *)
+
+Cairo_cairo_get_font_face=
+Cairo_cairo_get_font_face_0=cast=(cairo_t *)
+
+Cairo_cairo_get_font_matrix=
+Cairo_cairo_get_font_matrix_0=cast=(cairo_t *)
+Cairo_cairo_get_font_matrix_1=cast=cairo_matrix_t *
+
+Cairo_cairo_get_font_options=
+Cairo_cairo_get_font_options_0=cast=cairo_t *
+Cairo_cairo_get_font_options_1=cast=cairo_font_options_t *
+
+Cairo_cairo_get_line_cap=
+Cairo_cairo_get_line_cap_0=cast=(cairo_t *)
+
+Cairo_cairo_get_line_join=
+Cairo_cairo_get_line_join_0=cast=(cairo_t *)
+
+Cairo_cairo_get_line_width=
+Cairo_cairo_get_line_width_0=cast=(cairo_t *)
+
+Cairo_cairo_get_matrix=
+Cairo_cairo_get_matrix_0=cast=(cairo_t *)
+Cairo_cairo_get_matrix_1=cast=(cairo_matrix_t *)
+
+Cairo_cairo_get_miter_limit=
+Cairo_cairo_get_miter_limit_0=cast=(cairo_t *)
+
+Cairo_cairo_get_operator=
+Cairo_cairo_get_operator_0=cast=(cairo_t *)
+
+Cairo_cairo_get_source=
+Cairo_cairo_get_source_0=cast=(cairo_t *)
+
+Cairo_cairo_get_target=
+Cairo_cairo_get_target_0=cast=(cairo_t *)
+
+Cairo_cairo_get_tolerance=
+Cairo_cairo_get_tolerance_0=cast=(cairo_t *)
 
 Cairo_cairo_glyph_extents=
 Cairo_cairo_glyph_extents_0=cast=(cairo_t *)
@@ -178,6 +179,12 @@
 Cairo_cairo_image_surface_create_for_data_3=
 Cairo_cairo_image_surface_create_for_data_4=
 
+Cairo_cairo_image_surface_get_height=
+Cairo_cairo_image_surface_get_height_0=cast=(cairo_surface_t *)
+
+Cairo_cairo_image_surface_get_width=
+Cairo_cairo_image_surface_get_width_0=cast=(cairo_surface_t *)
+
 Cairo_cairo_in_fill=
 Cairo_cairo_in_fill_0=cast=(cairo_t *)
 Cairo_cairo_in_fill_1=
@@ -188,41 +195,46 @@
 Cairo_cairo_in_stroke_1=
 Cairo_cairo_in_stroke_2=
 
-Cairo_cairo_init_clip=
-Cairo_cairo_init_clip_0=cast=(cairo_t *)
-
-Cairo_cairo_inverse_transform_distance=
-Cairo_cairo_inverse_transform_distance_0=cast=(cairo_t *)
-Cairo_cairo_inverse_transform_distance_1=
-Cairo_cairo_inverse_transform_distance_2=
-
-Cairo_cairo_inverse_transform_point=
-Cairo_cairo_inverse_transform_point_0=cast=(cairo_t *)
-Cairo_cairo_inverse_transform_point_1=
-Cairo_cairo_inverse_transform_point_2=
-
 Cairo_cairo_line_to=
 Cairo_cairo_line_to_0=cast=(cairo_t *)
 Cairo_cairo_line_to_1=
 Cairo_cairo_line_to_2=
 
-Cairo_cairo_matrix_copy=
-Cairo_cairo_matrix_copy_0=cast=(cairo_matrix_t *)
-Cairo_cairo_matrix_copy_1=cast=(cairo_matrix_t *)
-
-Cairo_cairo_matrix_create=
-
-Cairo_cairo_matrix_destroy=
-Cairo_cairo_matrix_destroy_0=cast=(cairo_matrix_t *)
-
-Cairo_cairo_matrix_get_affine=
-Cairo_cairo_matrix_get_affine_0=cast=(cairo_matrix_t *)
-Cairo_cairo_matrix_get_affine_1=
-Cairo_cairo_matrix_get_affine_2=
-Cairo_cairo_matrix_get_affine_3=
-Cairo_cairo_matrix_get_affine_4=
-Cairo_cairo_matrix_get_affine_5=
-Cairo_cairo_matrix_get_affine_6=
+Cairo_cairo_mask=
+Cairo_cairo_mask_0=cast=cairo_t *
+Cairo_cairo_mask_1=cast=cairo_pattern_t *
+
+Cairo_cairo_mask_surface=
+Cairo_cairo_mask_surface_0=cast=cairo_t *
+Cairo_cairo_mask_surface_1=cast=cairo_surface_t *
+Cairo_cairo_mask_surface_2=
+Cairo_cairo_mask_surface_3=
+
+Cairo_cairo_matrix_init=
+Cairo_cairo_matrix_init_0=cast=(cairo_matrix_t *)
+Cairo_cairo_matrix_init_1=
+Cairo_cairo_matrix_init_2=
+Cairo_cairo_matrix_init_3=
+Cairo_cairo_matrix_init_4=
+Cairo_cairo_matrix_init_5=
+Cairo_cairo_matrix_init_6=
+
+Cairo_cairo_matrix_init_identity=
+Cairo_cairo_matrix_init_identity_0=cast=(cairo_matrix_t *)
+
+Cairo_cairo_matrix_init_rotate=
+Cairo_cairo_matrix_init_rotate_0=cast=(cairo_matrix_t *)
+Cairo_cairo_matrix_init_rotate_1=
+
+Cairo_cairo_matrix_init_scale=
+Cairo_cairo_matrix_init_scale_0=cast=(cairo_matrix_t *)
+Cairo_cairo_matrix_init_scale_1=
+Cairo_cairo_matrix_init_scale_2=
+
+Cairo_cairo_matrix_init_translate=
+Cairo_cairo_matrix_init_translate_0=cast=(cairo_matrix_t *)
+Cairo_cairo_matrix_init_translate_1=
+Cairo_cairo_matrix_init_translate_2=
 
 Cairo_cairo_matrix_invert=
 Cairo_cairo_matrix_invert_0=cast=(cairo_matrix_t *)
@@ -241,18 +253,6 @@
 Cairo_cairo_matrix_scale_1=
 Cairo_cairo_matrix_scale_2=
 
-Cairo_cairo_matrix_set_affine=
-Cairo_cairo_matrix_set_affine_0=cast=(cairo_matrix_t *)
-Cairo_cairo_matrix_set_affine_1=
-Cairo_cairo_matrix_set_affine_2=
-Cairo_cairo_matrix_set_affine_3=
-Cairo_cairo_matrix_set_affine_4=
-Cairo_cairo_matrix_set_affine_5=
-Cairo_cairo_matrix_set_affine_6=
-
-Cairo_cairo_matrix_set_identity=
-Cairo_cairo_matrix_set_identity_0=cast=(cairo_matrix_t *)
-
 Cairo_cairo_matrix_transform_distance=
 Cairo_cairo_matrix_transform_distance_0=cast=(cairo_matrix_t *)
 Cairo_cairo_matrix_transform_distance_1=
@@ -276,13 +276,34 @@
 Cairo_cairo_new_path=
 Cairo_cairo_new_path_0=cast=(cairo_t *)
 
-Cairo_cairo_pattern_add_color_stop=
-Cairo_cairo_pattern_add_color_stop_0=cast=(cairo_pattern_t *)
-Cairo_cairo_pattern_add_color_stop_1=
-Cairo_cairo_pattern_add_color_stop_2=
-Cairo_cairo_pattern_add_color_stop_3=
-Cairo_cairo_pattern_add_color_stop_4=
-Cairo_cairo_pattern_add_color_stop_5=
+Cairo_cairo_paint=
+Cairo_cairo_paint_0=cast=(cairo_t *)
+
+Cairo_cairo_paint_with_alpha=
+Cairo_cairo_paint_with_alpha_0=cast=(cairo_t *)
+Cairo_cairo_paint_with_alpha_1=
+
+Cairo_cairo_path_data_t_sizeof=
+
+Cairo_cairo_path_destroy=
+Cairo_cairo_path_destroy_0=cast=cairo_path_t *
+
+Cairo_cairo_path_t_sizeof=
+
+Cairo_cairo_pattern_add_color_stop_rgb=
+Cairo_cairo_pattern_add_color_stop_rgb_0=cast=(cairo_pattern_t *)
+Cairo_cairo_pattern_add_color_stop_rgb_1=
+Cairo_cairo_pattern_add_color_stop_rgb_2=
+Cairo_cairo_pattern_add_color_stop_rgb_3=
+Cairo_cairo_pattern_add_color_stop_rgb_4=
+
+Cairo_cairo_pattern_add_color_stop_rgba=
+Cairo_cairo_pattern_add_color_stop_rgba_0=cast=(cairo_pattern_t *)
+Cairo_cairo_pattern_add_color_stop_rgba_1=
+Cairo_cairo_pattern_add_color_stop_rgba_2=
+Cairo_cairo_pattern_add_color_stop_rgba_3=
+Cairo_cairo_pattern_add_color_stop_rgba_4=
+Cairo_cairo_pattern_add_color_stop_rgba_5=
 
 Cairo_cairo_pattern_create_for_surface=
 Cairo_cairo_pattern_create_for_surface_0=cast=(cairo_surface_t *)
@@ -329,13 +350,6 @@
 Cairo_cairo_pattern_set_matrix_0=cast=(cairo_pattern_t *)
 Cairo_cairo_pattern_set_matrix_1=cast=(cairo_matrix_t *)
 
-Cairo_cairo_points=flags=no_gen
-Cairo_cairo_points_0=
-Cairo_cairo_points_1=
-Cairo_cairo_points_2=
-Cairo_cairo_points_3=
-Cairo_cairo_points_4=
-
 Cairo_cairo_rectangle=
 Cairo_cairo_rectangle_0=cast=(cairo_t *)
 Cairo_cairo_rectangle_1=
@@ -365,6 +379,9 @@
 Cairo_cairo_rel_move_to_1=
 Cairo_cairo_rel_move_to_2=
 
+Cairo_cairo_reset_clip=
+Cairo_cairo_reset_clip_0=cast=(cairo_t *)
+
 Cairo_cairo_restore=
 Cairo_cairo_restore_0=cast=(cairo_t *)
 
@@ -380,19 +397,15 @@
 Cairo_cairo_scale_1=
 Cairo_cairo_scale_2=
 
-Cairo_cairo_scale_font=
-Cairo_cairo_scale_font_0=cast=(cairo_t *)
-Cairo_cairo_scale_font_1=
-
-Cairo_cairo_select_font=
-Cairo_cairo_select_font_0=cast=(cairo_t *)
-Cairo_cairo_select_font_1=
-Cairo_cairo_select_font_2=
-Cairo_cairo_select_font_3=
-
-Cairo_cairo_set_alpha=
-Cairo_cairo_set_alpha_0=cast=(cairo_t *)
-Cairo_cairo_set_alpha_1=
+Cairo_cairo_select_font_face=
+Cairo_cairo_select_font_face_0=cast=(cairo_t *)
+Cairo_cairo_select_font_face_1=
+Cairo_cairo_select_font_face_2=
+Cairo_cairo_select_font_face_3=
+
+Cairo_cairo_set_antialias=
+Cairo_cairo_set_antialias_0=cast=(cairo_t *)
+Cairo_cairo_set_antialias_1=
 
 Cairo_cairo_set_dash=
 Cairo_cairo_set_dash_0=cast=(cairo_t *)
@@ -404,9 +417,21 @@
 Cairo_cairo_set_fill_rule_0=cast=(cairo_t *)
 Cairo_cairo_set_fill_rule_1=
 
-Cairo_cairo_set_font=
-Cairo_cairo_set_font_0=cast=(cairo_t *)
-Cairo_cairo_set_font_1=cast=cairo_font_t *
+Cairo_cairo_set_font_face=
+Cairo_cairo_set_font_face_0=cast=(cairo_t *)
+Cairo_cairo_set_font_face_1=cast=cairo_font_face_t *
+
+Cairo_cairo_set_font_matrix=
+Cairo_cairo_set_font_matrix_0=cast=(cairo_t *)
+Cairo_cairo_set_font_matrix_1=cast=cairo_matrix_t *
+
+Cairo_cairo_set_font_options=
+Cairo_cairo_set_font_options_0=cast=cairo_t *
+Cairo_cairo_set_font_options_1=cast=cairo_font_options_t *
+
+Cairo_cairo_set_font_size=
+Cairo_cairo_set_font_size_0=cast=(cairo_t *)
+Cairo_cairo_set_font_size_1=
 
 Cairo_cairo_set_line_cap=
 Cairo_cairo_set_line_cap_0=cast=(cairo_t *)
@@ -432,32 +457,28 @@
 Cairo_cairo_set_operator_0=cast=(cairo_t *)
 Cairo_cairo_set_operator_1=
 
-Cairo_cairo_set_pattern=
-Cairo_cairo_set_pattern_0=cast=(cairo_t *)
-Cairo_cairo_set_pattern_1=cast=(cairo_pattern_t *)
-
-Cairo_cairo_set_rgb_color=
-Cairo_cairo_set_rgb_color_0=cast=(cairo_t *)
-Cairo_cairo_set_rgb_color_1=
-Cairo_cairo_set_rgb_color_2=
-Cairo_cairo_set_rgb_color_3=
-
-Cairo_cairo_set_target_drawable=
-Cairo_cairo_set_target_drawable_0=cast=(cairo_t *)
-Cairo_cairo_set_target_drawable_1=cast=Display *
-Cairo_cairo_set_target_drawable_2=cast=Drawable
-
-Cairo_cairo_set_target_image=
-Cairo_cairo_set_target_image_0=cast=(cairo_t *)
-Cairo_cairo_set_target_image_1=cast=char *
-Cairo_cairo_set_target_image_2=
-Cairo_cairo_set_target_image_3=
-Cairo_cairo_set_target_image_4=
-Cairo_cairo_set_target_image_5=
-
-Cairo_cairo_set_target_surface=
-Cairo_cairo_set_target_surface_0=cast=(cairo_t *)
-Cairo_cairo_set_target_surface_1=cast=(cairo_surface_t *)
+Cairo_cairo_set_source=
+Cairo_cairo_set_source_0=cast=cairo_t *
+Cairo_cairo_set_source_1=cast=cairo_pattern_t *
+
+Cairo_cairo_set_source_rgb=
+Cairo_cairo_set_source_rgb_0=cast=cairo_t *
+Cairo_cairo_set_source_rgb_1=
+Cairo_cairo_set_source_rgb_2=
+Cairo_cairo_set_source_rgb_3=
+
+Cairo_cairo_set_source_rgba=
+Cairo_cairo_set_source_rgba_0=cast=cairo_t *
+Cairo_cairo_set_source_rgba_1=
+Cairo_cairo_set_source_rgba_2=
+Cairo_cairo_set_source_rgba_3=
+Cairo_cairo_set_source_rgba_4=
+
+Cairo_cairo_set_source_surface=
+Cairo_cairo_set_source_surface_0=cast=cairo_t *
+Cairo_cairo_set_source_surface_1=cast=cairo_surface_t *
+Cairo_cairo_set_source_surface_2=
+Cairo_cairo_set_source_surface_3=
 
 Cairo_cairo_set_tolerance=
 Cairo_cairo_set_tolerance_0=cast=(cairo_t *)
@@ -471,12 +492,6 @@
 Cairo_cairo_show_page=
 Cairo_cairo_show_page_0=cast=(cairo_t *)
 
-Cairo_cairo_show_surface=
-Cairo_cairo_show_surface_0=cast=(cairo_t *)
-Cairo_cairo_show_surface_1=cast=(cairo_surface_t *)
-Cairo_cairo_show_surface_2=
-Cairo_cairo_show_surface_3=
-
 Cairo_cairo_show_text=
 Cairo_cairo_show_text_0=cast=(cairo_t *)
 Cairo_cairo_show_text_1=
@@ -484,8 +499,8 @@
 Cairo_cairo_status=
 Cairo_cairo_status_0=cast=(cairo_t *)
 
-Cairo_cairo_status_string=
-Cairo_cairo_status_string_0=cast=(cairo_t *)
+Cairo_cairo_status_to_string=
+Cairo_cairo_status_to_string_0=
 
 Cairo_cairo_stroke=
 Cairo_cairo_stroke_0=cast=(cairo_t *)
@@ -497,12 +512,8 @@
 Cairo_cairo_stroke_extents_3=
 Cairo_cairo_stroke_extents_4=
 
-Cairo_cairo_surface_create_for_image=
-Cairo_cairo_surface_create_for_image_0=cast=char *
-Cairo_cairo_surface_create_for_image_1=
-Cairo_cairo_surface_create_for_image_2=
-Cairo_cairo_surface_create_for_image_3=
-Cairo_cairo_surface_create_for_image_4=
+Cairo_cairo_stroke_preserve=
+Cairo_cairo_stroke_preserve_0=cast=(cairo_t *)
 
 Cairo_cairo_surface_create_similar=
 Cairo_cairo_surface_create_similar_0=cast=(cairo_surface_t *)
@@ -513,27 +524,26 @@
 Cairo_cairo_surface_destroy=
 Cairo_cairo_surface_destroy_0=cast=(cairo_surface_t *)
 
-Cairo_cairo_surface_get_filter=
-Cairo_cairo_surface_get_filter_0=cast=(cairo_surface_t *)
+Cairo_cairo_surface_finish=
+Cairo_cairo_surface_finish_0=cast=(cairo_surface_t *)
 
-Cairo_cairo_surface_get_matrix=
-Cairo_cairo_surface_get_matrix_0=cast=(cairo_surface_t *)
-Cairo_cairo_surface_get_matrix_1=cast=(cairo_matrix_t *)
+Cairo_cairo_surface_get_user_data=
+Cairo_cairo_surface_get_user_data_0=cast=(cairo_surface_t *)
+Cairo_cairo_surface_get_user_data_1=cast=cairo_user_data_key_t *
 
 Cairo_cairo_surface_reference=
 Cairo_cairo_surface_reference_0=cast=(cairo_surface_t *)
 
-Cairo_cairo_surface_set_filter=
-Cairo_cairo_surface_set_filter_0=cast=(cairo_surface_t *)
-Cairo_cairo_surface_set_filter_1=
-
-Cairo_cairo_surface_set_matrix=
-Cairo_cairo_surface_set_matrix_0=cast=(cairo_surface_t *)
-Cairo_cairo_surface_set_matrix_1=cast=(cairo_matrix_t *)
-
-Cairo_cairo_surface_set_repeat=
-Cairo_cairo_surface_set_repeat_0=cast=(cairo_surface_t *)
-Cairo_cairo_surface_set_repeat_1=
+Cairo_cairo_surface_set_device_offset=
+Cairo_cairo_surface_set_device_offset_0=cast=(cairo_surface_t *)
+Cairo_cairo_surface_set_device_offset_1=
+Cairo_cairo_surface_set_device_offset_2=
+
+Cairo_cairo_surface_set_user_data=
+Cairo_cairo_surface_set_user_data_0=cast=(cairo_surface_t *)
+Cairo_cairo_surface_set_user_data_1=cast=cairo_user_data_key_t *
+Cairo_cairo_surface_set_user_data_2=cast=void *
+Cairo_cairo_surface_set_user_data_3=cast=cairo_destroy_func_t
 
 Cairo_cairo_text_extents=
 Cairo_cairo_text_extents_0=cast=(cairo_t *)
@@ -544,31 +554,58 @@
 Cairo_cairo_text_path_0=cast=(cairo_t *)
 Cairo_cairo_text_path_1=
 
-Cairo_cairo_transform_distance=
-Cairo_cairo_transform_distance_0=cast=(cairo_t *)
-Cairo_cairo_transform_distance_1=
-Cairo_cairo_transform_distance_2=
-
-Cairo_cairo_transform_font=
-Cairo_cairo_transform_font_0=cast=(cairo_t *)
-Cairo_cairo_transform_font_1=cast=(cairo_matrix_t *)
-
-Cairo_cairo_transform_point=
-Cairo_cairo_transform_point_0=cast=(cairo_t *)
-Cairo_cairo_transform_point_1=
-Cairo_cairo_transform_point_2=
+Cairo_cairo_transform=
+Cairo_cairo_transform_0=cast=(cairo_t *)
+Cairo_cairo_transform_1=cast=(cairo_matrix_t *)
 
 Cairo_cairo_translate=
 Cairo_cairo_translate_0=cast=(cairo_t *)
 Cairo_cairo_translate_1=
 Cairo_cairo_translate_2=
 
+Cairo_cairo_user_to_device=
+Cairo_cairo_user_to_device_0=cast=(cairo_t *)
+Cairo_cairo_user_to_device_1=
+Cairo_cairo_user_to_device_2=
+
+Cairo_cairo_user_to_device_distance=
+Cairo_cairo_user_to_device_distance_0=cast=(cairo_t *)
+Cairo_cairo_user_to_device_distance_1=
+Cairo_cairo_user_to_device_distance_2=
+
 Cairo_cairo_xlib_surface_create=
-Cairo_cairo_xlib_surface_create_0=cast=Display *
+Cairo_cairo_xlib_surface_create_0=cast=(Display *)
 Cairo_cairo_xlib_surface_create_1=cast=(Drawable)
 Cairo_cairo_xlib_surface_create_2=cast=(Visual *)
 Cairo_cairo_xlib_surface_create_3=
-Cairo_cairo_xlib_surface_create_4=cast=Colormap
+Cairo_cairo_xlib_surface_create_4=
+
+Cairo_cairo_xlib_surface_create_for_bitmap=
+Cairo_cairo_xlib_surface_create_for_bitmap_0=cast=(Display *)
+Cairo_cairo_xlib_surface_create_for_bitmap_1=cast=Pixmap
+Cairo_cairo_xlib_surface_create_for_bitmap_2=cast=(Screen *
+Cairo_cairo_xlib_surface_create_for_bitmap_3=
+Cairo_cairo_xlib_surface_create_for_bitmap_4=
+
+Cairo_cairo_xlib_surface_set_size=
+Cairo_cairo_xlib_surface_set_size_0=cast=cairo_surface_t *
+Cairo_cairo_xlib_surface_set_size_1=
+Cairo_cairo_xlib_surface_set_size_2=
+
+Cairo_memmove__Lorg_eclipse_swt_internal_cairo_cairo_1path_1data_1t_2II=
+Cairo_memmove__Lorg_eclipse_swt_internal_cairo_cairo_1path_1data_1t_2II_0=cast=void *
+Cairo_memmove__Lorg_eclipse_swt_internal_cairo_cairo_1path_1data_1t_2II_1=cast=const void *
+Cairo_memmove__Lorg_eclipse_swt_internal_cairo_cairo_1path_1data_1t_2II_2=cast=size_t
+
+Cairo_memmove__Lorg_eclipse_swt_internal_cairo_cairo_1path_1t_2II=
+Cairo_memmove__Lorg_eclipse_swt_internal_cairo_cairo_1path_1t_2II_0=cast=(void *)
+Cairo_memmove__Lorg_eclipse_swt_internal_cairo_cairo_1path_1t_2II_1=cast=(const void *)
+Cairo_memmove__Lorg_eclipse_swt_internal_cairo_cairo_1path_1t_2II_2=cast=(size_t)
+
+Cairo_memmove___3DII=
+Cairo_memmove___3DII_0=cast=(void *)
+Cairo_memmove___3DII_1=cast=(const void *)
+Cairo_memmove___3DII_2=cast=(size_t)
 
 
 org_eclipse_swt_internal_cairo_cairo_1font_1extents_1t=
@@ -578,3 +615,12 @@
 cairo_font_extents_t_max_x_advance=
 cairo_font_extents_t_max_y_advance=
 
+org_eclipse_swt_internal_cairo_cairo_1path_1data_1t=
+cairo_path_data_t_type=accessor=header.type
+cairo_path_data_t_length=accessor=header.length
+
+org_eclipse_swt_internal_cairo_cairo_1path_1t=
+cairo_path_t_status=
+cairo_path_t_data=cast=cairo_path_data_t *
+cairo_path_t_num_data=
+

eclipse-libswt-enableallandO2.patch:
 make_linux.mak |    6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)

--- NEW FILE eclipse-libswt-enableallandO2.patch ---
--- make_linux.mak.orig	2005-09-29 08:52:49.000000000 -0400
+++ make_linux.mak	2005-11-03 11:47:31.000000000 -0500
@@ -50,7 +50,7 @@
 # Uncomment for Native Stats tool
 #NATIVE_STATS = -DNATIVE_STATS
 
-MOZILLACFLAGS = -O \
+MOZILLACFLAGS = -O2 \
 	-DXPCOM_GLUE=1 \
 	-DMOZILLA_STRICT_API=1 \
 	-fno-rtti \
@@ -75,7 +75,7 @@
 GNOME_OBJECTS = swt.o gnome.o gnome_structs.o gnome_stats.o
 MOZILLA_OBJECTS = swt.o xpcom.o xpcom_custom.o xpcom_structs.o xpcom_stats.o
  
-CFLAGS = -O -Wall \
+CFLAGS = -O2 -Wall \
 		-DSWT_VERSION=$(SWT_VERSION) \
 		$(NATIVE_STATS) \
 		-DLINUX -DGTK \
@@ -86,7 +86,7 @@
 LIBS = -shared -fpic -s
 
 
-all: make_swt make_atk make_gnome make_awt
+all: make_swt make_atk make_gnome make_awt make_cairo make_mozilla
 
 #
 # SWT libs

eclipse-webapp-jasperclasspath.patch:
 build.xml |    2 +-
 1 files changed, 1 insertion(+), 1 deletion(-)

--- NEW FILE eclipse-webapp-jasperclasspath.patch ---
--- build.xml.orig	2005-09-29 08:51:40.000000000 -0400
+++ build.xml		2005-11-04 22:28:54.000000000 -0500
@@ -154,7 +154,7 @@
 		<!-- generate java code from JSPs -->
 		<path id="jasper.classpath" > 
 			<pathelement location="../org.apache.ant/lib/ant.jar"/>
-			<pathelement location="../org.apache.ant/lib/optional.jar"/>
+			<pathelement location="../org.apache.ant/lib/ant-launcher.jar"/>
 			<pathelement location="../org.eclipse.tomcat/jasper-compiler.jar" />
 			<pathelement location="../org.eclipse.tomcat/jasper-runtime.jar" />
 			<pathelement location="../org.eclipse.tomcat/servlet.jar" />


Index: eclipse.spec
===================================================================
RCS file: /cvs/dist/rpms/eclipse/devel/eclipse.spec,v
retrieving revision 1.197
retrieving revision 1.198
diff -u -r1.197 -r1.198
--- eclipse.spec	1 Nov 2005 18:36:55 -0000	1.197
+++ eclipse.spec	6 Nov 2005 15:32:26 -0000	1.198
@@ -23,7 +23,7 @@
 Summary:        %{pkg_summary}
 Name:           eclipse
 Version:        %{eclipse_majmin}.%{eclipse_micro}
-Release:        1jpp_4fc
+Release:        1jpp_6fc
 License:        EPL
 Group:          Text Editors/Integrated Development Environments (IDE)
 URL:            http://www.eclipse.org/
@@ -43,11 +43,10 @@
 Source18:       ecj-M5.zip
 Source19:       %{name}-filenamepatterns.txt
 Source20:	ecj.sh.in
-Source21:	buildDocPlugins.sh
 
-# Build libswt-mozilla
+# Build libswt-mozilla and libswt-cairo and use O2
 # https://bugs.eclipse.org/bugs/show_bug.cgi?id=71637
-Patch0:         %{name}-make-linux.patch
+Patch0:         %{name}-libswt-enableallandO2.patch
 # Build JNI libs
 # FIXME:  these should be built by upstream build method
 # http://www.bagu.org/eclipse/plugin-source-drops.html
@@ -55,7 +54,6 @@
 # https://bugs.eclipse.org/bugs/show_bug.cgi?id=86848
 # GNU XML issue identified by Michael Koch
 Patch2:		%{name}-build.patch
-Patch3:		%{name}-dontgeneratehelpindices.patch
 Patch4:		%{name}-libupdatebuild.patch
 Patch5:		%{name}-libupdatebuild2.patch
 # Use installed mozilla libs and headers
@@ -90,24 +88,28 @@
 Patch29: 	%{name}-tomcat5-build.patch
 Patch30: 	%{name}-tomcat5-build.2.patch
 Patch31: 	%{name}-webapp-tomcat5.patch
-# We don't have cairo in FC4
-Patch32:	%{name}-swt-nocairo.fc4.patch
 # https://bugs.eclipse.org/bugs/show_bug.cgi?id=98707 
 Patch33:        %{name}-compare-create-api.patch
 # https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=162177
 Patch34:	%{name}-bz162177.patch
-Patch35:	%{name}-javadoc.patch
+Patch35:	%{name}-genjavadocoutput.patch
 # https://bugs.eclipse.org/bugs/show_bug.cgi?id=105430
 Patch36:	%{name}-ecj-classpath.patch
 # https://bugs.eclipse.org/bugs/show_bug.cgi?id=109253
 # http://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=168040
 Patch37:	%{name}-gre64.conf.patch
-# gij fails with the antRunner tasks for building the doc plugins
-# so we use a shell script to call ant directly for each doc plug-in
-Patch38:	%{name}-buildDocPlugins.patch
+# https://bugs.eclipse.org/bugs/show_bug.cgi?id=114001
+Patch38:	%{name}-helpindexbuilder.patch
 # https://bugs.eclipse.org/bugs/show_bug.cgi?id=111299
 Patch39:	%{name}-e.o111299.patch
 Patch40:	%{name}-usebuiltlauncher.patch
+# Build cairo libs
+# Again, I hate patches with spaces in the filenames
+Patch41:	%{name}-libswt-cairo1.0-1.patch
+Patch42:	%{name}-libswt-cairo1.0-2.patch
+Patch43:	%{name}-libswt-cairo1.0-3.patch
+Patch44:	%{name}-libswt-cairo1.0-4.patch
+Patch45:	%{name}-webapp-jasperclasspath.patch
 
 %if %{gcj_support}
 ExcludeArch: s390 s390x ppc64 ia64
@@ -128,6 +130,7 @@
 BuildRequires:  mozilla-devel = 37:1.7.12
 BuildRequires:  nspr-devel
 BuildRequires:  libXtst-devel
+BuildRequires:  cairo >= 1.0
 %if %{gcj_support}
 BuildRequires:	gcc-java >= 4.0.2
 BuildRequires:	java-gcj-compat-devel >= 1.0.43
@@ -314,7 +317,6 @@
 %endif
 popd
 %patch2 -p0
-%patch3 -p0
 %patch4 -p0
 %patch5 -p0
 %if %{gcj_support}
@@ -357,7 +359,6 @@
 pushd plugins/org.eclipse.swt.motif.linux.x86
 rm libcairo.so.1
 popd
-%patch32 -p0
 pushd plugins/org.eclipse.compare
 %patch33 -p0
 popd
@@ -369,7 +370,20 @@
 %patch39 -p0
 popd
 %patch40 -p0
-cp %{SOURCE21} .
+# Again, I hate spaces in patches
+pushd plugins/org.eclipse.swt/Eclipse\ SWT/
+%patch41 -p0
+popd
+pushd plugins/org.eclipse.swt/Eclipse\ SWT\ PI/
+%patch42 -p0
+popd
+%patch43
+pushd plugins/org.eclipse.swt.tools/JNI\ Generation/
+%patch44
+popd
+pushd plugins/org.eclipse.help.webapp
+%patch45
+popd
 
 # Because the launcher source is zipped up, we need to unzip, patch, and re-pack
 mkdir launchertmp
@@ -421,8 +435,7 @@
 ln -sf %{_javadir}/ant/ant-apache-resolver.jar plugins/org.apache.ant/lib/ant-apache-resolver.jar
 ln -sf %{_javadir}/ant/ant-commons-logging.jar plugins/org.apache.ant/lib/ant-commons-logging.jar
 #ln -sf %{_javadir}/ant/ant-commons-net.jar plugins/org.apache.ant/lib/ant-commons-net.jar
-# FIXME:  Don't symlink this until we have ant 1.6.5 (rh#162444)
-#ln -sf %{_javadir}/ant.jar plugins/org.apache.ant/lib/ant.jar
+ln -sf %{_javadir}/ant.jar plugins/org.apache.ant/lib/ant.jar
 ln -sf %{_javadir}/ant/ant-javamail.jar plugins/org.apache.ant/lib/ant-javamail.jar
 ln -sf %{_javadir}/ant/ant-jdepend.jar plugins/org.apache.ant/lib/ant-jdepend.jar
 ln -sf %{_javadir}/ant/ant-jsch.jar plugins/org.apache.ant/lib/ant-jsch.jar
@@ -699,7 +712,7 @@
 
 ### begin libswt-gtk2 symlinks
 pushd $RPM_BUILD_ROOT%{_libdir}
-for base in awt-gtk atk-gtk mozilla-gtk gnome-gtk gtk pi-gtk; do
+for base in awt-gtk atk-gtk cairo-gtk mozilla-gtk gnome-gtk gtk pi-gtk; do
   ln -sf %{_libdir}/%{name}/libswt-${base}-%{swt_version}.so \
          libswt-${base}-%{swt_version}.so
 done
@@ -763,6 +776,14 @@
 version=%{eclipse_majmin}.%{eclipse_micro}
 EOF
 
+# Put Fedora Core version into about.mappings of org.eclipse.sdk to show it in
+# Eclipse about dialog.  (courtesy Debian Eclipse packagers)
+pushd $RPM_BUILD_ROOT%{_datadir}/%{name}/plugins/org.eclipse.sdk_%{eclipse_majmin}.%{eclipse_micro}
+FEDORA_VERSION=`cat /etc/fedora-release`
+sed -e "s/\(0=.*\)/\1 ($FEDORA_VERSION)/" < about.mappings > about.mappings.tmp
+mv about.mappings.tmp about.mappings
+popd
+
 # Create a script that can be used to make a symlink tree of the
 # eclipse platform.
 cp %{SOURCE16} copy-platform
@@ -787,8 +808,7 @@
 ln -sf %{_javadir}/ant/ant-apache-resolver.jar plugins/org.apache.ant_*/lib/ant-apache-resolver.jar
 ln -sf %{_javadir}/ant/ant-commons-logging.jar plugins/org.apache.ant_*/lib/ant-commons-logging.jar
 #ln -sf %{_javadir}/ant/ant-commons-net.jar plugins/org.apache.ant_*/lib/ant-commons-net.jar
-# FIXME:  Don't symlink this until we have ant 1.6.5 (rh#162444)
-#ln -sf %{_javadir}/ant.jar plugins/org.apache.ant_*/lib/ant.jar
+ln -sf %{_javadir}/ant.jar plugins/org.apache.ant_*/lib/ant.jar
 ln -sf %{_javadir}/ant/ant-javamail.jar plugins/org.apache.ant_*/lib
 ln -sf %{_javadir}/ant/ant-jdepend.jar plugins/org.apache.ant_*/lib/ant-jdepend.jar
 ln -sf %{_javadir}/ant/ant-jsch.jar plugins/org.apache.ant_*/lib/ant-jsch.jar
@@ -1168,9 +1188,6 @@
 %{_libdir}/gcj/%{name}/org.eclipse.search_3.1.1.jar.db
 %{_libdir}/gcj/%{name}/org.eclipse.text_3.1.1.jar.so
 %{_libdir}/gcj/%{name}/org.eclipse.text_3.1.1.jar.db
-# These will go away when we get a newer system ant
-%{_libdir}/gcj/%{name}/ant.jar.db
-%{_libdir}/gcj/%{name}/ant.jar.so
 %endif
 
 %files platform-devel
@@ -1179,6 +1196,16 @@
 %{_datadir}/%{name}/plugins/org.eclipse.platform.source.linux.gtk.*_3.1.1
 
 %changelog
+* Fri Nov 04 2005 Andrew Overholt <overholt at redhat.com> 3.1.1-1jpp_6fc
+- Patch org.eclipse.help.webapp jasper classpath.
+
+* Thu Nov 03 2005 Andrew Overholt <overholt at redhat.com> 3.1.1-1jpp_5fc
+- Import work done by Debian Eclipse packagers:
+  - Add Fedora version in Eclipse about dialog.
+  - Update eclipse-javadoc.patch to match Debian's disable-filelog patch.
+  - Remove buildDoc patches and add helpindexbuilder patch (e.o#114001).
+  - Add patches to build Cairo SWT bindings.
+
 * Tue Nov 01 2005 Andrew Overholt <overholt at redhat.com> 3.1.1-1jpp_4fc
 - Temporarily exclude ia64 and ppc64 (rh#172174).
 


--- eclipse-dontgeneratehelpindices.patch DELETED ---


--- eclipse-javadoc.patch DELETED ---


--- eclipse-make-linux.patch DELETED ---


--- eclipse-swt-nocairo.fc4.patch DELETED ---




More information about the fedora-cvs-commits mailing list