summaryrefslogtreecommitdiff
path: root/gnu/java/awt/peer/gtk/VolatileImageGraphics.java
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/java/awt/peer/gtk/VolatileImageGraphics.java')
-rw-r--r--gnu/java/awt/peer/gtk/VolatileImageGraphics.java13
1 files changed, 9 insertions, 4 deletions
diff --git a/gnu/java/awt/peer/gtk/VolatileImageGraphics.java b/gnu/java/awt/peer/gtk/VolatileImageGraphics.java
index 560d31750..3a9f9d693 100644
--- a/gnu/java/awt/peer/gtk/VolatileImageGraphics.java
+++ b/gnu/java/awt/peer/gtk/VolatileImageGraphics.java
@@ -282,12 +282,12 @@ public class VolatileImageGraphics extends ComponentGraphics
if (buffer == null)
{
WritableRaster rst;
- rst = Raster.createWritableRaster(CairoSurface.
- createNativeSampleModel(owner.width,
+ rst = Raster.createWritableRaster(GtkVolatileImage.createGdkSampleModel(owner.width,
owner.height),
new Point(0,0));
- buffer = new BufferedImage(CairoSurface.nativeColorModel, rst, true,
+ buffer = new BufferedImage(GtkVolatileImage.gdkColorModel, rst,
+ GtkVolatileImage.gdkColorModel.isAlphaPremultiplied(),
new Hashtable());
}
else
@@ -301,7 +301,12 @@ public class VolatileImageGraphics extends ComponentGraphics
protected ColorModel getNativeCM()
{
- return CairoSurface.nativeColorModel;
+ // We should really return GtkVolatileImage.gdkColorModel ,
+ // but CairoGraphics2D doesn't handle alpha premultiplication properly (see
+ // the fixme in drawImage) so we use the naive Cairo model instead to trick
+ // the compositing context.
+ // Because getNativeCM() == getBufferCM() for this peer, it doesn't break.
+ return CairoSurface.cairoCM_pre;
}
}