< prev index next >

src/java.desktop/unix/native/libawt_xawt/java2d/x11/XRBackendNative.c

Print this page
rev 14298 : 8155236: AIX: fix dectection of Xrender extension

*** 1,7 **** /* ! * Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. Oracle designates this --- 1,7 ---- /* ! * Copyright (c) 2010, 2016, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. Oracle designates this
*** 70,81 **** } XRadialGradient; #endif #include <dlfcn.h> ! #if defined(__solaris__) || defined(_AIX) ! /* Solaris 10 and AIX will not have these symbols at runtime */ typedef Picture (*XRenderCreateLinearGradientFuncType) (Display *dpy, const XLinearGradient *gradient, const XFixed *stops, --- 70,81 ---- } XRadialGradient; #endif #include <dlfcn.h> ! #if defined(__solaris__) ! /* Solaris 10 will not have these symbols at compile time */ typedef Picture (*XRenderCreateLinearGradientFuncType) (Display *dpy, const XLinearGradient *gradient, const XFixed *stops,
*** 145,155 **** if (!XQueryExtension(awt_display, "RENDER", &major_opcode, &first_event, &first_error)) { return JNI_FALSE; } ! #if defined(__solaris__) || defined(_AIX) xrenderlib = dlopen("libXrender.so",RTLD_GLOBAL|RTLD_LAZY); if (xrenderlib != NULL) { XRenderCreateLinearGradientFunc = (XRenderCreateLinearGradientFuncType) --- 145,170 ---- if (!XQueryExtension(awt_display, "RENDER", &major_opcode, &first_event, &first_error)) { return JNI_FALSE; } ! #if defined(_AIX) ! // On AIX we have to use a special syntax because the shared libraries are packed in ! // multi-architecture archives. We first try to load the system default libXrender ! // which is contained in the 'X11.base.lib' fileset starting with AIX 6.1 ! xrenderlib = dlopen("libXrender.a(shr_64.o)", RTLD_GLOBAL | RTLD_LAZY | RTLD_MEMBER); ! if (xrenderlib == NULL) { ! // If the latter wasn't successful, we also try to load the version under /opt/freeware ! // This may be downloaded from the "AIX Toolbox for Linux Applications" even for AIX 5.3 ! xrenderlib = dlopen("libXrender.a(libXrender.so.0)", RTLD_GLOBAL | RTLD_LAZY | RTLD_MEMBER); ! } ! if (xrenderlib != NULL) { ! dlclose(xrenderlib); ! } else { ! available = JNI_FALSE; ! } ! #elif defined(__solaris__) xrenderlib = dlopen("libXrender.so",RTLD_GLOBAL|RTLD_LAZY); if (xrenderlib != NULL) { XRenderCreateLinearGradientFunc = (XRenderCreateLinearGradientFuncType)
< prev index next >