summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Wielaard <mark@klomp.org>2007-04-04 22:58:54 +0000
committerMark Wielaard <mark@klomp.org>2007-04-04 22:58:54 +0000
commite80ab36f051362974b356490563a9f2af8261a76 (patch)
tree7d5103ce3f386cdb7060d98a6a0cd2ecdb293bde
parent92e47e958daba7783fc0db2ad9445919081139d6 (diff)
downloadclasspath-e80ab36f051362974b356490563a9f2af8261a76.tar.gz
* native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkImage.c
(cp_gtk_image_get_pixbuf): Return NULL when pointer is NULL. * gnu/java/awt/peer/gtk/GtkImage.java (setImage): Set loaded and call deliver() after pixels have been set. * gnu/java/awt/peer/gtk/GtkFramePeer.java (setIconImage): Only set icon when image has been properly loaded.
-rw-r--r--ChangeLog9
-rw-r--r--gnu/java/awt/peer/gtk/GtkFramePeer.java12
-rw-r--r--gnu/java/awt/peer/gtk/GtkImage.java4
-rw-r--r--native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkImage.c5
4 files changed, 23 insertions, 7 deletions
diff --git a/ChangeLog b/ChangeLog
index f336996fd..9079957fc 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2007-04-04 Mark Wielaard <mark@klomp.org>
+
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkImage.c
+ (cp_gtk_image_get_pixbuf): Return NULL when pointer is NULL.
+ * gnu/java/awt/peer/gtk/GtkImage.java (setImage): Set loaded and
+ call deliver() after pixels have been set.
+ * gnu/java/awt/peer/gtk/GtkFramePeer.java (setIconImage): Only
+ set icon when image has been properly loaded.
+
2007-04-04 Francis Kung <fkung@redhat.com>
* gnu/java/awt/peer/gtk/CairoGraphics2D.java
diff --git a/gnu/java/awt/peer/gtk/GtkFramePeer.java b/gnu/java/awt/peer/gtk/GtkFramePeer.java
index 8c4a582ef..b35be5227 100644
--- a/gnu/java/awt/peer/gtk/GtkFramePeer.java
+++ b/gnu/java/awt/peer/gtk/GtkFramePeer.java
@@ -1,5 +1,5 @@
/* GtkFramePeer.java -- Implements FramePeer with GTK
- Copyright (C) 1999, 2002, 2004, 2006 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2002, 2004, 2006, 2007 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -178,10 +178,14 @@ public class GtkFramePeer extends GtkWindowPeer
{
if (image != null)
{
+ GtkImage gtkImage;
if (image instanceof GtkImage)
- nativeSetIconImage((GtkImage) image);
- else
- nativeSetIconImage(new GtkImage(image.getSource()));
+ gtkImage = (GtkImage) image;
+ else
+ gtkImage = new GtkImage(image.getSource());
+
+ if (gtkImage.isLoaded && ! gtkImage.errorLoading)
+ nativeSetIconImage(gtkImage);
}
}
diff --git a/gnu/java/awt/peer/gtk/GtkImage.java b/gnu/java/awt/peer/gtk/GtkImage.java
index db84858cc..719669eae 100644
--- a/gnu/java/awt/peer/gtk/GtkImage.java
+++ b/gnu/java/awt/peer/gtk/GtkImage.java
@@ -374,13 +374,13 @@ public class GtkImage extends Image
return;
}
- isLoaded = true;
- deliver();
synchronized(pixbufLock)
{
createPixbuf();
setPixels(pixels);
}
+ isLoaded = true;
+ deliver();
}
// java.awt.Image methods ////////////////////////////////////////////////
diff --git a/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkImage.c b/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkImage.c
index 8805ae7b3..ae7027e76 100644
--- a/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkImage.c
+++ b/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkImage.c
@@ -1,5 +1,5 @@
/* gtkimage.c
- Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+ Copyright (C) 2005, 2006, 2007 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -368,6 +368,9 @@ GdkPixbuf *cp_gtk_image_get_pixbuf (JNIEnv *env, jobject obj)
g_assert (data_fid != 0);
data = (*env)->GetObjectField (env, obj, data_fid);
+ if (data == NULL)
+ return NULL;
+
return (GdkPixbuf *)JCL_GetRawData (env, data);
}