From 122ce965e6a2cfd03426146540e17f6a5034e45c Mon Sep 17 00:00:00 2001 From: fitzsim Date: Wed, 12 Nov 2003 00:37:34 +0000 Subject: 2003-11-11 Thomas Fitzsimmons * Makefile.am: Add GdkPixbufDecoder.java and gnu_java_awt_peer_gtk_GdkPixbufDecoder.c * Makefile.in: Regenerate. * gnu/java/awt/image/ImageDecoder.java (ImageDecoder(byte[],int,int)): New constructor. (startProduction): Create ByteArrayInputStream when url and filename are null. (produce): Declare stream parameter as InputStream. * gnu/java/awt/image/XBMDecoder.java (produce): Declare stream parameter as InputStream. * gnu/java/awt/peer/gtk/GdkPixbufDecoder.java (GdkPixbufDecoder(byte[],int,int)): New constructor. (produce): Declare stream parameter as InputStream. * gnu/java/awt/peer/gtk/GtkComponentPeer.java (prepareImage): Throw NPE if image is null. Set image's observer before running PrepareImage thread. Pass image to startProduction. * gnu/java/awt/peer/gtk/GtkImage.java: Add null checks before calls to source's member functions. (observer): New field. (setObserver): New method. (setDimensions, setPixels, imageComplete): Call observer's imageUpdate. * gnu/java/awt/peer/gtk/GtkToolkit.java (checkImage, getImage): Return new GtkImage. (prepareImage): Implement. * java/awt/Component.java: Add static fields incrementalDraw and redrawRate. (imageUpdate): Implement. (createImage): Call Toolkit's createImage if peer is null. (prepareImage): Throw NPE if image is null. * java/awt/MediaTracker.java: Fix return value. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@73476 138bc75d-0d04-0410-961f-82ee72b054a4 --- libjava/gnu/java/awt/peer/gtk/GtkImage.java | 51 +++++++++++++++++++++++++---- 1 file changed, 44 insertions(+), 7 deletions(-) (limited to 'libjava/gnu/java/awt/peer/gtk/GtkImage.java') diff --git a/libjava/gnu/java/awt/peer/gtk/GtkImage.java b/libjava/gnu/java/awt/peer/gtk/GtkImage.java index 6252a506f0d..5f8d2237b7c 100644 --- a/libjava/gnu/java/awt/peer/gtk/GtkImage.java +++ b/libjava/gnu/java/awt/peer/gtk/GtkImage.java @@ -60,6 +60,7 @@ public class GtkImage extends Image implements ImageConsumer Vector propertyObservers = new Vector (); ImageProducer source; + ImageObserver observer; Graphics g; /* Variables in which we stored cached data, if possible. @@ -79,9 +80,15 @@ public class GtkImage extends Image implements ImageConsumer source = producer; this.g = g; - source.addConsumer (this); + if (source != null) + source.addConsumer (this); } - + + public void setObserver (ImageObserver observer) + { + this.observer = observer; + } + public synchronized int getWidth (ImageObserver observer) { @@ -135,8 +142,11 @@ public class GtkImage extends Image implements ImageConsumer pixelCache = null; model = null; - source.removeConsumer (this); - source.addConsumer (this); + if (source != null) + { + source.removeConsumer (this); + source.addConsumer (this); + } } public boolean @@ -166,6 +176,12 @@ public class GtkImage extends Image implements ImageConsumer ImageObserver io = (ImageObserver) heightObservers.elementAt (i); io.imageUpdate (this, ImageObserver.HEIGHT, -1, -1, width, height); } + + if (observer != null) + observer.imageUpdate (this, + (ImageObserver.WIDTH + | ImageObserver.HEIGHT), + -1, -1, width, height); } public synchronized void @@ -200,6 +216,11 @@ public class GtkImage extends Image implements ImageConsumer { setPixels (x, y, width, height, cm, convertPixels (pixels), offset, scansize); + + if (observer != null) + observer.imageUpdate (this, + ImageObserver.SOMEBITS, + x, y, width, height); } public synchronized void @@ -241,7 +262,20 @@ public class GtkImage extends Image implements ImageConsumer if (status == ImageConsumer.SINGLEFRAMEDONE) isCacheable = false; - source.removeConsumer (this); + if (observer != null) + { + if (status == ImageConsumer.IMAGEERROR) + observer.imageUpdate (null, + ImageObserver.ERROR, + -1, -1, -1, -1); + else + observer.imageUpdate (null, + ImageObserver.ALLBITS, + -1, -1, -1, -1); + } + + if (source != null) + source.removeConsumer (this); } public synchronized void @@ -254,8 +288,11 @@ public class GtkImage extends Image implements ImageConsumer } else { - source.startProduction (painter); - source.removeConsumer (painter); + if (source != null) + { + source.startProduction (painter); + source.removeConsumer (painter); + } } } -- cgit v1.2.3