From e2e8e5258f79a25fdc6dad9392e290a843fe3627 Mon Sep 17 00:00:00 2001 From: Kenneth Russel Date: Fri, 7 Dec 2001 08:30:31 +0000 Subject: Removed link-time dependency on JAWT to solve PATH problems --- CNativeCode/jawt_misc.c | 42 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) (limited to 'CNativeCode/jawt_misc.c') diff --git a/CNativeCode/jawt_misc.c b/CNativeCode/jawt_misc.c index ec71954..f906ba4 100644 --- a/CNativeCode/jawt_misc.c +++ b/CNativeCode/jawt_misc.c @@ -4,6 +4,9 @@ #include "jawt_misc.h" +typedef jboolean JNICALL JAWT_GetAWT_fn_t(JNIEnv* env, JAWT* awt); +static JAWT_GetAWT_fn_t *JAWT_GetAWT_fn = NULL; + static JAWT _awt ; static jboolean _awt_init = JNI_FALSE ; @@ -13,6 +16,40 @@ static int gds = 0; static jboolean jawtdebug = JNI_FALSE; +jboolean LIBAPIENTRY +jawt_init (char* jawtLibName) +{ +#ifdef _WIN32_ + HMODULE lib = LoadLibrary(jawtLibName); + if (lib == NULL) { + printf(" jawt_init: LoadLibrary failed\n"); + return JNI_FALSE; + } + JAWT_GetAWT_fn = (JAWT_GetAWT_fn_t*) GetProcAddress(lib, "_JAWT_GetAWT@8"); + if (JAWT_GetAWT_fn == NULL) { + printf(" jawt_init: GetProcAddress failed\n"); + return JNI_FALSE; + } + return JNI_TRUE; +#endif + +#ifdef _X11_ + void* lib = dlopen(jawtLibName, RTLD_LAZY | RTLD_GLOBAL); + if (lib == NULL) { + printf(" jawt_init: dlopen failed\n"); + return JNI_FALSE; + } + JAWT_GetAWT_fn = (JAWT_GetAWT_fn_t*) dlsym(lib, "JAWT_GetAWT"); + if (JAWT_GetAWT_fn == NULL) { + printf(" jawt_init: dlsym failed\n"); + return JNI_FALSE; + } + return JNI_TRUE; +#endif + + return JNI_FALSE; +} + jboolean LIBAPIENTRY jawt_create_offscreen (JNIEnv *env, JAWTDataHolder **ppJData, jboolean verbose) { @@ -130,7 +167,10 @@ jawt_open (JNIEnv *env, jobject component, JAWTDataHolder *pJData, jboolean verb if(_awt_init==JNI_FALSE) { _awt.version = JAWT_VERSION_1_3; - pJData->result = JAWT_GetAWT(env, &_awt); + if (JAWT_GetAWT_fn == NULL) { + return JNI_FALSE; + } + pJData->result = (*JAWT_GetAWT_fn)(env, &_awt); if(pJData->result==JNI_TRUE) { if(verbose) -- cgit v1.2.3