src/solaris/native/sun/xawt/awt_Desktop.c

Print this page

        

@@ -22,66 +22,17 @@
  * or visit www.oracle.com if you need additional information or have any
  * questions.
  */
 
 #include <jni.h>
-#include <dlfcn.h>
+#include "gtk2_interface.h"
 
-typedef int gboolean;
-
-typedef gboolean (GNOME_URL_SHOW_TYPE)(const char *, void **);
-typedef gboolean (GNOME_VFS_INIT_TYPE)(void);
-
-GNOME_URL_SHOW_TYPE *gnome_url_show;
-GNOME_VFS_INIT_TYPE *gnome_vfs_init;
-
 int init(){
-    void *vfs_handle;
-    void *gnome_handle;
-    const char *errmsg;
-
-    vfs_handle = dlopen("libgnomevfs-2.so.0", RTLD_LAZY);
-    if (vfs_handle == NULL) {
-#ifdef INTERNAL_BUILD
-        fprintf(stderr, "can not load libgnomevfs-2.so\n");
-#endif
-        return 0;
+    if (gtk2_load() && gtk2_show_uri_load()) {
+        return 1;
     }
-    dlerror(); /* Clear errors */
-    gnome_vfs_init = (GNOME_VFS_INIT_TYPE*)dlsym(vfs_handle, "gnome_vfs_init");
-    if (gnome_vfs_init == NULL){
-#ifdef INTERNAL_BUILD
-        fprintf(stderr, "dlsym( gnome_vfs_init) returned NULL\n");
-#endif
         return 0;
-    }
-    if ((errmsg = dlerror()) != NULL) {
-#ifdef INTERNAL_BUILD
-        fprintf(stderr, "can not find symbol gnome_vfs_init %s \n", errmsg);
-#endif
-        return 0;
-    }
-    // call gonme_vfs_init()
-    (*gnome_vfs_init)();
-
-    gnome_handle = dlopen("libgnome-2.so.0", RTLD_LAZY);
-    if (gnome_handle == NULL) {
-#ifdef INTERNAL_BUILD
-        fprintf(stderr, "can not load libgnome-2.so\n");
-#endif
-        return 0;
-    }
-    dlerror(); /* Clear errors */
-    gnome_url_show = (GNOME_URL_SHOW_TYPE*)dlsym(gnome_handle, "gnome_url_show");
-    if ((errmsg = dlerror()) != NULL) {
-#ifdef INTERNAL_BUILD
-        fprintf(stderr, "can not find symble gnome_url_show\n");
-#endif
-        return 0;
-    }
-
-    return 1;
 }
 
 /*
  * Class:     sun_awt_X11_XDesktopPeer
  * Method:    init

@@ -101,18 +52,19 @@
  */
 JNIEXPORT jboolean JNICALL Java_sun_awt_X11_XDesktopPeer_gnome_1url_1show
   (JNIEnv *env, jobject obj, jbyteArray url_j)
 {
     gboolean success;
-    const char* url_c;
+    const gchar* url_c;
 
-    if (gnome_url_show == NULL) {
-        return JNI_FALSE;
-    }
-
     url_c = (char*)(*env)->GetByteArrayElements(env, url_j, NULL);
-    // call gnome_url_show(const char* , GError**)
-    success = (*gnome_url_show)(url_c, NULL);
+
+    fp_gdk_threads_enter();
+
+    success = fp_gtk_show_uri(NULL, url_c, GDK_CURRENT_TIME, NULL);
+
+    fp_gdk_threads_leave();
+
     (*env)->ReleaseByteArrayElements(env, url_j, (signed char*)url_c, 0);
 
     return success ? JNI_TRUE : JNI_FALSE;
 }