< prev index next >

modules/javafx.graphics/src/main/native-glass/gtk/GlassApplication.cpp

Print this page




  58     JNIEnv *env;
  59     int envStatus = javaVM->GetEnv((void **)&env, JNI_VERSION_1_6);
  60     if (envStatus == JNI_EDETACHED) {
  61         javaVM->AttachCurrentThread((void **)&env, NULL);
  62     }
  63 
  64     env->CallVoidMethod(context->runnable, jRunnableRun, NULL);
  65     LOG_EXCEPTION(env);
  66     env->DeleteGlobalRef(context->runnable);
  67     free(context);
  68 
  69     if (envStatus == JNI_EDETACHED) {
  70         javaVM->DetachCurrentThread();
  71     }
  72 
  73     return FALSE;
  74 }
  75 
  76 extern "C" {
  77 
  78 /*
  79  * Class:     com_sun_glass_ui_gtk_GtkApplication
  80  * Method:    _isDisplayValid
  81  * Signature: ()Z
  82  */
  83 JNIEXPORT jboolean JNICALL Java_com_sun_glass_ui_gtk_GtkApplication__1isDisplayValid
  84   (JNIEnv * env, jclass clazz)
  85 {
  86     (void)env;
  87     (void)clazz;
  88 
  89     return is_display_valid();
  90 }
  91 
  92 #pragma GCC diagnostic push
  93 #pragma GCC diagnostic ignored "-Wdeprecated-declarations"
  94 static void init_threads() {
  95     gboolean is_g_thread_get_initialized = FALSE;
  96     if (glib_check_version(2, 32, 0)) { // < 2.32
  97         if (!glib_check_version(2, 20, 0)) {
  98             is_g_thread_get_initialized = g_thread_get_initialized();
  99         }
 100         if (!is_g_thread_get_initialized) {
 101             g_thread_init(NULL);
 102         }
 103     }
 104     gdk_threads_init();
 105 }
 106 #pragma GCC diagnostic pop
 107 

 108 
 109 /*
 110  * Class:     com_sun_glass_ui_gtk_GtkApplication
 111  * Method:    _initGTK
 112  * Signature: (IZ)I
 113  */
 114 JNIEXPORT jint JNICALL Java_com_sun_glass_ui_gtk_GtkApplication__1initGTK
 115   (JNIEnv *env, jclass clazz, jint version, jboolean verbose, jfloat uiScale)
 116 {
 117     (void) clazz;

 118 
 119     OverrideUIScale = uiScale;
 120 
 121     int ret = wrapper_load_symbols(version, verbose);
 122 
 123     if (ret == -1) {
 124         return -1;
 125     }
 126 
 127     env->ExceptionClear();
 128     init_threads();
 129 
 130     gdk_threads_enter();
 131     gtk_init(NULL, NULL);
 132 
 133     return ret;





























 134 }
 135 
 136 /*
 137  * Class:     com_sun_glass_ui_gtk_GtkApplication
 138  * Method:    _init
 139  * Signature: ()V
 140  */
 141 JNIEXPORT void JNICALL Java_com_sun_glass_ui_gtk_GtkApplication__1init
 142   (JNIEnv * env, jobject obj, jlong handler, jboolean _disableGrab)
 143 {
 144     (void)obj;
 145 
 146     mainEnv = env;
 147     process_events_prev = (GdkEventFunc) handler;
 148     disableGrab = (gboolean) _disableGrab;
 149 
 150     glass_gdk_x11_display_set_window_scale(gdk_display_get_default(), 1);
 151     gdk_event_handler_set(process_events, NULL, NULL);
 152 
 153     GdkScreen *default_gdk_screen = gdk_screen_get_default();




  58     JNIEnv *env;
  59     int envStatus = javaVM->GetEnv((void **)&env, JNI_VERSION_1_6);
  60     if (envStatus == JNI_EDETACHED) {
  61         javaVM->AttachCurrentThread((void **)&env, NULL);
  62     }
  63 
  64     env->CallVoidMethod(context->runnable, jRunnableRun, NULL);
  65     LOG_EXCEPTION(env);
  66     env->DeleteGlobalRef(context->runnable);
  67     free(context);
  68 
  69     if (envStatus == JNI_EDETACHED) {
  70         javaVM->DetachCurrentThread();
  71     }
  72 
  73     return FALSE;
  74 }
  75 
  76 extern "C" {
  77 














  78 #pragma GCC diagnostic push
  79 #pragma GCC diagnostic ignored "-Wdeprecated-declarations"
  80 static void init_threads() {
  81     gboolean is_g_thread_get_initialized = FALSE;
  82     if (glib_check_version(2, 32, 0)) { // < 2.32
  83         if (!glib_check_version(2, 20, 0)) {
  84             is_g_thread_get_initialized = g_thread_get_initialized();
  85         }
  86         if (!is_g_thread_get_initialized) {
  87             g_thread_init(NULL);
  88         }
  89     }
  90     gdk_threads_init();
  91 }
  92 #pragma GCC diagnostic pop
  93 
  94 jboolean gtk_verbose = JNI_FALSE;
  95 
  96 /*
  97  * Class:     com_sun_glass_ui_gtk_GtkApplication
  98  * Method:    _initGTK
  99  * Signature: (IZ)I
 100  */
 101 JNIEXPORT jint JNICALL Java_com_sun_glass_ui_gtk_GtkApplication__1initGTK
 102   (JNIEnv *env, jclass clazz, jint version, jboolean verbose, jfloat uiScale)
 103 {
 104     (void) clazz;
 105     (void) version;
 106 
 107     OverrideUIScale = uiScale;
 108     gtk_verbose = verbose;





 109 
 110     env->ExceptionClear();
 111     init_threads();
 112 
 113     gdk_threads_enter();
 114     gtk_init(NULL, NULL);
 115 
 116     return JNI_TRUE;
 117 }
 118 
 119 /*
 120  * Class:     com_sun_glass_ui_gtk_GtkApplication
 121  * Method:    _queryLibrary
 122  * Signature: Signature: (IZ)I
 123  */
 124 JNIEXPORT jint JNICALL Java_com_sun_glass_ui_gtk_GtkApplication__1queryLibrary
 125   (JNIEnv *env, jclass clazz, jint suggestedVersion, jboolean verbose)
 126 {
 127     // If we are being called, then the launcher is
 128     // not in use, and we are in the proper glass library already.
 129     // This can be done by renaming the gtk versioned native
 130     // libraries to be libglass.so
 131     // Note: we will make no effort to complain if the suggestedVersion
 132     // is out of phase.
 133 
 134     (void)env;
 135     (void)clazz;
 136     (void)suggestedVersion;
 137     (void)verbose;
 138 
 139     Display *display = XOpenDisplay(NULL);
 140     if (display == NULL) {
 141         return com_sun_glass_ui_gtk_GtkApplication_QUERY_NO_DISPLAY;
 142     }
 143     XCloseDisplay(display);
 144 
 145     return com_sun_glass_ui_gtk_GtkApplication_QUERY_USE_CURRENT;
 146 }
 147 
 148 /*
 149  * Class:     com_sun_glass_ui_gtk_GtkApplication
 150  * Method:    _init
 151  * Signature: ()V
 152  */
 153 JNIEXPORT void JNICALL Java_com_sun_glass_ui_gtk_GtkApplication__1init
 154   (JNIEnv * env, jobject obj, jlong handler, jboolean _disableGrab)
 155 {
 156     (void)obj;
 157 
 158     mainEnv = env;
 159     process_events_prev = (GdkEventFunc) handler;
 160     disableGrab = (gboolean) _disableGrab;
 161 
 162     glass_gdk_x11_display_set_window_scale(gdk_display_get_default(), 1);
 163     gdk_event_handler_set(process_events, NULL, NULL);
 164 
 165     GdkScreen *default_gdk_screen = gdk_screen_get_default();


< prev index next >