--- a/jdk/src/solaris/native/sun/awt/gtk2_interface.c Tue Mar 06 10:25:45 2012 +0800
+++ b/jdk/src/solaris/native/sun/awt/gtk2_interface.c Tue Mar 06 20:34:38 2012 +0000
@@ -30,9 +30,12 @@
#include <string.h>
#include "gtk2_interface.h"
#include "java_awt_Transparency.h"
+#include "jvm_md.h"
-#define GTK2_LIB "libgtk-x11-2.0.so.0"
-#define GTHREAD_LIB "libgthread-2.0.so.0"
+#define GTK2_LIB_VERSIONED VERSIONED_JNI_LIB_NAME("gtk-x11-2.0", "0")
+#define GTK2_LIB JNI_LIB_NAME("gtk-x11-2.0")
+#define GTHREAD_LIB_VERSIONED VERSIONED_JNI_LIB_NAME("gthread-2.0", "0")
+#define GTHREAD_LIB JNI_LIB_NAME("gthread-2.0")
#define G_TYPE_INVALID G_TYPE_MAKE_FUNDAMENTAL (0)
#define G_TYPE_NONE G_TYPE_MAKE_FUNDAMENTAL (1)
@@ -414,9 +417,12 @@
void *lib = NULL;
gboolean result = FALSE;
- lib = dlopen(GTK2_LIB, RTLD_LAZY | RTLD_LOCAL);
+ lib = dlopen(GTK2_LIB_VERSIONED, RTLD_LAZY | RTLD_LOCAL);
if (lib == NULL) {
- return FALSE;
+ lib = dlopen(GTK2_LIB, RTLD_LAZY | RTLD_LOCAL);
+ if (lib == NULL) {
+ return FALSE;
+ }
}
fp_gtk_check_version = dlsym(lib, "gtk_check_version");
@@ -470,11 +476,19 @@
int (*io_handler)();
char *gtk_modules_env;
- gtk2_libhandle = dlopen(GTK2_LIB, RTLD_LAZY | RTLD_LOCAL);
- gthread_libhandle = dlopen(GTHREAD_LIB, RTLD_LAZY | RTLD_LOCAL);
+ gtk2_libhandle = dlopen(GTK2_LIB_VERSIONED, RTLD_LAZY | RTLD_LOCAL);
+ if (gtk2_libhandle == NULL) {
+ gtk2_libhandle = dlopen(GTK2_LIB, RTLD_LAZY | RTLD_LOCAL);
+ if (gtk2_libhandle == NULL)
+ return FALSE;
+ }
- if (gtk2_libhandle == NULL || gthread_libhandle == NULL)
- return FALSE;
+ gthread_libhandle = dlopen(GTHREAD_LIB_VERSIONED, RTLD_LAZY | RTLD_LOCAL);
+ if (gthread_libhandle == NULL) {
+ gthread_libhandle = dlopen(GTHREAD_LIB, RTLD_LAZY | RTLD_LOCAL);
+ if (gthread_libhandle == NULL)
+ return FALSE;
+ }
if (setjmp(j) == 0)
{