Hi,

This makes us get a clean compile again with --enable-Werror. It
introduces two new conversion macros (from out alsa code) in case we
want to pass around jlongs as pointers in jcl.h and makes all code use
that. It also cleans up a couple of other issues.

2006-05-30  Mark Wielaard  <[EMAIL PROTECTED]>

    * native/jni/classpath/jcl.h (JLONG_TO_PTR): New macro.
    (PTR_TO_JLONG): Likewise.
    * native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoGraphics2D.c
    (getPointer): Use new conversion macros.
    (Java_gnu_java_awt_peer_gtk_CairoGraphics2D_init): Likewise.
    * native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoSurface.c
    (Java_gnu_java_awt_peer_gtk_CairoSurface_newCairoContext):
    Likewise.
    (setNativeObject): Likewise.
    (getNativeObject): Likewise.
    * native/jni/gtk-peer/gnu_java_awt_peer_gtk_ComponentGraphics.c
    (cp_java_awt_peer_gtk_ComponentGraphics_grab_current_drawable):
    Mark static.
    (Java_gnu_java_awt_peer_gtk_ComponentGraphics_initState):
    Correctly cast XID and pointer values.
    * native/jni/gtk-peer/gnu_java_awt_peer_gtk_ComponentGraphicsCopy.c
    (Java_gnu_java_awt_peer_gtk_ComponentGraphicsCopy_getPixbuf):
    Mark unused variables.
    (Java_gnu_java_awt_peer_gtk_ComponentGraphicsCopy_copyPixbuf):
    Likewise.
    * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkTextLayout.c
    (Java_gnu_java_awt_peer_gtk_GdkTextLayout_cairoDrawGdkTextLayout):
    Remove unused cairographics2d struct.
    (_moveTo, _lineTo, _quadTo, _curveTo): Mark arguments const.
    (Java_gnu_java_awt_peer_gtk_GtkImage_initFromBuffer):
    Use new conversion macros.
    * native/jni/midi-dssi/dssi_data.h: Move conversion macros to jcl.h.

There were 2 surprises (at least to me).
- The freetype2 FT_Outline_Funcs now take const arguments. I believe
this wasn't so in previous freetype2 releases. I'll see whether this is
a real issue and try to come up with a way to get this compile cleanly
with all freetype2 versions if possible.
- ComponentGraphicsCopy.copyPixbuf() doesn't use its x, y, height and
width arguments. I haven't yet looked if it should or if they can really
be discarded.

Lets keep our native code warning free, it really helps catching issues
on non-common platforms early.

Committed,

Mark
Index: native/jni/classpath/jcl.h
===================================================================
RCS file: /cvsroot/classpath/classpath/native/jni/classpath/jcl.h,v
retrieving revision 1.17
diff -u -r1.17 jcl.h
--- native/jni/classpath/jcl.h	22 Apr 2006 21:52:18 -0000	1.17
+++ native/jni/classpath/jcl.h	30 May 2006 11:19:32 -0000
@@ -1,5 +1,5 @@
 /* jcl.h
-   Copyright (C) 1998 Free Software Foundation, Inc.
+   Copyright (C) 1998, 2006 Free Software Foundation, Inc.
 
 This file is part of GNU Classpath.
 
@@ -50,6 +50,10 @@
 #error "Unknown pointer size"
 #endif
 
+/* Helper macros for going between pointers and jlongs.  */
+#define JLONG_TO_PTR(T,P) ((T *)(long)P)
+#define PTR_TO_JLONG(P) ((jlong)(long)P)
+
 JNIEXPORT jclass JNICALL JCL_FindClass (JNIEnv * env, const char *className);
 JNIEXPORT void JNICALL JCL_ThrowException (JNIEnv * env,
 					   const char *className,
Index: native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoGraphics2D.c
===================================================================
RCS file: /cvsroot/classpath/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoGraphics2D.c,v
retrieving revision 1.2
diff -u -r1.2 gnu_java_awt_peer_gtk_CairoGraphics2D.c
--- native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoGraphics2D.c	29 May 2006 17:49:24 -0000	1.2
+++ native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoGraphics2D.c	30 May 2006 11:19:33 -0000
@@ -64,7 +64,7 @@
   value = (*env)->GetLongField( env, obj, nofid );
   (*env)->DeleteLocalRef( env, cls );
 
-  return (struct cairographics2d *) value;
+  return JLONG_TO_PTR(struct cairographics2d, value);
 }
 
 /**
@@ -88,15 +88,16 @@
    jlong cairo_t_pointer)
 {
   struct cairographics2d *g = NULL;
-  g_assert( cairo_t_pointer != NULL);
+  cairo_t *cr = JLONG_TO_PTR(cairo_t, cairo_t_pointer);
+  g_assert(cr != NULL);
 
   g = (struct cairographics2d *) g_malloc (sizeof (struct cairographics2d));
 
   g_assert (g != NULL);
   memset (g, 0, sizeof(struct cairographics2d));
-  g->cr = (cairo_t *)cairo_t_pointer;
+  g->cr = cr;
   
-  return ((jlong)g);
+  return PTR_TO_JLONG(g);
 }
 
 /**
Index: native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoSurface.c
===================================================================
RCS file: /cvsroot/classpath/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoSurface.c,v
retrieving revision 1.4
diff -u -r1.4 gnu_java_awt_peer_gtk_CairoSurface.c
--- native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoSurface.c	30 May 2006 04:21:53 -0000	1.4
+++ native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoSurface.c	30 May 2006 11:19:33 -0000
@@ -219,7 +219,7 @@
   ptr = cairo_create(surface);
   g_assert(ptr != NULL);
 
-  return (jlong)ptr;
+  return PTR_TO_JLONG(ptr);
 }
 
 /**
@@ -265,7 +265,7 @@
   jlong value;
   jfieldID nofid;
   cls = (*env)->GetObjectClass( env, obj );
-  value = ((jlong)ptr); 
+  value = PTR_TO_JLONG(ptr); 
   nofid = (*env)->GetFieldID( env, cls, pointer, "J" );
   (*env)->SetLongField( env, obj, nofid, value );
   (*env)->DeleteLocalRef( env, cls );
@@ -284,5 +284,5 @@
   nofid = (*env)->GetFieldID( env, cls, pointer, "J" );
   value = (*env)->GetLongField( env, obj, nofid );
   (*env)->DeleteLocalRef( env, cls );
-  return (void *) value;
+  return JLONG_TO_PTR(void, value);
 }
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.3
diff -u -r1.3 gnu_java_awt_peer_gtk_ComponentGraphics.c
--- native/jni/gtk-peer/gnu_java_awt_peer_gtk_ComponentGraphics.c	30 May 2006 04:21:53 -0000	1.3
+++ native/jni/gtk-peer/gnu_java_awt_peer_gtk_ComponentGraphics.c	30 May 2006 11:19:33 -0000
@@ -55,7 +55,7 @@
 #include "gnu_java_awt_peer_gtk_ComponentGraphics.h"
 
 
-void 
+static void 
 cp_java_awt_peer_gtk_ComponentGraphics_grab_current_drawable(GtkWidget *widget,
 	GdkDrawable **draw, GdkWindow **win)
 {  
@@ -117,7 +117,7 @@
   g_assert (drawable != NULL);
 
   draw = gdk_x11_drawable_get_xid(drawable);
-  g_assert (draw != NULL);
+  g_assert (draw != (XID) 0);
   
   dpy = gdk_x11_drawable_get_xdisplay(drawable);
   g_assert (dpy != NULL);
@@ -133,7 +133,7 @@
 
   gdk_threads_leave();
 
-  return (jlong)cr;
+  return PTR_TO_JLONG(cr);
 }
 
 JNIEXPORT void JNICALL 
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.1
diff -u -r1.1 gnu_java_awt_peer_gtk_ComponentGraphicsCopy.c
--- native/jni/gtk-peer/gnu_java_awt_peer_gtk_ComponentGraphicsCopy.c	30 May 2006 04:21:53 -0000	1.1
+++ native/jni/gtk-peer/gnu_java_awt_peer_gtk_ComponentGraphicsCopy.c	30 May 2006 11:19:33 -0000
@@ -57,7 +57,8 @@
 
 JNIEXPORT void JNICALL 
 Java_gnu_java_awt_peer_gtk_ComponentGraphicsCopy_getPixbuf
-   (JNIEnv *env, jobject obj, jobject peer, jobject image)
+   (JNIEnv *env, jobject obj __attribute__((unused)),
+    jobject peer, jobject image)
 {
   gint width, height;
   GdkPixbuf *pixbuf;
@@ -94,8 +95,10 @@
 
 JNIEXPORT void JNICALL 
 Java_gnu_java_awt_peer_gtk_ComponentGraphicsCopy_copyPixbuf
-  (JNIEnv *env, jobject obj, jobject peer, jobject image,
-   int x, int y, int width, int height)
+  (JNIEnv *env, jobject obj __attribute__((unused)),
+   jobject peer, jobject image,
+   int x __attribute__((unused)), int y __attribute__((unused)),
+   int width __attribute__((unused)), int height __attribute__((unused)))
 {
   gint pwidth, pheight;
   GdkPixbuf *pixbuf;
Index: native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkTextLayout.c
===================================================================
RCS file: /cvsroot/classpath/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkTextLayout.c,v
retrieving revision 1.11
diff -u -r1.11 gnu_java_awt_peer_gtk_GdkTextLayout.c
--- native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkTextLayout.c	29 May 2006 16:14:59 -0000	1.11
+++ native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkTextLayout.c	30 May 2006 11:19:33 -0000
@@ -1,5 +1,5 @@
 /* gnu_java_awt_GdkTextLayout.c
-   Copyright (C) 2004, 2005 Free Software Foundation, Inc.
+   Copyright (C) 2004, 2005, 2006 Free Software Foundation, Inc.
    
    This file is part of GNU Classpath.
    
@@ -224,7 +224,6 @@
    */
 
   cairo_t *cr;
-  struct cairographics2d *gr = NULL;
   struct textlayout *tl = NULL;
   PangoLayoutIter *i = NULL;
   PangoLayoutRun *run = NULL;
@@ -312,7 +311,7 @@
 /* GetOutline code follows ****************************/
 /********* Freetype callback functions *****************************/
 
-static int _moveTo( FT_Vector* to,
+static int _moveTo( const FT_Vector* to,
 		    void *p)
 {
   JNIEnv *env;
@@ -335,7 +334,7 @@
   return 0;
 }
 
-static int _lineTo( FT_Vector*  to,
+static int _lineTo( const FT_Vector*  to,
 		    void *p)
 {
   JNIEnv *env;
@@ -357,8 +356,8 @@
   return 0;
 }
 
-static int _quadTo( FT_Vector*  cp,
-		    FT_Vector*  to,
+static int _quadTo( const FT_Vector*  cp,
+		    const FT_Vector*  to,
 		    void *p)
 {
   JNIEnv *env;
@@ -382,9 +381,9 @@
   return 0;
 }
 
-static int _curveTo( FT_Vector*  cp1,
-		     FT_Vector*  cp2,
-		     FT_Vector*  to,
+static int _curveTo( const FT_Vector*  cp1,
+		     const FT_Vector*  cp2,
+		     const FT_Vector*  to,
 		     void *p)
 {
   JNIEnv *env;
Index: native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkImage.c
===================================================================
RCS file: /cvsroot/classpath/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkImage.c,v
retrieving revision 1.22
diff -u -r1.22 gnu_java_awt_peer_gtk_GtkImage.c
--- native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkImage.c	30 May 2006 04:21:53 -0000	1.22
+++ native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkImage.c	30 May 2006 11:19:33 -0000
@@ -267,8 +267,9 @@
   jclass cls;
   jfieldID field;
   GdkPixbuf *pixbuf;
+  const guchar *bp = JLONG_TO_PTR(const guchar, bufferPointer);
 
-  g_assert( bufferPointer != NULL );
+  g_assert(bp != NULL);
   cls = (*env)->GetObjectClass( env, obj );
   field = (*env)->GetFieldID( env, cls, "width", "I" );
   g_assert( field != 0 );
@@ -278,7 +279,7 @@
   g_assert( field != 0 );
   height = (*env)->GetIntField( env, obj, field );
 
-  pixbuf = gdk_pixbuf_new_from_data( (const guchar *)bufferPointer,
+  pixbuf = gdk_pixbuf_new_from_data( bp,
 				     GDK_COLORSPACE_RGB, TRUE, 8,
 				     width, height, width * 4, NULL, NULL );
   g_assert( pixbuf != NULL );
Index: native/jni/midi-dssi/dssi_data.h
===================================================================
RCS file: /cvsroot/classpath/classpath/native/jni/midi-dssi/dssi_data.h,v
retrieving revision 1.3
diff -u -r1.3 dssi_data.h
--- native/jni/midi-dssi/dssi_data.h	7 Oct 2005 03:21:05 -0000	1.3
+++ native/jni/midi-dssi/dssi_data.h	30 May 2006 11:19:33 -0000
@@ -1,5 +1,5 @@
 /* dssi_data.h - DSSI data
-   Copyright (C) 2005 Free Software Foundation, Inc.
+   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
 
 This file is part of GNU Classpath.
 
@@ -55,11 +55,6 @@
    1/40th of a second).  */
 #define EVENT_BUFFER_SIZE 1024
 
-/* Helper macros for going between pointers and jlongs.  */
-#define JLONG_TO_PTR(T,P) ((T *)(long)P)
-#define PTR_TO_JLONG(P) ((jlong)(long)P)
-
-
 /* Every DSSI Synthesizer has one of these associated with it.  The
    Java class sees it as a "long" handle.  */
 

Attachment: signature.asc
Description: This is a digitally signed message part

Reply via email to