This is the mail archive of the
java-patches@gcc.gnu.org
mailing list for the Java project.
[gui][PATCH] Re-add nativeSetIconImageFromData to GtkFramePeer
- From: Thomas Fitzsimmons <fitzsim at redhat dot com>
- To: java-patches at gcc dot gnu dot org
- Date: Mon, 10 Jan 2005 00:30:48 -0500
- Subject: [gui][PATCH] Re-add nativeSetIconImageFromData to GtkFramePeer
Hi,
This method implementation got dropped when GtkFramePeer's native
methods were moved from GtkWindowPeer.c to GtkFramePeer.c. This patch,
which I committed to java-gui-branch, re-adds the native implementation.
Tom
2005-01-10 Thomas Fitzsimmons <fitzsim@redhat.com>
* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkFramePeer.c
(nativeSetIconImageFromData): Re-add native implementation.
Index: jni/gtk-peer/gnu_java_awt_peer_gtk_GtkFramePeer.c
===================================================================
RCS file: /cvs/gcc/gcc/libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkFramePeer.c,v
retrieving revision 1.1.2.4
diff -u -r1.1.2.4 gnu_java_awt_peer_gtk_GtkFramePeer.c
--- jni/gtk-peer/gnu_java_awt_peer_gtk_GtkFramePeer.c 26 Oct 2004 16:28:43 -0000 1.1.2.4
+++ jni/gtk-peer/gnu_java_awt_peer_gtk_GtkFramePeer.c 10 Jan 2005 05:25:45 -0000
@@ -177,3 +177,47 @@
gdk_threads_leave ();
}
+
+static void
+free_pixbuf_data (guchar *pixels, gpointer data __attribute__((unused)))
+{
+ free(pixels);
+}
+
+JNIEXPORT void JNICALL
+Java_gnu_java_awt_peer_gtk_GtkFramePeer_nativeSetIconImageFromData
+ (JNIEnv *env, jobject obj, jintArray pixelArray, jint width, jint height)
+{
+ void *ptr;
+ GdkPixbuf *pixbuf;
+ jint *pixels;
+ int pixels_length, i;
+ guchar *data;
+
+ ptr = NSA_GET_PTR (env, obj);
+
+ pixels = (*env)->GetIntArrayElements (env, pixelArray, 0);
+ pixels_length = (*env)->GetArrayLength (env, pixelArray);
+
+ data = malloc (sizeof (guchar) * pixels_length);
+ for (i = 0; i < pixels_length; i++)
+ data[i] = (guchar) pixels[i];
+
+ gdk_threads_enter ();
+
+ pixbuf = gdk_pixbuf_new_from_data (data,
+ GDK_COLORSPACE_RGB,
+ TRUE,
+ 8,
+ width,
+ height,
+ width*4,
+ free_pixbuf_data,
+ NULL);
+
+ gtk_window_set_icon (GTK_WINDOW (ptr), pixbuf);
+
+ gdk_threads_leave ();
+
+ (*env)->ReleaseIntArrayElements(env, pixelArray, pixels, 0);
+}