In the AsyncImage we need to ignore (legal) null observers otherwise we get NPEs.
2006-12-05 Roman Kennke <[EMAIL PROTECTED]> * gnu/java/awt/peer/gtk/AsyncImage.java (addObserver): Check for null and ignore null observers. (getWidth): Check for null and ignore null observers. (getHeight): Check for null and ignore null observers. (getProperty): Check for null and ignore null observers. /Roman
Index: gnu/java/awt/peer/gtk/AsyncImage.java =================================================================== RCS file: /cvsroot/classpath/classpath/gnu/java/awt/peer/gtk/AsyncImage.java,v retrieving revision 1.1 diff -u -1 -5 -r1.1 AsyncImage.java --- gnu/java/awt/peer/gtk/AsyncImage.java 5 Dec 2006 11:11:16 -0000 1.1 +++ gnu/java/awt/peer/gtk/AsyncImage.java 5 Dec 2006 21:37:35 -0000 @@ -153,90 +153,102 @@ { // Nothing to do here. } public Graphics getGraphics() { Image r = realImage; Graphics g = null; if (r != null) g = r.getGraphics(); // Should we return some dummy graphics instead? return g; } public int getHeight(ImageObserver observer) { - synchronized (observers) + if (observer != null) { - observers.add(observer); + synchronized (observers) + { + observers.add(observer); + } } int height = 0; Image r = realImage; if (r != null) height = r.getHeight(observer); return height; } public Object getProperty(String name, ImageObserver observer) { - synchronized (observers) + if (observer != null) { - observers.add(observer); + synchronized (observers) + { + observers.add(observer); + } } Image r = realImage; Object prop = null; if (r != null) prop = r.getProperty(name, observer); return prop; } public ImageProducer getSource() { Image r = realImage; ImageProducer source; if (r == null) source = new NullImageSource(); else source = r.getSource(); return source; } public int getWidth(ImageObserver observer) { - synchronized (observers) + if (observer != null) { - observers.add(observer); + synchronized (observers) + { + observers.add(observer); + } } int width = 0; Image r = realImage; if (r != null) width = r.getWidth(observer); return width; } void addObserver(ImageObserver obs) { - if (realImage != null && ! observers.contains(obs)) + if (obs != null) { - obs.imageUpdate(this, ImageObserver.WIDTH | ImageObserver.HEIGHT - |ImageObserver.ALLBITS | ImageObserver.PROPERTIES, - 0, 0, realImage.getWidth(null), - realImage.getHeight(null)); - } - synchronized (observers) - { - observers.add(obs); + if (realImage != null && ! observers.contains(obs)) + { + obs.imageUpdate(this, ImageObserver.WIDTH | ImageObserver.HEIGHT + |ImageObserver.ALLBITS | ImageObserver.PROPERTIES, + 0, 0, realImage.getWidth(null), + realImage.getHeight(null)); + } + synchronized (observers) + { + observers.add(obs); + } } } static Image realImage(Image img, ImageObserver obs) { if (img instanceof AsyncImage) { ((AsyncImage) img).addObserver(obs); Image r = ((AsyncImage) img).realImage; if (r != null) img = r; } return img; }