< 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 >