< prev index next >

src/solaris/native/sun/awt/awt_UNIXToolkit.c

Print this page

        

*** 1,7 **** /* ! * Copyright (c) 2004, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. Oracle designates this --- 1,7 ---- /* ! * Copyright (c) 2004, 2018, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. Oracle designates this
*** 32,75 **** #include <sizecalc.h> #include "sun_awt_UNIXToolkit.h" #ifndef HEADLESS #include "awt.h" ! #include "gtk2_interface.h" #endif /* !HEADLESS */ static jclass this_class = NULL; static jmethodID icon_upcall_method = NULL; /* * Class: sun_awt_UNIXToolkit * Method: check_gtk ! * Signature: ()Z */ JNIEXPORT jboolean JNICALL ! Java_sun_awt_UNIXToolkit_check_1gtk(JNIEnv *env, jclass klass) ! { #ifndef HEADLESS ! return (jboolean)gtk2_check_version(); #else return JNI_FALSE; #endif /* !HEADLESS */ } /* * Class: sun_awt_UNIXToolkit * Method: load_gtk ! * Signature: ()Z */ JNIEXPORT jboolean JNICALL ! Java_sun_awt_UNIXToolkit_load_1gtk(JNIEnv *env, jclass klass) ! { #ifndef HEADLESS ! return (jboolean)gtk2_load(env); #else return JNI_FALSE; #endif /* !HEADLESS */ } --- 32,74 ---- #include <sizecalc.h> #include "sun_awt_UNIXToolkit.h" #ifndef HEADLESS #include "awt.h" ! #include "gtk_interface.h" #endif /* !HEADLESS */ static jclass this_class = NULL; static jmethodID icon_upcall_method = NULL; /* * Class: sun_awt_UNIXToolkit * Method: check_gtk ! * Signature: (I)Z */ JNIEXPORT jboolean JNICALL ! Java_sun_awt_UNIXToolkit_check_1gtk(JNIEnv *env, jclass klass, jint version) { #ifndef HEADLESS ! return (jboolean)gtk_check_version(version); #else return JNI_FALSE; #endif /* !HEADLESS */ } /* * Class: sun_awt_UNIXToolkit * Method: load_gtk ! * Signature: (I)Z */ JNIEXPORT jboolean JNICALL ! Java_sun_awt_UNIXToolkit_load_1gtk(JNIEnv *env, jclass klass, jint version, ! jboolean verbose) { #ifndef HEADLESS ! return (jboolean)gtk_load(env, version, verbose); #else return JNI_FALSE; #endif /* !HEADLESS */ }
*** 81,134 **** */ JNIEXPORT jboolean JNICALL Java_sun_awt_UNIXToolkit_unload_1gtk(JNIEnv *env, jclass klass) { #ifndef HEADLESS ! return (jboolean)gtk2_unload(); #else return JNI_FALSE; #endif /* !HEADLESS */ } ! jboolean _icon_upcall(JNIEnv *env, jobject this, GdkPixbuf *pixbuf) { - jboolean result = JNI_FALSE; - if (this_class == NULL) { this_class = (*env)->NewGlobalRef(env, (*env)->GetObjectClass(env, this)); icon_upcall_method = (*env)->GetMethodID(env, this_class, "loadIconCallback", "([BIIIIIZ)V"); CHECK_NULL_RETURN(icon_upcall_method, JNI_FALSE); } ! if (pixbuf != NULL) ! { ! guchar *pixbuf_data = (*fp_gdk_pixbuf_get_pixels)(pixbuf); ! int row_stride = (*fp_gdk_pixbuf_get_rowstride)(pixbuf); ! int width = (*fp_gdk_pixbuf_get_width)(pixbuf); ! int height = (*fp_gdk_pixbuf_get_height)(pixbuf); ! int bps = (*fp_gdk_pixbuf_get_bits_per_sample)(pixbuf); ! int channels = (*fp_gdk_pixbuf_get_n_channels)(pixbuf); ! gboolean alpha = (*fp_gdk_pixbuf_get_has_alpha)(pixbuf); ! ! /* Copy the data array into a Java structure so we can pass it back. */ ! jbyteArray data = (*env)->NewByteArray(env, (row_stride * height)); ! JNU_CHECK_EXCEPTION_RETURN(env, JNI_FALSE); ! ! (*env)->SetByteArrayRegion(env, data, 0, (row_stride * height), ! (jbyte *)pixbuf_data); ! ! /* Release the pixbuf. */ ! (*fp_g_object_unref)(pixbuf); ! ! /* Call the callback method to create the image on the Java side. */ ! (*env)->CallVoidMethod(env, this, icon_upcall_method, data, ! width, height, row_stride, bps, channels, alpha); ! result = JNI_TRUE; ! } ! return result; } /* * Class: sun_awt_UNIXToolkit * Method: load_gtk_icon --- 80,106 ---- */ JNIEXPORT jboolean JNICALL Java_sun_awt_UNIXToolkit_unload_1gtk(JNIEnv *env, jclass klass) { #ifndef HEADLESS ! return (jboolean)gtk->unload(); #else return JNI_FALSE; #endif /* !HEADLESS */ } ! jboolean init_method(JNIEnv *env, jobject this) { if (this_class == NULL) { this_class = (*env)->NewGlobalRef(env, (*env)->GetObjectClass(env, this)); icon_upcall_method = (*env)->GetMethodID(env, this_class, "loadIconCallback", "([BIIIIIZ)V"); CHECK_NULL_RETURN(icon_upcall_method, JNI_FALSE); } ! return JNI_TRUE; } /* * Class: sun_awt_UNIXToolkit * Method: load_gtk_icon
*** 142,152 **** { #ifndef HEADLESS int len; char *filename_str = NULL; GError **error = NULL; - GdkPixbuf *pixbuf; if (filename == NULL) { return JNI_FALSE; } --- 114,123 ----
*** 156,172 **** sizeof(char), len + 1); if (filename_str == NULL) { JNU_ThrowOutOfMemoryError(env, "OutOfMemoryError"); return JNI_FALSE; } (*env)->GetStringUTFRegion(env, filename, 0, len, filename_str); ! pixbuf = (*fp_gdk_pixbuf_new_from_file)(filename_str, error); /* Release the strings we've allocated. */ free(filename_str); ! return _icon_upcall(env, this, pixbuf); #else /* HEADLESS */ return JNI_FALSE; #endif /* !HEADLESS */ } --- 127,148 ---- sizeof(char), len + 1); if (filename_str == NULL) { JNU_ThrowOutOfMemoryError(env, "OutOfMemoryError"); return JNI_FALSE; } + if (!init_method(env, this) ) { + free(filename_str); + return JNI_FALSE; + } (*env)->GetStringUTFRegion(env, filename, 0, len, filename_str); ! jboolean result = gtk->get_file_icon_data(env, filename_str, error, ! icon_upcall_method, this); /* Release the strings we've allocated. */ free(filename_str); ! return result; #else /* HEADLESS */ return JNI_FALSE; #endif /* !HEADLESS */ }
*** 184,194 **** { #ifndef HEADLESS int len; char *stock_id_str = NULL; char *detail_str = NULL; - GdkPixbuf *pixbuf; if (stock_id == NULL) { return JNI_FALSE; } --- 160,169 ----
*** 213,233 **** return JNI_FALSE; } (*env)->GetStringUTFRegion(env, detail, 0, len, detail_str); } ! pixbuf = gtk2_get_stock_icon(widget_type, stock_id_str, icon_size, ! text_direction, detail_str); /* Release the strings we've allocated. */ free(stock_id_str); if (detail_str != NULL) { free(detail_str); } ! return _icon_upcall(env, this, pixbuf); #else /* HEADLESS */ return JNI_FALSE; #endif /* !HEADLESS */ } --- 188,212 ---- return JNI_FALSE; } (*env)->GetStringUTFRegion(env, detail, 0, len, detail_str); } ! if (!init_method(env, this) ) { ! return JNI_FALSE; ! } ! jboolean result = gtk->get_icon_data(env, widget_type, stock_id_str, ! icon_size, text_direction, detail_str, ! icon_upcall_method, this); /* Release the strings we've allocated. */ free(stock_id_str); if (detail_str != NULL) { free(detail_str); } ! return result; #else /* HEADLESS */ return JNI_FALSE; #endif /* !HEADLESS */ }
*** 277,289 **** Java_sun_awt_UNIXToolkit_gtkCheckVersionImpl(JNIEnv *env, jobject this, jint major, jint minor, jint micro) { char *ret; ! ret = fp_gtk_check_version(major, minor, micro); if (ret == NULL) { return TRUE; } - free(ret); return FALSE; } --- 256,282 ---- Java_sun_awt_UNIXToolkit_gtkCheckVersionImpl(JNIEnv *env, jobject this, jint major, jint minor, jint micro) { char *ret; ! ret = gtk->gtk_check_version(major, minor, micro); if (ret == NULL) { return TRUE; } return FALSE; } + + /* + * Class: sun_awt_UNIXToolkit + * Method: get_gtk_version + * Signature: ()I + */ + JNIEXPORT jint JNICALL + Java_sun_awt_UNIXToolkit_get_1gtk_1version(JNIEnv *env, jclass klass) + { + #ifndef HEADLESS + return gtk ? gtk->version : GTK_ANY; + #else + return GTK_ANY; + #endif /* !HEADLESS */ + }
< prev index next >