/* * This is called by awt_ImagingLib.initLib() to figure out if we * can use the VIS version of medialib */ mlib_status awt_getImagingLib(JNIEnv *env, mlibFnS_t *sMlibFns, mlibSysFnS_t *sMlibSysFns) { int status; jstring jstr = NULL; mlibFnS_t *mptr; void *(*vPtr)(); int (*intPtr)(); mlib_status (*fPtr)(); int i; void *handle = NULL; mlibSysFnS_t tempSysFns; static int s_timeIt = 0; static int s_verbose = 1; mlib_status ret = MLIB_SUCCESS; struct utsname name; /* * Find out the machine name. If it is an SUN ultra, we * can use the vis library */ if ((uname(&name) >= 0) && (getenv("NO_VIS") == NULL) && (strncmp(name.machine, "sun4u" , 5) == 0) || ((strncmp(name.machine, "sun4v" , 5) == 0) && (getenv("USE_VIS_ON_SUN4V") != NULL))) { handle = dlopen(JNI_LIB_NAME("mlib_image_v"), RTLD_LAZY); } if (handle == NULL) { handle = dlopen(JNI_LIB_NAME("mlib_image"), RTLD_LAZY); } if (handle == NULL) { if (s_timeIt || s_verbose) { printf ("error in dlopen: %s", dlerror()); } return MLIB_FAILURE; } /* So, if we are here, then either vis or generic version of * medialib library was sucessfuly loaded. * Let's try to initialize handlers... */ if ((tempSysFns.createFP = (MlibCreateFP_t)dlsym(handle, "j2d_mlib_ImageCreate")) == NULL) { if (s_timeIt) { printf ("error in dlsym: %s", dlerror()); } ret = MLIB_FAILURE; } if (ret == MLIB_SUCCESS) { if ((tempSysFns.createStructFP = (MlibCreateStructFP_t)dlsym(handle, "j2d_mlib_ImageCreateStruct")) == NULL) { if (s_timeIt) { printf ("error in dlsym: %s", dlerror()); } ret = MLIB_FAILURE; } } if (ret == MLIB_SUCCESS) { if ((tempSysFns.deleteImageFP = (MlibDeleteFP_t)dlsym(handle, "j2d_mlib_ImageDelete")) == NULL) { if (s_timeIt) { printf ("error in dlsym: %s", dlerror()); } ret = MLIB_FAILURE; } } /* Set the system functions */ if (ret == MLIB_SUCCESS) { *sMlibSysFns = tempSysFns; } /* Loop through all of the fns and load them from the next library */ mptr = sMlibFns; i = 0; while ((ret == MLIB_SUCCESS) && (mptr[i].fname != NULL)) { fPtr = (mlib_status (*)())dlsym(handle, mptr[i].fname); if (fPtr != NULL) { mptr[i].fptr = fPtr; } else { ret = MLIB_FAILURE; } i++; } if (ret != MLIB_SUCCESS) { dlclose(handle); } return ret; }
#if defined(__linux__) || defined(MACOSX) #include <sys/socket.h> #endif static Bool (*compositeQueryExtension) (Display*, int*, int*); static Status (*compositeQueryVersion) (Display*, int*, int*); static Window (*compositeGetOverlayWindow) (Display *, Window); extern struct X11GraphicsConfigIDs x11GraphicsConfigIDs; static jint * masks; static jint num_buttons; static void *xCompositeHandle; static const char* XCOMPOSITE = JNI_LIB_NAME("Xcomposite"); static const char* XCOMPOSITE_VERSIONED = VERSIONED_JNI_LIB_NAME("Xcomposite", "1"); static Bool checkXCompositeFunctions(void) { return (compositeQueryExtension != NULL && compositeQueryVersion != NULL && compositeGetOverlayWindow != NULL); } static void initXCompositeFunctions(void) { if (xCompositeHandle == NULL) { xCompositeHandle = dlopen(XCOMPOSITE, RTLD_LAZY | RTLD_GLOBAL); if (xCompositeHandle == NULL) { xCompositeHandle = dlopen(XCOMPOSITE_VERSIONED, RTLD_LAZY | RTLD_GLOBAL); }
/* * Initialize library functions. * // REMIND : move tab , add dlClose before return */ JNIEXPORT jboolean JNICALL Java_sun_print_CUPSPrinter_initIDs(JNIEnv *env, jobject printObj) { void *handle = dlopen(VERSIONED_JNI_LIB_NAME("cups", "2"), RTLD_LAZY | RTLD_GLOBAL); if (handle == NULL) { handle = dlopen(JNI_LIB_NAME("cups"), RTLD_LAZY | RTLD_GLOBAL); if (handle == NULL) { return JNI_FALSE; } } j2d_cupsServer = (fn_cupsServer)dlsym(handle, "cupsServer"); if (j2d_cupsServer == NULL) { dlclose(handle); return JNI_FALSE; } j2d_ippPort = (fn_ippPort)dlsym(handle, "ippPort"); if (j2d_ippPort == NULL) { dlclose(handle); return JNI_FALSE; } j2d_httpConnect = (fn_httpConnect)dlsym(handle, "httpConnect"); if (j2d_httpConnect == NULL) { dlclose(handle); return JNI_FALSE; } j2d_httpClose = (fn_httpClose)dlsym(handle, "httpClose"); if (j2d_httpClose == NULL) { dlclose(handle); return JNI_FALSE; } j2d_cupsGetPPD = (fn_cupsGetPPD)dlsym(handle, "cupsGetPPD"); if (j2d_cupsGetPPD == NULL) { dlclose(handle); return JNI_FALSE; } j2d_cupsGetDest = (fn_cupsGetDest)dlsym(handle, "cupsGetDest"); if (j2d_cupsGetDest == NULL) { dlclose(handle); return JNI_FALSE; } j2d_cupsGetDests = (fn_cupsGetDests)dlsym(handle, "cupsGetDests"); if (j2d_cupsGetDests == NULL) { dlclose(handle); return JNI_FALSE; } j2d_cupsFreeDests = (fn_cupsFreeDests)dlsym(handle, "cupsFreeDests"); if (j2d_cupsFreeDests == NULL) { dlclose(handle); return JNI_FALSE; } j2d_ppdOpenFile = (fn_ppdOpenFile)dlsym(handle, "ppdOpenFile"); if (j2d_ppdOpenFile == NULL) { dlclose(handle); return JNI_FALSE; } j2d_ppdClose = (fn_ppdClose)dlsym(handle, "ppdClose"); if (j2d_ppdClose == NULL) { dlclose(handle); return JNI_FALSE; } j2d_ppdFindOption = (fn_ppdFindOption)dlsym(handle, "ppdFindOption"); if (j2d_ppdFindOption == NULL) { dlclose(handle); return JNI_FALSE; } j2d_ppdPageSize = (fn_ppdPageSize)dlsym(handle, "ppdPageSize"); if (j2d_ppdPageSize == NULL) { dlclose(handle); return JNI_FALSE; } return JNI_TRUE; }
} #else /* !__solaris__ && !__linux__ */ { /* Not implemented */ } #endif if (exec_path == NULL) { exec_path = FindExecName(argv[0]); } execname = exec_path; return exec_path; } /* --- Splash Screen shared library support --- */ static const char* SPLASHSCREEN_SO = JNI_LIB_NAME("splashscreen"); static void* hSplashLib = NULL; void* SplashProcAddress(const char* name) { if (!hSplashLib) { int ret; char jrePath[MAXPATHLEN]; char splashPath[MAXPATHLEN]; if (!GetJREPath(jrePath, sizeof(jrePath), GetArch(), JNI_FALSE)) { JLI_ReportErrorMessage(JRE_ERROR1); return NULL; } ret = JLI_Snprintf(splashPath, sizeof(splashPath), "%s/lib/%s/%s", jrePath, GetArch(), SPLASHSCREEN_SO);
jboolean cups_init() { void *handle = dlopen(VERSIONED_JNI_LIB_NAME("cups", "2"), RTLD_LAZY | RTLD_GLOBAL); if (handle == NULL) { handle = dlopen(JNI_LIB_NAME("cups"), RTLD_LAZY | RTLD_GLOBAL); if (handle == NULL) { return JNI_FALSE; } } j2d_cupsServer = (fn_cupsServer)dlsym(handle, "cupsServer"); if (j2d_cupsServer == NULL) { dlclose(handle); return JNI_FALSE; } j2d_ippPort = (fn_ippPort)dlsym(handle, "ippPort"); if (j2d_ippPort == NULL) { dlclose(handle); return JNI_FALSE; } j2d_httpConnect = (fn_httpConnect)dlsym(handle, "httpConnect"); if (j2d_httpConnect == NULL) { dlclose(handle); return JNI_FALSE; } j2d_httpClose = (fn_httpClose)dlsym(handle, "httpClose"); if (j2d_httpClose == NULL) { dlclose(handle); return JNI_FALSE; } j2d_cupsGetPPD = (fn_cupsGetPPD)dlsym(handle, "cupsGetPPD"); if (j2d_cupsGetPPD == NULL) { dlclose(handle); return JNI_FALSE; } j2d_ppdOpenFile = (fn_ppdOpenFile)dlsym(handle, "ppdOpenFile"); if (j2d_ppdOpenFile == NULL) { dlclose(handle); return JNI_FALSE; } j2d_ppdClose = (fn_ppdClose)dlsym(handle, "ppdClose"); if (j2d_ppdClose == NULL) { dlclose(handle); return JNI_FALSE; } j2d_ppdFindOption = (fn_ppdFindOption)dlsym(handle, "ppdFindOption"); if (j2d_ppdFindOption == NULL) { dlclose(handle); return JNI_FALSE; } j2d_ppdPageSize = (fn_ppdPageSize)dlsym(handle, "ppdPageSize"); if (j2d_ppdPageSize == NULL) { dlclose(handle); return JNI_FALSE; } return JNI_TRUE; }