Andreas Tobler wrote:
Mark Wielaard wrote:
Hi,

On Tue, 2006-05-30 at 22:43 +0200, Andreas Tobler wrote:
This really is a static function. Please keep it that way.
ld: Undefined symbols:
_cp_java_awt_peer_gtk_ComponentGraphics_grab_current_drawable

?
Yeah, that is strange. When do you get that?
Well, we use it in gnu_java_awt_peer_gtk_ComponentGraphicsCopy.c
and in gnu_java_awt_peer_gtk_ComponentGraphics.c.

So for me it's only usable in gnu_java_awt_peer_gtk_ComponentGraphics.c

I may don't understand it...

OK, we figured it out. This patch and a patch from Sven to implement
ComponentGraphicsCopy crossed meaning that the
cp_java_awt_peer_gtk_ComponentGraphics_grab_current_drawable function is
now indeed non-static. Which does mean that if we mark it as non-static
it has to have a common function prototype in gtkpeer.h.

Would this be something usable?

Andreas

2006-05-31  Andreas Tobler  <[EMAIL PROTECTED]>

    * native/jni/gtk-peer/gnu_java_awt_peer_gtk_ComponentGraphics.c
    (cp_gtk_grab_current_drawable): Rename
    cp_java_awt_peer_gtk_ComponentGraphics_grab_current_drawable to
    cp_gtk_grab_current_drawable, remove static declaration.
    (Java_gnu_java_awt_peer_gtk_ComponentGraphics_initState): Renamed above
    function.
(Java_gnu_java_awt_peer_gtk_ComponentGraphics_copyAreaNative): Likewise.
    * native/jni/gtk-peer/gnu_java_awt_peer_gtk_ComponentGraphicsCopy.c:
    Remove prototype of
    cp_java_awt_peer_gtk_ComponentGraphics_grab_current_drawable.
    (Java_gnu_java_awt_peer_gtk_ComponentGraphicsCopy_getPixbuf): Rename
    function.
(Java_gnu_java_awt_peer_gtk_ComponentGraphicsCopy_copyPixbuf): Likewise.
    * native/jni/gtk-peer/gtkpeer.h: Add prototype for
    cp_gtk_grab_current_drawable here.



------------------------------------------------------------------------

Index: native/jni/gtk-peer/gnu_java_awt_peer_gtk_ComponentGraphics.c
===================================================================
RCS file: 
/cvsroot/classpath/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_ComponentGraphics.c,v
retrieving revision 1.7
diff -u -r1.7 gnu_java_awt_peer_gtk_ComponentGraphics.c
--- native/jni/gtk-peer/gnu_java_awt_peer_gtk_ComponentGraphics.c       31 May 
2006 20:29:41 -0000      1.7
+++ native/jni/gtk-peer/gnu_java_awt_peer_gtk_ComponentGraphics.c       31 May 
2006 20:36:20 -0000
@@ -55,10 +55,9 @@
 #include "gnu_java_awt_peer_gtk_ComponentGraphics.h"
-static void -cp_java_awt_peer_gtk_ComponentGraphics_grab_current_drawable(GtkWidget *widget,
-       GdkDrawable **draw, GdkWindow **win)
-{ +void cp_gtk_grab_current_drawable(GtkWidget *widget, GdkDrawable **draw,
+                                 GdkWindow **win)
+{
   g_assert (widget != NULL);
   g_assert (draw != NULL);
   g_assert (win != NULL);
@@ -110,7 +109,7 @@
   widget = GTK_WIDGET (ptr);
   g_assert (widget != NULL);
- cp_java_awt_peer_gtk_ComponentGraphics_grab_current_drawable (widget, &drawable, &win);
+  cp_gtk_grab_current_drawable (widget, &drawable, &win);
   g_assert (drawable != NULL);
width = widget->allocation.width;
@@ -171,7 +170,7 @@
   widget = GTK_WIDGET (ptr);
   g_assert (widget != NULL);
- cp_java_awt_peer_gtk_ComponentGraphics_grab_current_drawable (widget, &drawable, &win);
+  cp_gtk_grab_current_drawable (widget, &drawable, &win);
   g_assert (drawable != NULL);
pixbuf = gdk_pixbuf_new( GDK_COLORSPACE_RGB, TRUE, 8, w, h );
Index: native/jni/gtk-peer/gnu_java_awt_peer_gtk_ComponentGraphicsCopy.c
===================================================================
RCS file: 
/cvsroot/classpath/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_ComponentGraphicsCopy.c,v
retrieving revision 1.2
diff -u -r1.2 gnu_java_awt_peer_gtk_ComponentGraphicsCopy.c
--- native/jni/gtk-peer/gnu_java_awt_peer_gtk_ComponentGraphicsCopy.c   30 May 
2006 11:30:02 -0000      1.2
+++ native/jni/gtk-peer/gnu_java_awt_peer_gtk_ComponentGraphicsCopy.c   31 May 
2006 20:36:20 -0000
@@ -53,8 +53,6 @@
#include "gnu_java_awt_peer_gtk_ComponentGraphicsCopy.h" -void cp_java_awt_peer_gtk_ComponentGraphics_grab_current_drawable(GtkWidget *widget, GdkDrawable **draw, GdkWindow **win);
-
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_ComponentGraphicsCopy_getPixbuf
    (JNIEnv *env, jobject obj __attribute__((unused)),
@@ -75,7 +73,7 @@
   widget = GTK_WIDGET (ptr);
   g_assert (widget != NULL);
- cp_java_awt_peer_gtk_ComponentGraphics_grab_current_drawable (widget, &drawable, &win);
+  cp_gtk_grab_current_drawable (widget, &drawable, &win);
   g_assert (drawable != NULL);
pixbuf = cp_gtk_image_get_pixbuf( env, image );
@@ -115,7 +113,7 @@
   widget = GTK_WIDGET (ptr);
   g_assert (widget != NULL);
- cp_java_awt_peer_gtk_ComponentGraphics_grab_current_drawable (widget, &drawable, &win);
+  cp_gtk_grab_current_drawable (widget, &drawable, &win);
   g_assert (drawable != NULL);
pixbuf = cp_gtk_image_get_pixbuf( env, image );
Index: native/jni/gtk-peer/gtkpeer.h
===================================================================
RCS file: /cvsroot/classpath/classpath/native/jni/gtk-peer/gtkpeer.h,v
retrieving revision 1.45
diff -u -r1.45 gtkpeer.h
--- native/jni/gtk-peer/gtkpeer.h       30 May 2006 04:21:53 -0000      1.45
+++ native/jni/gtk-peer/gtkpeer.h       31 May 2006 20:36:21 -0000
@@ -183,6 +183,10 @@
 /* Image helpers */
 GdkPixbuf *cp_gtk_image_get_pixbuf (JNIEnv *env, jobject obj);
+/* Component Graphics helpers */
+void cp_gtk_grab_current_drawable(GtkWidget *widget, GdkDrawable **draw,
+                                 GdkWindow **win);
+
 /* JNI initialization functions */
 void cp_gtk_button_init_jni (void);
 void cp_gtk_checkbox_init_jni (void);

Yes, please commit. It would also be nice if scripts/check_jni_methods.sh checked that all public symbols in libgtkpeer.so were prefixed appropriately. If you have the GNU tools installed, you could just nm for this:

nm --dynamic --defined-only --extern-only libgtkpeer.so

Doing this, I just noticed CairoGraphics2D_getCairoT is exported but not properly prefixed. Want to fix this one too?

Thanks,
Tom

Reply via email to