This fixes a segmentation fault in but #26924. Apparently, the Canvas's
graphics were being used when it was not realized.
2006-03-31 Lillian Angel <[EMAIL PROTECTED]>
PR classpath/26924
* gnu/java/awt/peer/gtk/GtkCanvasPeer.java
(realize): New native function.
* include/gnu_java_awt_peer_gtk_GtkCanvasPeer.h:
Added new function declaration.
* native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkCanvasPeer.c
(realize): New function.
Index: gnu/java/awt/peer/gtk/GtkCanvasPeer.java
===================================================================
RCS file: /sources/classpath/classpath/gnu/java/awt/peer/gtk/GtkCanvasPeer.java,v
retrieving revision 1.16
diff -u -r1.16 GtkCanvasPeer.java
--- gnu/java/awt/peer/gtk/GtkCanvasPeer.java 16 Mar 2006 03:24:18 -0000 1.16
+++ gnu/java/awt/peer/gtk/GtkCanvasPeer.java 31 Mar 2006 18:54:05 -0000
@@ -38,16 +38,14 @@
package gnu.java.awt.peer.gtk;
-import java.awt.AWTEvent;
import java.awt.Canvas;
import java.awt.Dimension;
-import java.awt.Graphics;
-import java.awt.event.PaintEvent;
import java.awt.peer.CanvasPeer;
public class GtkCanvasPeer extends GtkComponentPeer implements CanvasPeer
{
native void create ();
+ native void realize ();
public GtkCanvasPeer (Canvas c)
{
Index: include/gnu_java_awt_peer_gtk_GtkCanvasPeer.h
===================================================================
RCS file: /sources/classpath/classpath/include/gnu_java_awt_peer_gtk_GtkCanvasPeer.h,v
retrieving revision 1.3
diff -u -r1.3 gnu_java_awt_peer_gtk_GtkCanvasPeer.h
--- include/gnu_java_awt_peer_gtk_GtkCanvasPeer.h 28 May 2004 17:27:52 -0000 1.3
+++ include/gnu_java_awt_peer_gtk_GtkCanvasPeer.h 31 Mar 2006 18:54:06 -0000
@@ -11,6 +11,7 @@
#endif
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkCanvasPeer_create (JNIEnv *env, jobject);
+JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkCanvasPeer_realize (JNIEnv *env, jobject);
#ifdef __cplusplus
}
Index: native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkCanvasPeer.c
===================================================================
RCS file: /sources/classpath/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkCanvasPeer.c,v
retrieving revision 1.11
diff -u -r1.11 gnu_java_awt_peer_gtk_GtkCanvasPeer.c
--- native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkCanvasPeer.c 22 Sep 2005 20:25:39 -0000 1.11
+++ native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkCanvasPeer.c 31 Mar 2006 18:54:06 -0000
@@ -56,3 +56,17 @@
gdk_threads_leave ();
}
+
+JNIEXPORT void JNICALL
+Java_gnu_java_awt_peer_gtk_GtkCanvasPeer_realize (JNIEnv *env, jobject obj)
+{
+ void *ptr;
+
+ gdk_threads_enter ();
+
+ ptr = NSA_GET_PTR (env, obj);
+
+ gtk_widget_realize (GTK_WIDGET (ptr));
+
+ gdk_threads_leave ();
+}