diff -r 378aa3362868 -r 320a714614e9 jdk/src/solaris/native/sun/awt/gtk2_interface.c --- 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 #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) {