< prev index next >

src/java.desktop/unix/native/libawt_xawt/awt/awt_GraphicsEnv.c

Print this page

        

@@ -21,26 +21,29 @@
  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  * or visit www.oracle.com if you need additional information or have any
  * questions.
  */
 
+#ifdef HEADLESS
+    #error This file should not be included in headless library
+#endif
+
 #include "jni_util.h"
 #include "awt_p.h"
 #include "awt.h"
 #include "color.h"
 #include <java_awt_DisplayMode.h>
 #include <sun_awt_X11GraphicsEnvironment.h>
 #include <sun_awt_X11GraphicsDevice.h>
 #include <sun_awt_X11GraphicsConfig.h>
-#ifndef HEADLESS
+
 #include <X11/extensions/Xdbe.h>
 #include <X11/XKBlib.h>
 #ifndef NO_XRANDR
 #include <X11/extensions/Xrandr.h>
 #endif
 #include "GLXGraphicsConfig.h"
-#endif /* !HEADLESS */
 
 #include <jni.h>
 #include <jni_util.h>
 #include <jvm.h>
 #include <jvm_md.h>

@@ -52,28 +55,20 @@
 #include "awt_util.h"
 #include "gdefs.h"
 #include <dlfcn.h>
 #include "Trace.h"
 
-#ifndef HEADLESS
-
 int awt_numScreens;     /* Xinerama-aware number of screens */
 
 AwtScreenDataPtr x11Screens;
 
 /*
  * Set in initDisplay() to indicate whether we should attempt to initialize
  * GLX for the default configuration.
  */
 static jboolean glxRequested = JNI_FALSE;
 
-#endif /* !HEADLESS */
-
-#ifdef HEADLESS
-#define Display void
-#endif /* HEADLESS */
-
 Display *awt_display;
 
 jclass tkClass = NULL;
 jmethodID awtLockMID = NULL;
 jmethodID awtUnlockMID = NULL;

@@ -90,13 +85,11 @@
         if (method_id == NULL) return NULL; \
     } while (0)
 
 struct X11GraphicsConfigIDs x11GraphicsConfigIDs;
 
-#ifndef HEADLESS
 int awtCreateX11Colormap(AwtGraphicsConfigDataPtr adata);
-#endif /* HEADLESS */
 
 static char *x11GraphicsConfigClassName = "sun/awt/X11GraphicsConfig";
 
 /* AWT and Xinerama
  *

@@ -132,12 +125,10 @@
     CHECK_NULL(x11GraphicsConfigIDs.aData);
     x11GraphicsConfigIDs.bitsPerPixel = (*env)->GetFieldID (env, cls, "bitsPerPixel", "I");
     CHECK_NULL(x11GraphicsConfigIDs.bitsPerPixel);
 }
 
-#ifndef HEADLESS
-
 /*
  * XIOErrorHandler
  */
 static int xioerror_handler(Display *disp)
 {

@@ -403,19 +394,12 @@
                         &major_opcode, &first_event, &first_error))
     {
         DTRACE_PRINTLN("RENDER extension available");
         xrenderLibHandle = dlopen("libXrender.so.1", RTLD_LAZY | RTLD_GLOBAL);
 
-#ifdef MACOSX
-#define XRENDER_LIB "/usr/X11/lib/libXrender.dylib"
-#else
-#define XRENDER_LIB "libXrender.so"
-#endif
-
         if (xrenderLibHandle == NULL) {
-            xrenderLibHandle = dlopen(XRENDER_LIB,
-                                      RTLD_LAZY | RTLD_GLOBAL);
+            xrenderLibHandle = dlopen("libXrender.so", RTLD_LAZY | RTLD_GLOBAL);
         }
 
 #if defined(__solaris__)
         if (xrenderLibHandle == NULL) {
             xrenderLibHandle = dlopen("/usr/lib/libXrender.so.1",

@@ -603,12 +587,10 @@
        XFree (pVI1sg);
 
     AWT_UNLOCK ();
 }
 
-#ifndef HEADLESS
-
 /*
  * Checks if Xinerama is running and perform Xinerama-related initialization.
  */
 static void xineramaInit(void) {
     char* XinExtName = "XINERAMA";

@@ -666,11 +648,10 @@
         }
     } else {
         DTRACE_PRINTLN1("\ncouldn't open shared library: %s\n", dlerror());
     }
 }
-#endif /* HEADLESS */
 
 Display *
 awt_init_Display(JNIEnv *env, jobject this)
 {
     jclass klass;

@@ -743,115 +724,88 @@
         JNU_CHECK_EXCEPTION_RETURN(env, NULL);
     }
 
     return dpy;
 }
-#endif /* !HEADLESS */
 
 /*
  * Class:     sun_awt_X11GraphicsEnvironment
  * Method:    getDefaultScreenNum
  * Signature: ()I
  */
 JNIEXPORT jint JNICALL
 Java_sun_awt_X11GraphicsEnvironment_getDefaultScreenNum(
 JNIEnv *env, jobject this)
 {
-#ifdef HEADLESS
-    return (jint)0;
-#else
     return DefaultScreen(awt_display);
-#endif /* !HEADLESS */
 }
 
-#ifndef HEADLESS
 static void ensureConfigsInited(JNIEnv* env, int screen) {
    if (x11Screens[screen].numConfigs == 0) {
        if (env == NULL) {
            env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2);
        }
        getAllConfigs (env, screen, &(x11Screens[screen]));
     }
 }
-#endif
 
-#ifdef HEADLESS
-void* getDefaultConfig(int screen) {
-    return NULL;
-}
-#else
 AwtGraphicsConfigDataPtr
 getDefaultConfig(int screen) {
     ensureConfigsInited(NULL, screen);
     return x11Screens[screen].defaultConfig;
 }
-#endif /* !HEADLESS */
 
 /*
  * Class:     sun_awt_X11GraphicsEnvironment
  * Method:    initDisplay
  * Signature: (Z)V
  */
 JNIEXPORT void JNICALL
 Java_sun_awt_X11GraphicsEnvironment_initDisplay(JNIEnv *env, jobject this,
                                                 jboolean glxReq)
 {
-#ifndef HEADLESS
     glxRequested = glxReq;
     (void) awt_init_Display(env, this);
-#endif /* !HEADLESS */
 }
 
 /*
  * Class:     sun_awt_X11GraphicsEnvironment
  * Method:    initGLX
  * Signature: ()Z
  */
 JNIEXPORT jboolean JNICALL
 Java_sun_awt_X11GraphicsEnvironment_initGLX(JNIEnv *env, jclass x11ge)
 {
-#ifndef HEADLESS
     jboolean glxAvailable;
 
     AWT_LOCK();
     glxAvailable = GLXGC_IsGLXAvailable();
     AWT_UNLOCK();
 
     return glxAvailable;
-#else
-    return JNI_FALSE;
-#endif /* !HEADLESS */
 }
 
 /*
  * Class:     sun_awt_X11GraphicsEnvironment
  * Method:    getNumScreens
  * Signature: ()I
  */
 JNIEXPORT jint JNICALL
 Java_sun_awt_X11GraphicsEnvironment_getNumScreens(JNIEnv *env, jobject this)
 {
-#ifdef HEADLESS
-    return (jint)0;
-#else
     return awt_numScreens;
-#endif /* !HEADLESS */
 }
 
 /*
  * Class:     sun_awt_X11GraphicsDevice
  * Method:    getDisplay
  * Signature: ()J
  */
 JNIEXPORT jlong JNICALL
 Java_sun_awt_X11GraphicsDevice_getDisplay(JNIEnv *env, jobject this)
 {
-#ifdef HEADLESS
-    return NULL;
-#else
     return ptr_to_jlong(awt_display);
-#endif /* !HEADLESS */
 }
 
 #ifdef MITSHM
 
 static jint canUseShmExt = UNSET_MITSHM;

@@ -974,15 +928,11 @@
  */
 JNIEXPORT jstring JNICALL
 Java_sun_awt_X11GraphicsEnvironment_getDisplayString
   (JNIEnv *env, jobject this)
 {
-#ifdef HEADLESS
-    return (jstring)NULL;
-#else
     return (*env)->NewStringUTF(env, DisplayString(awt_display));
-#endif /* HEADLESS */
 }
 
 
 /*
  * Class:     sun_awt_X11GraphicsDevice

@@ -991,16 +941,12 @@
  */
 JNIEXPORT jint JNICALL
 Java_sun_awt_X11GraphicsDevice_getNumConfigs(
 JNIEnv *env, jobject this, jint screen)
 {
-#ifdef HEADLESS
-    return (jint)0;
-#else
     ensureConfigsInited(env, screen);
     return x11Screens[screen].numConfigs;
-#endif /* !HEADLESS */
 }
 
 /*
  * Class:     sun_awt_X11GraphicsDevice
  * Method:    getConfigVisualId

@@ -1008,22 +954,18 @@
  */
 JNIEXPORT jint JNICALL
 Java_sun_awt_X11GraphicsDevice_getConfigVisualId(
 JNIEnv *env, jobject this, jint index, jint screen)
 {
-#ifdef HEADLESS
-    return (jint)0;
-#else
     int visNum;
 
     ensureConfigsInited(env, screen);
     if (index == 0) {
         return ((jint)x11Screens[screen].defaultConfig->awt_visInfo.visualid);
     } else {
         return ((jint)x11Screens[screen].configs[index]->awt_visInfo.visualid);
     }
-#endif /* !HEADLESS */
 }
 
 /*
  * Class:     sun_awt_X11GraphicsDevice
  * Method:    getConfigDepth

@@ -1031,22 +973,18 @@
  */
 JNIEXPORT jint JNICALL
 Java_sun_awt_X11GraphicsDevice_getConfigDepth(
 JNIEnv *env, jobject this, jint index, jint screen)
 {
-#ifdef HEADLESS
-    return (jint)0;
-#else
     int visNum;
 
     ensureConfigsInited(env, screen);
     if (index == 0) {
         return ((jint)x11Screens[screen].defaultConfig->awt_visInfo.depth);
     } else {
         return ((jint)x11Screens[screen].configs[index]->awt_visInfo.depth);
     }
-#endif /* !HEADLESS */
 }
 
 /*
  * Class:     sun_awt_X11GraphicsDevice
  * Method:    getConfigColormap

@@ -1054,22 +992,18 @@
  */
 JNIEXPORT jint JNICALL
 Java_sun_awt_X11GraphicsDevice_getConfigColormap(
 JNIEnv *env, jobject this, jint index, jint screen)
 {
-#ifdef HEADLESS
-    return (jint)0;
-#else
     int visNum;
 
     ensureConfigsInited(env, screen);
     if (index == 0) {
         return ((jint)x11Screens[screen].defaultConfig->awt_cmap);
     } else {
         return ((jint)x11Screens[screen].configs[index]->awt_cmap);
     }
-#endif /* !HEADLESS */
 }
 
 /*
  * Class:     sun_awt_X11GraphicsDevice
  * Method:    resetNativeData

@@ -1077,11 +1011,10 @@
  */
 JNIEXPORT void JNICALL
 Java_sun_awt_X11GraphicsDevice_resetNativeData
     (JNIEnv *env, jclass x11gd, jint screen)
 {
-#ifndef HEADLESS
     /*
      * Reset references to the various configs; the actual native config data
      * will be free'd later by the Disposer mechanism when the Java-level
      * X11GraphicsConfig objects go away.  By setting these values to NULL,
      * we ensure that they will be reinitialized as necessary (for example,

@@ -1091,11 +1024,10 @@
         free(x11Screens[screen].configs);
         x11Screens[screen].configs = NULL;
     }
     x11Screens[screen].defaultConfig = NULL;
     x11Screens[screen].numConfigs = 0;
-#endif /* !HEADLESS */
 }
 
 /*
  * Class:     sun_awt_X11GraphicsConfig
  * Method:    dispose

@@ -1103,11 +1035,10 @@
  */
 JNIEXPORT void JNICALL
 Java_sun_awt_X11GraphicsConfig_dispose
     (JNIEnv *env, jclass x11gc, jlong configData)
 {
-#ifndef HEADLESS
     AwtGraphicsConfigDataPtr aData = (AwtGraphicsConfigDataPtr)
         jlong_to_ptr(configData);
 
     if (aData == NULL) {
         return;

@@ -1145,11 +1076,10 @@
                                    "disposeGraphicsConfig", "(J)V",
                                    ptr_to_jlong(aData->glxInfo));
     }
 
     free(aData);
-#endif /* !HEADLESS */
 }
 
 /*
  * Class:     sun_awt_X11GraphicsConfig
  * Method:    getXResolution

@@ -1157,16 +1087,12 @@
  */
 JNIEXPORT jdouble JNICALL
 Java_sun_awt_X11GraphicsConfig_getXResolution(
 JNIEnv *env, jobject this, jint screen)
 {
-#ifdef HEADLESS
-    return (jdouble)0;
-#else
     return ((DisplayWidth(awt_display, screen) * 25.4) /
             DisplayWidthMM(awt_display, screen));
-#endif /* !HEADLESS */
 }
 
 /*
  * Class:     sun_awt_X11GraphicsConfig
  * Method:    getYResolution

@@ -1174,16 +1100,12 @@
  */
 JNIEXPORT jdouble JNICALL
 Java_sun_awt_X11GraphicsConfig_getYResolution(
 JNIEnv *env, jobject this, jint screen)
 {
-#ifdef HEADLESS
-    return (jdouble)0;
-#else
     return ((DisplayHeight(awt_display, screen) * 25.4) /
             DisplayHeightMM(awt_display, screen));
-#endif /* !HEADLESS */
 }
 
 
 /*
  * Class:     sun_awt_X11GraphicsConfig

@@ -1192,20 +1114,16 @@
  */
 JNIEXPORT jint JNICALL
 Java_sun_awt_X11GraphicsConfig_getNumColors(
 JNIEnv *env, jobject this)
 {
-#ifdef HEADLESS
-    return (jint)0;
-#else
     AwtGraphicsConfigData *adata;
 
     adata = (AwtGraphicsConfigData *) JNU_GetLongFieldAsPtr(env, this,
                                               x11GraphicsConfigIDs.aData);
 
     return adata->awt_num_colors;
-#endif /* !HEADLESS */
 }
 
 /*
  * Class:     sun_awt_X11GraphicsConfig
  * Method:    init

@@ -1213,11 +1131,10 @@
  */
 JNIEXPORT void JNICALL
 Java_sun_awt_X11GraphicsConfig_init(
 JNIEnv *env, jobject this, jint visualNum, jint screen)
 {
-#ifndef HEADLESS
     AwtGraphicsConfigData *adata = NULL;
     AwtScreenData asd = x11Screens[screen];
     int i, n;
     int depth;
     XImage * tempImage;

@@ -1254,27 +1171,21 @@
                              depth, ZPixmap, 0, NULL, 1, 1, 32, 0);
     adata->pixelStride = (tempImage->bits_per_pixel + 7) / 8;
     (*env)->SetIntField(env, this, x11GraphicsConfigIDs.bitsPerPixel,
                         (jint)tempImage->bits_per_pixel);
     XDestroyImage(tempImage);
-#endif /* !HEADLESS */
 }
 
-
-
 /*
  * Class:     sun_awt_X11GraphicsConfig
  * Method:    makeColorModel
  * Signature: ()Ljava/awt/image/ColorModel
  */
 JNIEXPORT jobject JNICALL
 Java_sun_awt_X11GraphicsConfig_makeColorModel(
 JNIEnv *env, jobject this)
 {
-#ifdef HEADLESS
-    return NULL;
-#else
     AwtGraphicsConfigData *adata;
     jobject colorModel;
 
     /*
      * If awt is not locked yet, return null since the toolkit is not

@@ -1299,25 +1210,20 @@
                  ? NULL : awtJNI_GetColorModel (env, adata);
 
     AWT_UNLOCK ();
 
     return colorModel;
-#endif /* !HEADLESS */
 }
 
-
 /*
  * Class:     sun_awt_X11GraphicsConfig
  * Method:    getBounds
  * Signature: ()Ljava/awt/Rectangle
  */
 JNIEXPORT jobject JNICALL
 Java_sun_awt_X11GraphicsConfig_pGetBounds(JNIEnv *env, jobject this, jint screen)
 {
-#ifdef HEADLESS
-    return NULL;
-#else
     jclass clazz;
     jmethodID mid;
     jobject bounds = NULL;
     AwtGraphicsConfigDataPtr adata;
     int32_t locNumScr = 0;

@@ -1372,11 +1278,10 @@
         if ((*env)->ExceptionOccurred(env)) {
             return NULL;
         }
     }
     return bounds;
-#endif /* !HEADLESS */
 }
 
 /*
  * Class:     sun_awt_X11GraphicsConfig
  * Method:    createBackBuffer

@@ -1448,41 +1353,33 @@
  */
 JNIEXPORT jboolean JNICALL
 Java_sun_awt_X11GraphicsConfig_isTranslucencyCapable
     (JNIEnv *env, jobject this, jlong configData)
 {
-#ifdef HEADLESS
-    return JNI_FALSE;
-#else
     AwtGraphicsConfigDataPtr aData = (AwtGraphicsConfigDataPtr)jlong_to_ptr(configData);
     if (aData == NULL) {
         return JNI_FALSE;
     }
     return aData->isTranslucencySupported ? JNI_TRUE : JNI_FALSE;
-#endif
 }
 
 /*
  * Class:     sun_awt_X11GraphicsDevice
  * Method:    isDBESupported
  * Signature: ()Z
  */
 JNIEXPORT jboolean JNICALL
 Java_sun_awt_X11GraphicsDevice_isDBESupported(JNIEnv *env, jobject this)
 {
-#ifdef HEADLESS
-    return JNI_FALSE;
-#else
     int opcode = 0, firstEvent = 0, firstError = 0;
     jboolean ret;
 
     AWT_LOCK();
     ret = (jboolean)XQueryExtension(awt_display, "DOUBLE-BUFFER",
                                     &opcode, &firstEvent, &firstError);
     AWT_FLUSH_UNLOCK();
     return ret;
-#endif /* !HEADLESS */
 }
 
 /*
  * Class:     sun_awt_X11GraphicsDevice
  * Method:    getDoubleBufferVisuals

@@ -1490,11 +1387,10 @@
  */
 JNIEXPORT void JNICALL
 Java_sun_awt_X11GraphicsDevice_getDoubleBufferVisuals(JNIEnv *env,
     jobject this, jint screen)
 {
-#ifndef HEADLESS
     jclass clazz;
     jmethodID midAddVisual;
     Window rootWindow;
     int i, n = 1;
     XdbeScreenVisualInfo* visScreenInfo;

@@ -1525,11 +1421,10 @@
         (*env)->CallVoidMethod(env, this, midAddVisual, (visInfo[i]).visual);
         if ((*env)->ExceptionCheck(env)) {
             break;
         }
     }
-#endif /* !HEADLESS */
 }
 
 /*
  * Class:     sun_awt_X11GraphicsEnvironment
  * Method:    pRunningXinerama

@@ -1537,23 +1432,17 @@
  */
 JNIEXPORT jboolean JNICALL
 Java_sun_awt_X11GraphicsEnvironment_pRunningXinerama(JNIEnv *env,
     jobject this)
 {
-#ifdef HEADLESS
-    return JNI_FALSE;
-#else
     return usingXinerama ? JNI_TRUE : JNI_FALSE;
-#endif /* HEADLESS */
 }
 
 /**
  * Begin DisplayMode/FullScreen support
  */
 
-#ifndef HEADLESS
-
 #ifndef NO_XRANDR
 
 #define BIT_DEPTH_MULTI java_awt_DisplayMode_BIT_DEPTH_MULTI
 #define REFRESH_RATE_UNKNOWN java_awt_DisplayMode_REFRESH_RATE_UNKNOWN
 

@@ -1787,22 +1676,21 @@
     XSendEvent(awt_display, attr.root, False,
                SubstructureRedirectMask | SubstructureNotifyMask,
                &event);
     XSync(awt_display, False);
 }
-#endif /* !HEADLESS */
 
 /*
  * Class:     sun_awt_X11GraphicsDevice
  * Method:    initXrandrExtension
  * Signature: ()Z
  */
 JNIEXPORT jboolean JNICALL
 Java_sun_awt_X11GraphicsDevice_initXrandrExtension
     (JNIEnv *env, jclass x11gd)
 {
-#if defined(HEADLESS) || defined(NO_XRANDR)
+#if defined(NO_XRANDR)
     return JNI_FALSE;
 #else
     int opcode = 0, firstEvent = 0, firstError = 0;
     jboolean ret;
 

@@ -1813,11 +1701,11 @@
         ret = X11GD_InitXrandrFuncs(env);
     }
     AWT_FLUSH_UNLOCK();
 
     return ret;
-#endif /* HEADLESS */
+#endif /* NO_XRANDR */
 }
 
 /*
  * Class:     sun_awt_X11GraphicsDevice
  * Method:    getCurrentDisplayMode

@@ -1825,11 +1713,11 @@
  */
 JNIEXPORT jobject JNICALL
 Java_sun_awt_X11GraphicsDevice_getCurrentDisplayMode
     (JNIEnv* env, jclass x11gd, jint screen)
 {
-#if defined(HEADLESS) || defined(NO_XRANDR)
+#if defined(NO_XRANDR)
     return NULL;
 #else
     XRRScreenConfiguration *config;
     jobject displayMode = NULL;
 

@@ -1908,11 +1796,11 @@
     }
 
     AWT_FLUSH_UNLOCK();
 
     return displayMode;
-#endif /* HEADLESS */
+#endif /* NO_XRANDR */
 }
 
 /*
  * Class:     sun_awt_X11GraphicsDevice
  * Method:    enumDisplayModes

@@ -1921,11 +1809,11 @@
 JNIEXPORT void JNICALL
 Java_sun_awt_X11GraphicsDevice_enumDisplayModes
     (JNIEnv* env, jclass x11gd,
      jint screen, jobject arrayList)
 {
-#if !defined(HEADLESS) && !defined(NO_XRANDR)
+#if !defined(NO_XRANDR)
 
     AWT_LOCK();
 
     if (usingXinerama && XScreenCount(awt_display) > 0) {
         XRRScreenResources *res = awt_XRRGetScreenResources(awt_display,

@@ -1996,11 +1884,11 @@
             awt_XRRFreeScreenConfigInfo(config);
         }
     }
 
     AWT_FLUSH_UNLOCK();
-#endif /* !HEADLESS */
+#endif /* !NO_XRANDR */
 }
 
 /*
  * Class:     sun_awt_X11GraphicsDevice
  * Method:    configDisplayMode

@@ -2009,11 +1897,11 @@
 JNIEXPORT void JNICALL
 Java_sun_awt_X11GraphicsDevice_configDisplayMode
     (JNIEnv* env, jclass x11gd,
      jint screen, jint width, jint height, jint refreshRate)
 {
-#if !defined(HEADLESS) && !defined(NO_XRANDR)
+#if !defined(NO_XRANDR)
     jboolean success = JNI_FALSE;
     XRRScreenConfiguration *config;
     Drawable root;
     Rotation currentRotation = RR_Rotate_0;
 

@@ -2079,11 +1967,11 @@
     AWT_FLUSH_UNLOCK();
 
     if (!success && !(*env)->ExceptionCheck(env)) {
         JNU_ThrowInternalError(env, "Could not set display mode");
     }
-#endif /* !HEADLESS */
+#endif /* !NO_XRANDR */
 }
 
 /*
  * Class:     sun_awt_X11GraphicsDevice
  * Method:    enterFullScreenExclusive

@@ -2092,18 +1980,16 @@
 JNIEXPORT void JNICALL
 Java_sun_awt_X11GraphicsDevice_enterFullScreenExclusive
     (JNIEnv* env, jclass x11gd,
      jlong window)
 {
-#ifndef HEADLESS
     Window win = (Window)window;
 
     AWT_LOCK();
     XSync(awt_display, False); /* ensures window is visible first */
     X11GD_SetFullscreenMode(win, JNI_TRUE);
     AWT_UNLOCK();
-#endif /* !HEADLESS */
 }
 
 /*
  * Class:     sun_awt_X11GraphicsDevice
  * Method:    exitFullScreenExclusive

@@ -2112,17 +1998,15 @@
 JNIEXPORT void JNICALL
 Java_sun_awt_X11GraphicsDevice_exitFullScreenExclusive
     (JNIEnv* env, jclass x11gd,
      jlong window)
 {
-#ifndef HEADLESS
     Window win = (Window)window;
 
     AWT_LOCK();
     X11GD_SetFullscreenMode(win, JNI_FALSE);
     AWT_UNLOCK();
-#endif /* !HEADLESS */
 }
 
 /**
  * End DisplayMode/FullScreen support
  */
< prev index next >