< prev index next >

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

Print this page

        

@@ -1,7 +1,7 @@
 /*
- * Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
+ * 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,13 +22,28 @@
  * or visit www.oracle.com if you need additional information or have any
  * questions.
  */
 
 #include <stdlib.h>
-#include "gtk2_interface.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,14 +51,14 @@
 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),
+    gtk->gdk_threads_enter();
+    gtk->paint_arrow(widget_type, state, shadow_type, getStrFor(env, detail),
             x, y, w, h, arrow_type, TRUE);
-    fp_gdk_threads_leave();
+    gtk->gdk_threads_leave();
 }
 
 /*
  * Class:     com_sun_java_swing_plaf_gtk_GTKEngine
  * Method:    native_paint_box

@@ -54,14 +69,14 @@
         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),
+    gtk->gdk_threads_enter();
+    gtk->paint_box(widget_type, state, shadow_type, getStrFor(env, detail),
                    x, y, w, h, synth_state, dir);
-    fp_gdk_threads_leave();
+    gtk->gdk_threads_leave();
 }
 
 /*
  * Class:     com_sun_java_swing_plaf_gtk_GTKEngine
  * Method:    native_paint_box_gap

@@ -72,14 +87,14 @@
         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),
+    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);
-    fp_gdk_threads_leave();
+    gtk->gdk_threads_leave();
 }
 
 /*
  * Class:     com_sun_java_swing_plaf_gtk_GTKEngine
  * Method:    native_paint_check

@@ -89,14 +104,14 @@
 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),
+    gtk->gdk_threads_enter();
+    gtk->paint_check(widget_type, synth_state, getStrFor(env, detail),
                      x, y, w, h);
-    fp_gdk_threads_leave();
+    gtk->gdk_threads_leave();
 }
 
 /*
  * Class:     com_sun_java_swing_plaf_gtk_GTKEngine
  * Method:    native_paint_expander

@@ -106,14 +121,14 @@
 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),
+    gtk->gdk_threads_enter();
+    gtk->paint_expander(widget_type, state, getStrFor(env, detail),
             x, y, w, h, expander_style);
-    fp_gdk_threads_leave();
+    gtk->gdk_threads_leave();
 }
 
 /*
  * Class:     com_sun_java_swing_plaf_gtk_GTKEngine
  * Method:    native_paint_extension

@@ -123,14 +138,14 @@
 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,
+    gtk->gdk_threads_enter();
+    gtk->paint_extension(widget_type, state, shadow_type,
             getStrFor(env, detail), x, y, w, h, placement);
-    fp_gdk_threads_leave();
+    gtk->gdk_threads_leave();
 }
 
 /*
  * Class:     com_sun_java_swing_plaf_gtk_GTKEngine
  * Method:    native_paint_flat_box

@@ -140,14 +155,14 @@
 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,
+    gtk->gdk_threads_enter();
+    gtk->paint_flat_box(widget_type, state, shadow_type,
             getStrFor(env, detail), x, y, w, h, has_focus);
-    fp_gdk_threads_leave();
+    gtk->gdk_threads_leave();
 }
 
 /*
  * Class:     com_sun_java_swing_plaf_gtk_GTKEngine
  * Method:    native_paint_focus

@@ -157,14 +172,14 @@
 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),
+    gtk->gdk_threads_enter();
+    gtk->paint_focus(widget_type, state, getStrFor(env, detail),
             x, y, w, h);
-    fp_gdk_threads_leave();
+    gtk->gdk_threads_leave();
 }
 
 /*
  * Class:     com_sun_java_swing_plaf_gtk_GTKEngine
  * Method:    native_paint_handle

@@ -174,14 +189,14 @@
 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),
+    gtk->gdk_threads_enter();
+    gtk->paint_handle(widget_type, state, shadow_type, getStrFor(env, detail),
             x, y, w, h, orientation);
-    fp_gdk_threads_leave();
+    gtk->gdk_threads_leave();
 }
 
 /*
  * Class:     com_sun_java_swing_plaf_gtk_GTKEngine
  * Method:    native_paint_hline

@@ -191,14 +206,14 @@
 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),
+    gtk->gdk_threads_enter();
+    gtk->paint_hline(widget_type, state, getStrFor(env, detail),
             x, y, w, h);
-    fp_gdk_threads_leave();
+    gtk->gdk_threads_leave();
 }
 
 /*
  * Class:     com_sun_java_swing_plaf_gtk_GTKEngine
  * Method:    native_paint_option

@@ -208,14 +223,14 @@
 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),
+    gtk->gdk_threads_enter();
+    gtk->paint_option(widget_type, synth_state, getStrFor(env, detail),
                       x, y, w, h);
-    fp_gdk_threads_leave();
+    gtk->gdk_threads_leave();
 }
 
 /*
  * Class:     com_sun_java_swing_plaf_gtk_GTKEngine
  * Method:    native_paint_shadow

@@ -226,14 +241,14 @@
         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),
+    gtk->gdk_threads_enter();
+    gtk->paint_shadow(widget_type, state, shadow_type, getStrFor(env, detail),
                       x, y, w, h, synth_state, dir);
-    fp_gdk_threads_leave();
+    gtk->gdk_threads_leave();
 }
 
 /*
  * Class:     com_sun_java_swing_plaf_gtk_GTKEngine
  * Method:    native_paint_slider

@@ -241,16 +256,16 @@
  */
 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)
+        jint x, jint y, jint w, jint h, jint orientation, jboolean has_focus)
 {
-    fp_gdk_threads_enter();
-    gtk2_paint_slider(widget_type, state, shadow_type, getStrFor(env, detail),
-            x, y, w, h, orientation);
-    fp_gdk_threads_leave();
+    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,14 +275,14 @@
 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),
+    gtk->gdk_threads_enter();
+    gtk->paint_vline(widget_type, state, getStrFor(env, detail),
             x, y, w, h);
-    fp_gdk_threads_leave();
+    gtk->gdk_threads_leave();
 }
 
 /*
  * Class:     com_sun_java_swing_plaf_gtk_GTKEngine
  * Method:    native_paint_background

@@ -276,13 +291,13 @@
 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();
+    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,13 +305,13 @@
  */
 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();
+    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,13 +321,13 @@
 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();
+    gtk->gdk_threads_enter();
+    transparency = gtk->copy_image(buffer, width, height);
+    gtk->gdk_threads_leave();
     (*env)->ReleasePrimitiveArrayCritical(env, dest, buffer, 0);
     return transparency;
 }
 
 /*

@@ -322,11 +337,13 @@
  */
 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();
+    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,13 +351,13 @@
  */
 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();
+    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,9 +367,9 @@
 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();
+    gtk->gdk_threads_enter();
+    gtk->set_range_value(widget_type, value, min, max, visible);
+    gtk->gdk_threads_leave();
 }
< prev index next >