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 ();
+}

Reply via email to