< prev index next >

src/java.desktop/unix/native/libawt_xawt/awt/sun_awt_X11_GtkFileDialogPeer.c

Print this page




  63     DASSERT(setWindowMethodID != NULL);
  64 }
  65 
  66 static gboolean filenameFilterCallback(const GtkFileFilterInfo * filter_info, gpointer obj)
  67 {
  68     JNIEnv *env;
  69     jstring filename;
  70 
  71     env = (JNIEnv *) JNU_GetEnv(jvm, JNI_VERSION_1_2);
  72 
  73     filename = (*env)->NewStringUTF(env, filter_info->filename);
  74     JNU_CHECK_EXCEPTION_RETURN(env, FALSE);
  75 
  76     return (*env)->CallBooleanMethod(env, obj, filenameFilterCallbackMethodID,
  77             filename);
  78 }
  79 
  80 static void quit(JNIEnv * env, jobject jpeer, gboolean isSignalHandler)
  81 {
  82     jthrowable pendingException;
  83     if (pendingException = (*env)->ExceptionOccurred(env)) {
  84          (*env)->ExceptionClear(env);
  85     }
  86 
  87     GtkWidget * dialog = (GtkWidget*)jlong_to_ptr(
  88             (*env)->GetLongField(env, jpeer, widgetFieldID));
  89 
  90     if (dialog != NULL)
  91     {
  92         // Callbacks from GTK signals are made within the GTK lock
  93         // So, within a signal handler there is no need to call
  94         // gdk_threads_enter() / gtk->gdk_threads_leave()
  95         if (!isSignalHandler) {
  96             gtk->gdk_threads_enter();
  97         }
  98 
  99         gtk->gtk_widget_hide (dialog);
 100         gtk->gtk_widget_destroy (dialog);
 101 
 102         gtk->gtk_main_quit ();
 103 




  63     DASSERT(setWindowMethodID != NULL);
  64 }
  65 
  66 static gboolean filenameFilterCallback(const GtkFileFilterInfo * filter_info, gpointer obj)
  67 {
  68     JNIEnv *env;
  69     jstring filename;
  70 
  71     env = (JNIEnv *) JNU_GetEnv(jvm, JNI_VERSION_1_2);
  72 
  73     filename = (*env)->NewStringUTF(env, filter_info->filename);
  74     JNU_CHECK_EXCEPTION_RETURN(env, FALSE);
  75 
  76     return (*env)->CallBooleanMethod(env, obj, filenameFilterCallbackMethodID,
  77             filename);
  78 }
  79 
  80 static void quit(JNIEnv * env, jobject jpeer, gboolean isSignalHandler)
  81 {
  82     jthrowable pendingException;
  83     if ((pendingException = (*env)->ExceptionOccurred(env))) {
  84          (*env)->ExceptionClear(env);
  85     }
  86 
  87     GtkWidget * dialog = (GtkWidget*)jlong_to_ptr(
  88             (*env)->GetLongField(env, jpeer, widgetFieldID));
  89 
  90     if (dialog != NULL)
  91     {
  92         // Callbacks from GTK signals are made within the GTK lock
  93         // So, within a signal handler there is no need to call
  94         // gdk_threads_enter() / gtk->gdk_threads_leave()
  95         if (!isSignalHandler) {
  96             gtk->gdk_threads_enter();
  97         }
  98 
  99         gtk->gtk_widget_hide (dialog);
 100         gtk->gtk_widget_destroy (dialog);
 101 
 102         gtk->gtk_main_quit ();
 103 


< prev index next >