< prev index next >

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

Print this page

        

*** 1,7 **** /* ! * Copyright (c) 2005, 2012, 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) 2005, 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
*** 22,34 **** * or visit www.oracle.com if you need additional information or have any * questions. */ #include <stdlib.h> ! #include "gtk2_interface.h" #include "com_sun_java_swing_plaf_gtk_GTKEngine.h" /* * Class: com_sun_java_swing_plaf_gtk_GTKEngine * Method: native_paint_arrow * Signature: (IIILjava/lang/String;IIIII)V */ --- 22,49 ---- * or visit www.oracle.com if you need additional information or have any * questions. */ #include <stdlib.h> ! #include "gtk_interface.h" #include "com_sun_java_swing_plaf_gtk_GTKEngine.h" + /* Static buffer for conversion from java.lang.String to UTF-8 */ + static char conversionBuffer[CONV_BUFFER_SIZE]; + + const char *getStrFor(JNIEnv *env, jstring val) + { + int length = (*env)->GetStringLength(env, val); + if (length > CONV_BUFFER_SIZE-1) + { + length = CONV_BUFFER_SIZE-1; + } + + (*env)->GetStringUTFRegion(env, val, 0, length, conversionBuffer); + return conversionBuffer; + } + /* * Class: com_sun_java_swing_plaf_gtk_GTKEngine * Method: native_paint_arrow * Signature: (IIILjava/lang/String;IIIII)V */
*** 36,49 **** Java_com_sun_java_swing_plaf_gtk_GTKEngine_native_1paint_1arrow( JNIEnv *env, jobject this, jint widget_type, jint state, jint shadow_type, jstring detail, jint x, jint y, jint w, jint h, jint arrow_type) { ! fp_gdk_threads_enter(); ! gtk2_paint_arrow(widget_type, state, shadow_type, getStrFor(env, detail), x, y, w, h, arrow_type, TRUE); ! fp_gdk_threads_leave(); } /* * Class: com_sun_java_swing_plaf_gtk_GTKEngine * Method: native_paint_box --- 51,64 ---- Java_com_sun_java_swing_plaf_gtk_GTKEngine_native_1paint_1arrow( JNIEnv *env, jobject this, jint widget_type, jint state, jint shadow_type, jstring detail, jint x, jint y, jint w, jint h, jint arrow_type) { ! gtk->gdk_threads_enter(); ! gtk->paint_arrow(widget_type, state, shadow_type, getStrFor(env, detail), x, y, w, h, arrow_type, TRUE); ! gtk->gdk_threads_leave(); } /* * Class: com_sun_java_swing_plaf_gtk_GTKEngine * Method: native_paint_box
*** 54,67 **** JNIEnv *env, jobject this, jint widget_type, jint state, jint shadow_type, jstring detail, jint x, jint y, jint w, jint h, jint synth_state, jint dir) { ! fp_gdk_threads_enter(); ! gtk2_paint_box(widget_type, state, shadow_type, getStrFor(env, detail), x, y, w, h, synth_state, dir); ! fp_gdk_threads_leave(); } /* * Class: com_sun_java_swing_plaf_gtk_GTKEngine * Method: native_paint_box_gap --- 69,82 ---- JNIEnv *env, jobject this, jint widget_type, jint state, jint shadow_type, jstring detail, jint x, jint y, jint w, jint h, jint synth_state, jint dir) { ! gtk->gdk_threads_enter(); ! gtk->paint_box(widget_type, state, shadow_type, getStrFor(env, detail), x, y, w, h, synth_state, dir); ! gtk->gdk_threads_leave(); } /* * Class: com_sun_java_swing_plaf_gtk_GTKEngine * Method: native_paint_box_gap
*** 72,85 **** JNIEnv *env, jobject this, jint widget_type, jint state, jint shadow_type, jstring detail, jint x, jint y, jint w, jint h, jint gap_side, jint gap_x, jint gap_w) { ! fp_gdk_threads_enter(); ! gtk2_paint_box_gap(widget_type, state, shadow_type, getStrFor(env, detail), x, y, w, h, gap_side, gap_x, gap_w); ! fp_gdk_threads_leave(); } /* * Class: com_sun_java_swing_plaf_gtk_GTKEngine * Method: native_paint_check --- 87,100 ---- JNIEnv *env, jobject this, jint widget_type, jint state, jint shadow_type, jstring detail, jint x, jint y, jint w, jint h, jint gap_side, jint gap_x, jint gap_w) { ! gtk->gdk_threads_enter(); ! gtk->paint_box_gap(widget_type, state, shadow_type, getStrFor(env, detail), x, y, w, h, gap_side, gap_x, gap_w); ! gtk->gdk_threads_leave(); } /* * Class: com_sun_java_swing_plaf_gtk_GTKEngine * Method: native_paint_check
*** 89,102 **** Java_com_sun_java_swing_plaf_gtk_GTKEngine_native_1paint_1check( JNIEnv *env, jobject this, jint widget_type, jint synth_state, jstring detail, jint x, jint y, jint w, jint h) { ! fp_gdk_threads_enter(); ! gtk2_paint_check(widget_type, synth_state, getStrFor(env, detail), x, y, w, h); ! fp_gdk_threads_leave(); } /* * Class: com_sun_java_swing_plaf_gtk_GTKEngine * Method: native_paint_expander --- 104,117 ---- Java_com_sun_java_swing_plaf_gtk_GTKEngine_native_1paint_1check( JNIEnv *env, jobject this, jint widget_type, jint synth_state, jstring detail, jint x, jint y, jint w, jint h) { ! gtk->gdk_threads_enter(); ! gtk->paint_check(widget_type, synth_state, getStrFor(env, detail), x, y, w, h); ! gtk->gdk_threads_leave(); } /* * Class: com_sun_java_swing_plaf_gtk_GTKEngine * Method: native_paint_expander
*** 106,119 **** Java_com_sun_java_swing_plaf_gtk_GTKEngine_native_1paint_1expander( JNIEnv *env, jobject this, jint widget_type, jint state, jstring detail, jint x, jint y, jint w, jint h, jint expander_style) { ! fp_gdk_threads_enter(); ! gtk2_paint_expander(widget_type, state, getStrFor(env, detail), x, y, w, h, expander_style); ! fp_gdk_threads_leave(); } /* * Class: com_sun_java_swing_plaf_gtk_GTKEngine * Method: native_paint_extension --- 121,134 ---- Java_com_sun_java_swing_plaf_gtk_GTKEngine_native_1paint_1expander( JNIEnv *env, jobject this, jint widget_type, jint state, jstring detail, jint x, jint y, jint w, jint h, jint expander_style) { ! gtk->gdk_threads_enter(); ! gtk->paint_expander(widget_type, state, getStrFor(env, detail), x, y, w, h, expander_style); ! gtk->gdk_threads_leave(); } /* * Class: com_sun_java_swing_plaf_gtk_GTKEngine * Method: native_paint_extension
*** 123,136 **** Java_com_sun_java_swing_plaf_gtk_GTKEngine_native_1paint_1extension( JNIEnv *env, jobject this, jint widget_type, jint state, jint shadow_type, jstring detail, jint x, jint y, jint w, jint h, jint placement) { ! fp_gdk_threads_enter(); ! gtk2_paint_extension(widget_type, state, shadow_type, getStrFor(env, detail), x, y, w, h, placement); ! fp_gdk_threads_leave(); } /* * Class: com_sun_java_swing_plaf_gtk_GTKEngine * Method: native_paint_flat_box --- 138,151 ---- Java_com_sun_java_swing_plaf_gtk_GTKEngine_native_1paint_1extension( JNIEnv *env, jobject this, jint widget_type, jint state, jint shadow_type, jstring detail, jint x, jint y, jint w, jint h, jint placement) { ! gtk->gdk_threads_enter(); ! gtk->paint_extension(widget_type, state, shadow_type, getStrFor(env, detail), x, y, w, h, placement); ! gtk->gdk_threads_leave(); } /* * Class: com_sun_java_swing_plaf_gtk_GTKEngine * Method: native_paint_flat_box
*** 140,153 **** Java_com_sun_java_swing_plaf_gtk_GTKEngine_native_1paint_1flat_1box( JNIEnv *env, jobject this, jint widget_type, jint state, jint shadow_type, jstring detail, jint x, jint y, jint w, jint h, jboolean has_focus) { ! fp_gdk_threads_enter(); ! gtk2_paint_flat_box(widget_type, state, shadow_type, getStrFor(env, detail), x, y, w, h, has_focus); ! fp_gdk_threads_leave(); } /* * Class: com_sun_java_swing_plaf_gtk_GTKEngine * Method: native_paint_focus --- 155,168 ---- Java_com_sun_java_swing_plaf_gtk_GTKEngine_native_1paint_1flat_1box( JNIEnv *env, jobject this, jint widget_type, jint state, jint shadow_type, jstring detail, jint x, jint y, jint w, jint h, jboolean has_focus) { ! gtk->gdk_threads_enter(); ! gtk->paint_flat_box(widget_type, state, shadow_type, getStrFor(env, detail), x, y, w, h, has_focus); ! gtk->gdk_threads_leave(); } /* * Class: com_sun_java_swing_plaf_gtk_GTKEngine * Method: native_paint_focus
*** 157,170 **** Java_com_sun_java_swing_plaf_gtk_GTKEngine_native_1paint_1focus( JNIEnv *env, jobject this, jint widget_type, jint state, jstring detail, jint x, jint y, jint w, jint h) { ! fp_gdk_threads_enter(); ! gtk2_paint_focus(widget_type, state, getStrFor(env, detail), x, y, w, h); ! fp_gdk_threads_leave(); } /* * Class: com_sun_java_swing_plaf_gtk_GTKEngine * Method: native_paint_handle --- 172,185 ---- Java_com_sun_java_swing_plaf_gtk_GTKEngine_native_1paint_1focus( JNIEnv *env, jobject this, jint widget_type, jint state, jstring detail, jint x, jint y, jint w, jint h) { ! gtk->gdk_threads_enter(); ! gtk->paint_focus(widget_type, state, getStrFor(env, detail), x, y, w, h); ! gtk->gdk_threads_leave(); } /* * Class: com_sun_java_swing_plaf_gtk_GTKEngine * Method: native_paint_handle
*** 174,187 **** Java_com_sun_java_swing_plaf_gtk_GTKEngine_native_1paint_1handle( JNIEnv *env, jobject this, jint widget_type, jint state, jint shadow_type, jstring detail, jint x, jint y, jint w, jint h, jint orientation) { ! fp_gdk_threads_enter(); ! gtk2_paint_handle(widget_type, state, shadow_type, getStrFor(env, detail), x, y, w, h, orientation); ! fp_gdk_threads_leave(); } /* * Class: com_sun_java_swing_plaf_gtk_GTKEngine * Method: native_paint_hline --- 189,202 ---- Java_com_sun_java_swing_plaf_gtk_GTKEngine_native_1paint_1handle( JNIEnv *env, jobject this, jint widget_type, jint state, jint shadow_type, jstring detail, jint x, jint y, jint w, jint h, jint orientation) { ! gtk->gdk_threads_enter(); ! gtk->paint_handle(widget_type, state, shadow_type, getStrFor(env, detail), x, y, w, h, orientation); ! gtk->gdk_threads_leave(); } /* * Class: com_sun_java_swing_plaf_gtk_GTKEngine * Method: native_paint_hline
*** 191,204 **** Java_com_sun_java_swing_plaf_gtk_GTKEngine_native_1paint_1hline( JNIEnv *env, jobject this, jint widget_type, jint state, jstring detail, jint x, jint y, jint w, jint h) { ! fp_gdk_threads_enter(); ! gtk2_paint_hline(widget_type, state, getStrFor(env, detail), x, y, w, h); ! fp_gdk_threads_leave(); } /* * Class: com_sun_java_swing_plaf_gtk_GTKEngine * Method: native_paint_option --- 206,219 ---- Java_com_sun_java_swing_plaf_gtk_GTKEngine_native_1paint_1hline( JNIEnv *env, jobject this, jint widget_type, jint state, jstring detail, jint x, jint y, jint w, jint h) { ! gtk->gdk_threads_enter(); ! gtk->paint_hline(widget_type, state, getStrFor(env, detail), x, y, w, h); ! gtk->gdk_threads_leave(); } /* * Class: com_sun_java_swing_plaf_gtk_GTKEngine * Method: native_paint_option
*** 208,221 **** Java_com_sun_java_swing_plaf_gtk_GTKEngine_native_1paint_1option( JNIEnv *env, jobject this, jint widget_type, jint synth_state, jstring detail, jint x, jint y, jint w, jint h) { ! fp_gdk_threads_enter(); ! gtk2_paint_option(widget_type, synth_state, getStrFor(env, detail), x, y, w, h); ! fp_gdk_threads_leave(); } /* * Class: com_sun_java_swing_plaf_gtk_GTKEngine * Method: native_paint_shadow --- 223,236 ---- Java_com_sun_java_swing_plaf_gtk_GTKEngine_native_1paint_1option( JNIEnv *env, jobject this, jint widget_type, jint synth_state, jstring detail, jint x, jint y, jint w, jint h) { ! gtk->gdk_threads_enter(); ! gtk->paint_option(widget_type, synth_state, getStrFor(env, detail), x, y, w, h); ! gtk->gdk_threads_leave(); } /* * Class: com_sun_java_swing_plaf_gtk_GTKEngine * Method: native_paint_shadow
*** 226,239 **** JNIEnv *env, jobject this, jint widget_type, jint state, jint shadow_type, jstring detail, jint x, jint y, jint w, jint h, jint synth_state, jint dir) { ! fp_gdk_threads_enter(); ! gtk2_paint_shadow(widget_type, state, shadow_type, getStrFor(env, detail), x, y, w, h, synth_state, dir); ! fp_gdk_threads_leave(); } /* * Class: com_sun_java_swing_plaf_gtk_GTKEngine * Method: native_paint_slider --- 241,254 ---- JNIEnv *env, jobject this, jint widget_type, jint state, jint shadow_type, jstring detail, jint x, jint y, jint w, jint h, jint synth_state, jint dir) { ! gtk->gdk_threads_enter(); ! gtk->paint_shadow(widget_type, state, shadow_type, getStrFor(env, detail), x, y, w, h, synth_state, dir); ! gtk->gdk_threads_leave(); } /* * Class: com_sun_java_swing_plaf_gtk_GTKEngine * Method: native_paint_slider
*** 241,256 **** */ JNIEXPORT void JNICALL Java_com_sun_java_swing_plaf_gtk_GTKEngine_native_1paint_1slider( JNIEnv *env, jobject this, jint widget_type, jint state, jint shadow_type, jstring detail, ! jint x, jint y, jint w, jint h, jint orientation) { ! fp_gdk_threads_enter(); ! gtk2_paint_slider(widget_type, state, shadow_type, getStrFor(env, detail), ! x, y, w, h, orientation); ! fp_gdk_threads_leave(); } /* * Class: com_sun_java_swing_plaf_gtk_GTKEngine * Method: native_paint_vline --- 256,271 ---- */ JNIEXPORT void JNICALL Java_com_sun_java_swing_plaf_gtk_GTKEngine_native_1paint_1slider( JNIEnv *env, jobject this, jint widget_type, jint state, jint shadow_type, jstring detail, ! jint x, jint y, jint w, jint h, jint orientation, jboolean has_focus) { ! gtk->gdk_threads_enter(); ! gtk->paint_slider(widget_type, state, shadow_type, getStrFor(env, detail), ! x, y, w, h, orientation, has_focus); ! gtk->gdk_threads_leave(); } /* * Class: com_sun_java_swing_plaf_gtk_GTKEngine * Method: native_paint_vline
*** 260,273 **** Java_com_sun_java_swing_plaf_gtk_GTKEngine_native_1paint_1vline( JNIEnv *env, jobject this, jint widget_type, jint state, jstring detail, jint x, jint y, jint w, jint h) { ! fp_gdk_threads_enter(); ! gtk2_paint_vline(widget_type, state, getStrFor(env, detail), x, y, w, h); ! fp_gdk_threads_leave(); } /* * Class: com_sun_java_swing_plaf_gtk_GTKEngine * Method: native_paint_background --- 275,288 ---- Java_com_sun_java_swing_plaf_gtk_GTKEngine_native_1paint_1vline( JNIEnv *env, jobject this, jint widget_type, jint state, jstring detail, jint x, jint y, jint w, jint h) { ! gtk->gdk_threads_enter(); ! gtk->paint_vline(widget_type, state, getStrFor(env, detail), x, y, w, h); ! gtk->gdk_threads_leave(); } /* * Class: com_sun_java_swing_plaf_gtk_GTKEngine * Method: native_paint_background
*** 276,288 **** JNIEXPORT void JNICALL Java_com_sun_java_swing_plaf_gtk_GTKEngine_native_1paint_1background( JNIEnv *env, jobject this, jint widget_type, jint state, jint x, jint y, jint w, jint h) { ! fp_gdk_threads_enter(); ! gtk_paint_background(widget_type, state, x, y, w, h); ! fp_gdk_threads_leave(); } /* * Class: com_sun_java_swing_plaf_gtk_GTKEngine * Method: nativeStartPainting --- 291,303 ---- JNIEXPORT void JNICALL Java_com_sun_java_swing_plaf_gtk_GTKEngine_native_1paint_1background( JNIEnv *env, jobject this, jint widget_type, jint state, jint x, jint y, jint w, jint h) { ! gtk->gdk_threads_enter(); ! gtk->paint_background(widget_type, state, x, y, w, h); ! gtk->gdk_threads_leave(); } /* * Class: com_sun_java_swing_plaf_gtk_GTKEngine * Method: nativeStartPainting
*** 290,302 **** */ JNIEXPORT void JNICALL Java_com_sun_java_swing_plaf_gtk_GTKEngine_nativeStartPainting( JNIEnv *env, jobject this, jint w, jint h) { ! fp_gdk_threads_enter(); ! gtk2_init_painting(env, w, h); ! fp_gdk_threads_leave(); } /* * Class: com_sun_java_swing_plaf_gtk_GTKEngine * Method: nativeFinishPainting --- 305,317 ---- */ JNIEXPORT void JNICALL Java_com_sun_java_swing_plaf_gtk_GTKEngine_nativeStartPainting( JNIEnv *env, jobject this, jint w, jint h) { ! gtk->gdk_threads_enter(); ! gtk->init_painting(env, w, h); ! gtk->gdk_threads_leave(); } /* * Class: com_sun_java_swing_plaf_gtk_GTKEngine * Method: nativeFinishPainting
*** 306,318 **** Java_com_sun_java_swing_plaf_gtk_GTKEngine_nativeFinishPainting( JNIEnv *env, jobject this, jintArray dest, jint width, jint height) { jint transparency; gint *buffer = (gint*) (*env)->GetPrimitiveArrayCritical(env, dest, 0); ! fp_gdk_threads_enter(); ! transparency = gtk2_copy_image(buffer, width, height); ! fp_gdk_threads_leave(); (*env)->ReleasePrimitiveArrayCritical(env, dest, buffer, 0); return transparency; } /* --- 321,333 ---- Java_com_sun_java_swing_plaf_gtk_GTKEngine_nativeFinishPainting( JNIEnv *env, jobject this, jintArray dest, jint width, jint height) { jint transparency; gint *buffer = (gint*) (*env)->GetPrimitiveArrayCritical(env, dest, 0); ! gtk->gdk_threads_enter(); ! transparency = gtk->copy_image(buffer, width, height); ! gtk->gdk_threads_leave(); (*env)->ReleasePrimitiveArrayCritical(env, dest, buffer, 0); return transparency; } /*
*** 322,332 **** */ JNIEXPORT void JNICALL Java_com_sun_java_swing_plaf_gtk_GTKEngine_native_1switch_1theme( JNIEnv *env, jobject this) { // Note that flush_gtk_event_loop takes care of locks (7053002) ! flush_gtk_event_loop(); } /* * Class: com_sun_java_swing_plaf_gtk_GTKEngine * Method: native_get_gtk_setting --- 337,349 ---- */ JNIEXPORT void JNICALL Java_com_sun_java_swing_plaf_gtk_GTKEngine_native_1switch_1theme( JNIEnv *env, jobject this) { // Note that flush_gtk_event_loop takes care of locks (7053002) ! gtk->gdk_threads_enter(); ! gtk->flush_event_loop(); ! gtk->gdk_threads_leave(); } /* * Class: com_sun_java_swing_plaf_gtk_GTKEngine * Method: native_get_gtk_setting
*** 334,346 **** */ JNIEXPORT jobject JNICALL Java_com_sun_java_swing_plaf_gtk_GTKEngine_native_1get_1gtk_1setting( JNIEnv *env, jobject this, jint property) { jobject obj; ! fp_gdk_threads_enter(); ! obj = gtk2_get_setting(env, property); ! fp_gdk_threads_leave(); return obj; } /* * Class: com_sun_java_swing_plaf_gtk_GTKEngine --- 351,363 ---- */ JNIEXPORT jobject JNICALL Java_com_sun_java_swing_plaf_gtk_GTKEngine_native_1get_1gtk_1setting( JNIEnv *env, jobject this, jint property) { jobject obj; ! gtk->gdk_threads_enter(); ! obj = gtk->get_setting(env, property); ! gtk->gdk_threads_leave(); return obj; } /* * Class: com_sun_java_swing_plaf_gtk_GTKEngine
*** 350,358 **** JNIEXPORT void JNICALL Java_com_sun_java_swing_plaf_gtk_GTKEngine_nativeSetRangeValue( JNIEnv *env, jobject this, jint widget_type, jdouble value, jdouble min, jdouble max, jdouble visible) { ! fp_gdk_threads_enter(); ! gtk2_set_range_value(widget_type, value, min, max, visible); ! fp_gdk_threads_leave(); } --- 367,375 ---- JNIEXPORT void JNICALL Java_com_sun_java_swing_plaf_gtk_GTKEngine_nativeSetRangeValue( JNIEnv *env, jobject this, jint widget_type, jdouble value, jdouble min, jdouble max, jdouble visible) { ! gtk->gdk_threads_enter(); ! gtk->set_range_value(widget_type, value, min, max, visible); ! gtk->gdk_threads_leave(); }
< prev index next >