This is the mail archive of the
java-patches@gcc.gnu.org
mailing list for the Java project.
Re: [patch][gui] warning patrol no 3 gtk-peer stuff
Hi all,
I commit the attached patch and leave the
gnu_java_awt_peer_gtk_GThreadNativeMethodRunner.c out for now.
We need further discussion about.
Thanks for heavy review.
Andreas
2004-10-25 Andreas Tobler <a.tobler@schweiz.ch>
* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkFileDialogPeer.c
(Java_gnu_java_awt_peer_gtk_GtkFileDialogPeer_nativeSetFilenameFilter):
Fix pointer warning.
* jni/gtk-peer/gtkpeer.h: Introduce widget_union to fix type punned
warnings.
* jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphics.c
(Java_gnu_java_awt_peer_gtk_GdkGraphics_clearRect): Use widget_union
to fix type punned pointer warning.
* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkEvents.c (pre_event_handler):
Likewise.
* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c
(window_get_new_state): Introduce unions to fix warnings as above.
(window_property_changed_cb): Likewise.
(window_active_state_change_cb): Mark unused variables unused.
(window_focus_state_change_cb): Likewise.
(window_focus_in_cb): Likewise.
(window_focus_out_cb): Likewise.
* jni/gtk-peer/gnu_java_awt_peer_gtk_GdkFontPeer.c
(Java_gnu_java_awt_peer_gtk_GdkFontPeer_setFont): Convert
PangoFontMap correctly with PANGO_FT2FONT_MAP macro.
Index: jni/gtk-peer/gnu_java_awt_peer_gtk_GdkFontPeer.c
===================================================================
RCS file: /cvs/gcc/gcc/libjava/jni/gtk-peer/Attic/gnu_java_awt_peer_gtk_GdkFontPeer.c,v
retrieving revision 1.1.2.1
diff -u -r1.1.2.1 gnu_java_awt_peer_gtk_GdkFontPeer.c
--- jni/gtk-peer/gnu_java_awt_peer_gtk_GdkFontPeer.c 4 Oct 2004 16:45:49 -0000 1.1.2.1
+++ jni/gtk-peer/gnu_java_awt_peer_gtk_GdkFontPeer.c 25 Oct 2004 21:10:01 -0000
@@ -114,6 +114,7 @@
struct peerfont *pfont = NULL;
char const *family_name = NULL;
enum java_awt_font_style style;
+ PangoFT2FontMap *ft2_map;
gdk_threads_enter ();
style = (enum java_awt_font_style) style_int;
@@ -148,7 +149,10 @@
if (useGraphics2D)
{
if (pfont->ctx == NULL)
- pfont->ctx = pango_ft2_font_map_create_context (pango_ft2_font_map_for_display ());
+ {
+ ft2_map = PANGO_FT2_FONT_MAP(pango_ft2_font_map_for_display ());
+ pfont->ctx = pango_ft2_font_map_create_context (ft2_map);
+ }
}
else
{
Index: jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphics.c
===================================================================
RCS file: /cvs/gcc/gcc/libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphics.c,v
retrieving revision 1.5.2.11
diff -u -r1.5.2.11 gnu_java_awt_peer_gtk_GdkGraphics.c
--- jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphics.c 21 Oct 2004 21:45:05 -0000 1.5.2.11
+++ jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphics.c 25 Oct 2004 21:10:02 -0000
@@ -419,13 +419,15 @@
struct graphics *g;
GdkGCValues saved;
GtkWidget *widget;
+ union widget_union w;
g = (struct graphics *) NSA_GET_PTR (env, obj);
gdk_threads_enter ();
if (GDK_IS_WINDOW (g->drawable))
{
- gdk_window_get_user_data (GDK_WINDOW (g->drawable), (void **) &widget);
+ w.widget = &widget;
+ gdk_window_get_user_data (GDK_WINDOW (g->drawable), w.void_widget);
if (widget == NULL || !GTK_IS_EVENT_BOX (widget))
gdk_window_clear_area ((GdkWindow *) g->drawable,
x + g->x_offset, y + g->y_offset,
Index: jni/gtk-peer/gnu_java_awt_peer_gtk_GtkEvents.c
===================================================================
RCS file: /cvs/gcc/gcc/libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkEvents.c,v
retrieving revision 1.19.2.13
diff -u -r1.19.2.13 gnu_java_awt_peer_gtk_GtkEvents.c
--- jni/gtk-peer/gnu_java_awt_peer_gtk_GtkEvents.c 21 Oct 2004 21:45:05 -0000 1.19.2.13
+++ jni/gtk-peer/gnu_java_awt_peer_gtk_GtkEvents.c 25 Oct 2004 21:10:03 -0000
@@ -827,14 +827,16 @@
static guint button_number = -1;
static jint click_count = 1;
static int hasBeenDragged;
+ union widget_union w;
/* If it is not a focus change event, the widget must be realized already.
If not, ignore the event (Gtk+ will do the same). */
if (!(event->type == GDK_FOCUS_CHANGE || GTK_WIDGET_REALIZED(widget)))
return FALSE;
-
+
/* Do not handle propagated events. AWT has its own propagation rules */
- gdk_window_get_user_data (event->any.window, (void **) &event_widget);
+ w.widget = &event_widget;
+ gdk_window_get_user_data (event->any.window, w.void_widget);
if (event_widget != widget)
return FALSE;
Index: jni/gtk-peer/gnu_java_awt_peer_gtk_GtkFileDialogPeer.c
===================================================================
RCS file: /cvs/gcc/gcc/libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkFileDialogPeer.c,v
retrieving revision 1.4.8.7
diff -u -r1.4.8.7 gnu_java_awt_peer_gtk_GtkFileDialogPeer.c
--- jni/gtk-peer/gnu_java_awt_peer_gtk_GtkFileDialogPeer.c 21 Oct 2004 21:12:19 -0000 1.4.8.7
+++ jni/gtk-peer/gnu_java_awt_peer_gtk_GtkFileDialogPeer.c 25 Oct 2004 21:10:04 -0000
@@ -160,11 +160,8 @@
gdk_threads_enter ();
filter = gtk_file_filter_new();
- gtk_file_filter_add_custom(filter,
- GTK_FILE_FILTER_FILENAME,
- G_CALLBACK(filenameFilterCallback),
- obj,
- NULL);
+ gtk_file_filter_add_custom(filter, GTK_FILE_FILTER_FILENAME,
+ filenameFilterCallback, obj, NULL);
gtk_file_chooser_set_filter(GTK_FILE_CHOOSER(ptr), filter);
Index: jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c
===================================================================
RCS file: /cvs/gcc/gcc/libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c,v
retrieving revision 1.24.2.17
diff -u -r1.24.2.17 gnu_java_awt_peer_gtk_GtkWindowPeer.c
--- jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c 12 Oct 2004 19:07:48 -0000 1.24.2.17
+++ jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c 25 Oct 2004 21:10:04 -0000
@@ -81,6 +81,19 @@
GdkEventProperty *event,
jobject peer);
+/* Union used for type punning. */
+union extents_union
+{
+ guchar **gu_extents;
+ unsigned long **extents;
+};
+
+union atom_list_union
+{
+ guchar **gu_extents;
+ Atom **atom_list;
+};
+
JNIEXPORT void JNICALL
Java_gnu_java_awt_peer_gtk_GtkWindowPeer_create
(JNIEnv *env, jobject obj, jint type, jboolean decorated,
@@ -370,6 +383,7 @@
int *top, int *left, int *bottom, int *right)
{
unsigned long *extents = NULL;
+ union extents_union gu_ex;
/* Guess frame extents in case _NET_FRAME_EXTENTS is not
supported. */
@@ -383,6 +397,7 @@
request_frame_extents (window);
/* Attempt to retrieve window's frame extents. */
+ gu_ex.extents = &extents;
if (gdk_property_get (window->window,
gdk_atom_intern ("_NET_FRAME_EXTENTS", FALSE),
gdk_atom_intern ("CARDINAL", FALSE),
@@ -392,7 +407,7 @@
NULL,
NULL,
NULL,
- (guchar **)&extents))
+ gu_ex.gu_extents))
{
*left = extents [0];
*right = extents [1];
@@ -506,11 +521,12 @@
}
static void
-window_active_state_change_cb (GtkWidget *widget,
- GParamSpec *pspec,
- jobject peer)
+window_active_state_change_cb (GtkWidget *widget __attribute__((unused)),
+ GParamSpec *pspec __attribute__((unused)),
+ jobject peer __attribute__((unused)))
{
/* FIXME: not sure if this is needed or not. */
+ /* Remove the unused attributes if you fix the below. */
#if 0
if (GTK_WINDOW (widget)->is_active)
(*gdk_env)->CallVoidMethod (gdk_env, peer,
@@ -527,8 +543,8 @@
static void
window_focus_state_change_cb (GtkWidget *widget,
- GParamSpec *pspec,
- jobject peer)
+ GParamSpec *pspec __attribute__((unused)),
+ jobject peer)
{
if (GTK_WINDOW (widget)->has_toplevel_focus)
(*gdk_env)->CallVoidMethod (gdk_env, peer,
@@ -543,9 +559,9 @@
}
static gboolean
-window_focus_in_cb (GtkWidget * widget,
- GdkEventFocus *event,
- jobject peer)
+window_focus_in_cb (GtkWidget * widget __attribute__((unused)),
+ GdkEventFocus *event __attribute__((unused)),
+ jobject peer)
{
(*gdk_env)->CallVoidMethod (gdk_env, peer,
postWindowEventID,
@@ -557,9 +573,9 @@
}
static gboolean
-window_focus_out_cb (GtkWidget * widget,
- GdkEventFocus *event,
- jobject peer)
+window_focus_out_cb (GtkWidget * widget __attribute__((unused)),
+ GdkEventFocus *event __attribute__((unused)),
+ jobject peer)
{
(*gdk_env)->CallVoidMethod (gdk_env, peer,
postWindowEventID,
@@ -625,12 +641,15 @@
gulong atom_count;
gulong bytes_after;
Atom *atom_list = NULL;
+ union atom_list_union alu;
gulong i;
- XGetWindowProperty (GDK_DISPLAY_XDISPLAY (display), GDK_WINDOW_XID (widget->window),
+ alu.atom_list = &atom_list;
+ XGetWindowProperty (GDK_DISPLAY_XDISPLAY (display),
+ GDK_WINDOW_XID (widget->window),
gdk_x11_get_xatom_by_name_for_display (display, "_NET_WM_STATE"),
0, G_MAXLONG, False, XA_ATOM, &type, &format, &atom_count,
- &bytes_after, (guchar **)&atom_list);
+ &bytes_after, alu.gu_extents);
if (type != None)
{
@@ -659,6 +678,7 @@
jobject peer)
{
unsigned long *extents;
+ union extents_union gu_ex;
static int id_set = 0;
static jmethodID postInsetsChangedEventID;
@@ -673,7 +693,7 @@
"(IIII)V");
id_set = 1;
}
-
+ gu_ex.extents = &extents;
if (gdk_atom_intern ("_NET_FRAME_EXTENTS", FALSE) == event->atom
&& gdk_property_get (event->window,
gdk_atom_intern ("_NET_FRAME_EXTENTS", FALSE),
@@ -684,7 +704,7 @@
NULL,
NULL,
NULL,
- (guchar **)&extents))
+ gu_ex.gu_extents))
(*gdk_env)->CallVoidMethod (gdk_env, peer,
postInsetsChangedEventID,
(jint) extents[2], /* top */
Index: jni/gtk-peer/gtkpeer.h
===================================================================
RCS file: /cvs/gcc/gcc/libjava/jni/gtk-peer/gtkpeer.h,v
retrieving revision 1.12.8.12
diff -u -r1.12.8.12 gtkpeer.h
--- jni/gtk-peer/gtkpeer.h 8 Oct 2004 17:44:58 -0000 1.12.8.12
+++ jni/gtk-peer/gtkpeer.h 25 Oct 2004 21:10:05 -0000
@@ -486,6 +486,13 @@
const char *label;
};
+/* Union used for type punning. */
+union widget_union
+{
+ void **void_widget;
+ GtkWidget **widget;
+};
+
#define DEBUG_LOCKING 0
#if DEBUG_LOCKING