summaryrefslogtreecommitdiff
path: root/libjava/classpath/gnu/java/awt/peer/gtk/GtkImageConsumer.java
diff options
context:
space:
mode:
Diffstat (limited to 'libjava/classpath/gnu/java/awt/peer/gtk/GtkImageConsumer.java')
-rw-r--r--libjava/classpath/gnu/java/awt/peer/gtk/GtkImageConsumer.java6
1 files changed, 5 insertions, 1 deletions
diff --git a/libjava/classpath/gnu/java/awt/peer/gtk/GtkImageConsumer.java b/libjava/classpath/gnu/java/awt/peer/gtk/GtkImageConsumer.java
index 564cc8d668c..299f01dcaa6 100644
--- a/libjava/classpath/gnu/java/awt/peer/gtk/GtkImageConsumer.java
+++ b/libjava/classpath/gnu/java/awt/peer/gtk/GtkImageConsumer.java
@@ -45,6 +45,7 @@ import java.awt.image.DirectColorModel;
import java.awt.image.ImageConsumer;
import java.awt.image.ImageObserver;
import java.awt.image.ImageProducer;
+import java.awt.image.MemoryImageSource;
import java.util.Hashtable;
import java.util.Vector;
@@ -70,7 +71,10 @@ public class GtkImageConsumer implements ImageConsumer
public synchronized void imageComplete (int status)
{
- source.removeConsumer(this);
+ // we need to reuse the pixel cache for memory image sources since
+ // a memory image's backing array can be updated "live".
+ if (!(source instanceof MemoryImageSource))
+ source.removeConsumer(this);
target.setImage(width, height, pixelCache, properties);
}