summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSilenio Quarti <silenio_quarti@ca.ibm.com>2012-11-29 11:16:03 -0500
committerSilenio Quarti <silenio_quarti@ca.ibm.com>2012-11-29 11:16:03 -0500
commit4953e90353cf03b7e9778bd8ad03e777e563314d (patch)
treec4c9f6653c5c906618ef7a7702ece985bc1b4f9e
parent2eb0d57b46ef2fa0c4a9cfafa527354a559190cd (diff)
downloadeclipse.platform.swt-4953e90353cf03b7e9778bd8ad03e777e563314d.tar.gz
eclipse.platform.swt-4953e90353cf03b7e9778bd8ad03e777e563314d.tar.xz
eclipse.platform.swt-4953e90353cf03b7e9778bd8ad03e777e563314d.zip
Bug 392498 - GC.copyarea does not work correctly on linux
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/graphics/GC.java4
1 files changed, 4 insertions, 0 deletions
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/graphics/GC.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/graphics/GC.java
index bf42c7e6da..55b22a1bfb 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/graphics/GC.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/graphics/GC.java
@@ -486,6 +486,7 @@ public void copyArea(Image image, int x, int y) {
long /*int*/ cairo = Cairo.cairo_create(image.surface);
if (cairo == 0) SWT.error(SWT.ERROR_NO_HANDLES);
Cairo.cairo_translate(cairo, -x, -y);
+ Cairo.cairo_push_group(cairo);
if (data.image != null) {
Cairo.cairo_set_source_surface(cairo, data.image.surface, 0, 0);
} else if (data.drawable != 0) {
@@ -502,10 +503,13 @@ public void copyArea(Image image, int x, int y) {
Cairo.cairo_set_source_surface(cairo, srcSurface, 0, 0);
}
} else {
+ Cairo.cairo_destroy(cairo);
return;
}
Cairo.cairo_set_operator(cairo, Cairo.CAIRO_OPERATOR_SOURCE);
Cairo.cairo_paint(cairo);
+ Cairo.cairo_pop_group_to_source(cairo);
+ Cairo.cairo_paint(cairo);
Cairo.cairo_destroy(cairo);
return;
}