diff options
author | Mark Wielaard <mark@klomp.org> | 2007-04-04 22:58:54 +0000 |
---|---|---|
committer | Mark Wielaard <mark@klomp.org> | 2007-04-04 22:58:54 +0000 |
commit | e80ab36f051362974b356490563a9f2af8261a76 (patch) | |
tree | 7d5103ce3f386cdb7060d98a6a0cd2ecdb293bde | |
parent | 92e47e958daba7783fc0db2ad9445919081139d6 (diff) | |
download | classpath-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-- | ChangeLog | 9 | ||||
-rw-r--r-- | gnu/java/awt/peer/gtk/GtkFramePeer.java | 12 | ||||
-rw-r--r-- | gnu/java/awt/peer/gtk/GtkImage.java | 4 | ||||
-rw-r--r-- | native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkImage.c | 5 |
4 files changed, 23 insertions, 7 deletions
@@ -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); } |