diff options
Diffstat (limited to 'src/native')
-rw-r--r-- | src/native/jogl/ContextUpdater.h | 40 | ||||
-rw-r--r-- | src/native/jogl/ContextUpdater.m | 83 | ||||
-rw-r--r-- | src/native/jogl/InternalBufferUtils.c | 69 | ||||
-rw-r--r-- | src/native/jogl/JAWT_DrawingSurfaceInfo.c | 65 | ||||
-rw-r--r-- | src/native/jogl/MacOSXWindowSystemInterface.m | 696 | ||||
-rw-r--r-- | src/native/jogl/Xinerama.c | 316 | ||||
-rw-r--r-- | src/native/jogl/Xinerama.h | 76 | ||||
-rw-r--r-- | src/native/jogl/XineramaHelper.c | 126 | ||||
-rw-r--r-- | src/native/jogl/extutil.h | 222 | ||||
-rw-r--r-- | src/native/jogl/panoramiXext.h | 54 | ||||
-rw-r--r-- | src/native/jogl/panoramiXproto.h | 196 |
11 files changed, 0 insertions, 1943 deletions
diff --git a/src/native/jogl/ContextUpdater.h b/src/native/jogl/ContextUpdater.h deleted file mode 100644 index e8b757fac..000000000 --- a/src/native/jogl/ContextUpdater.h +++ /dev/null @@ -1,40 +0,0 @@ -/* - -Listens to NSViewGlobalFrameDidChangeNotification - -This notification is sent whenever an NSView that has an attached NSSurface changes size or changes screens (thus potentially changing graphics hardware drivers.) - -*/ - -#import <Cocoa/Cocoa.h> -#import <Foundation/Foundation.h> -#import <AppKit/NSView.h> -#import <OpenGL/OpenGL.h> -#import <OpenGL/gl.h> - -//#define DEBUG_GL_LOCKS - -#ifdef DEBUG_GL_LOCKS - #define LOCK_GL(func, line) [ContextUpdater lockInFunction:func atLine:line]; - #define UNLOCK_GL(func, line) [ContextUpdater unlockInFunction:func atLine:line]; -#else - #define LOCK_GL(func, line) [ContextUpdater lock]; - #define UNLOCK_GL(func, line) [ContextUpdater unlock]; -#endif - -// gznote: OpenGL NOT thread safe - need to sync on update and paints - -@interface ContextUpdater : NSObject -{ -} - -+ (void) lock; -+ (void) lockInFunction:(char *)func atLine:(int)line; -+ (void) unlock; -+ (void) unlockInFunction:(char *)func atLine:(int)line; - -- (void) registerFor:(NSOpenGLContext *)context with: (NSView *)window; - -- (void) update:(NSNotification *)notification; - -@end diff --git a/src/native/jogl/ContextUpdater.m b/src/native/jogl/ContextUpdater.m deleted file mode 100644 index 587782c98..000000000 --- a/src/native/jogl/ContextUpdater.m +++ /dev/null @@ -1,83 +0,0 @@ -#import "ContextUpdater.h" -#import <pthread.h> - -@implementation ContextUpdater -{ -} - -static NSOpenGLContext *theContext; -static pthread_mutex_t resourceLock = PTHREAD_MUTEX_INITIALIZER; - -static void printLockDebugInfo(char *message, char *func, int line) -{ - fprintf(stderr, "%s in function: \"%s\" at line: %d\n", message, func, line); - fflush(stderr); -} - -+ (void) lock -{ - if (theContext != NULL) - { - pthread_mutex_lock(&resourceLock); - } -} - -+ (void) lockInFunction:(char *)func atLine:(int)line -{ - if (theContext != NULL) - { - printLockDebugInfo("locked ", func, line); - [self lock]; - } -} - -+ (void) unlock -{ - if (theContext != NULL) - { - pthread_mutex_unlock(&resourceLock); - } -} - -+ (void) unlockInFunction:(char *)func atLine:(int)line -{ - if (theContext != NULL) - { - printLockDebugInfo("unlocked", func, line); - [self unlock]; - } -} - -- (void) registerFor:(NSOpenGLContext *)context with: (NSView *)view -{ - if (view != NULL) - { - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(update:) name:NSViewGlobalFrameDidChangeNotification object: view]; - theContext = context; - } -} - -- (void) update:(NSNotification *)notification -{ - [ContextUpdater lock]; - - [theContext update]; - - [ContextUpdater unlock]; -} - -- (id) init -{ - theContext = NULL; - - return [super init]; -} - -- (void) dealloc -{ - [[NSNotificationCenter defaultCenter] removeObserver:self]; - - [super dealloc]; -} - -@end
\ No newline at end of file diff --git a/src/native/jogl/InternalBufferUtils.c b/src/native/jogl/InternalBufferUtils.c deleted file mode 100644 index cfda63ede..000000000 --- a/src/native/jogl/InternalBufferUtils.c +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright (c) 2003 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MIDROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -#include <jni.h> - -#ifdef _MSC_VER - /* This typedef is apparently needed for compilers before VC8 */ - #if _MSC_VER < 1400 - typedef int intptr_t; - #endif -#else - #include <inttypes.h> -#endif - -JNIEXPORT jobject JNICALL -Java_com_sun_opengl_impl_InternalBufferUtils_newDirectByteBuffer(JNIEnv* env, jclass unused, jlong address, jint capacity) { - return (*env)->NewDirectByteBuffer(env, (void*) (intptr_t) address, capacity); -} - -#if defined(__sun) || defined(_HPUX) -#include <dlfcn.h> - -/* HP-UX doesn't define RTLD_DEFAULT. */ -#if defined(_HPUX) && !defined(RTLD_DEFAULT) -#define RTLD_DEFAULT NULL -#endif - -/* Sun's GLX implementation doesn't have glXGetProcAddressARB (or - glXGetProcAddress) so we implement it here */ -void (*glXGetProcAddressARB(const char *procname))() { - return (void (*)()) dlsym(RTLD_DEFAULT, procname); -} -#endif /* __ sun || _HPUX */ diff --git a/src/native/jogl/JAWT_DrawingSurfaceInfo.c b/src/native/jogl/JAWT_DrawingSurfaceInfo.c deleted file mode 100644 index d419f5767..000000000 --- a/src/native/jogl/JAWT_DrawingSurfaceInfo.c +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright (c) 2003 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MIDROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -#include <jawt_md.h> - -#ifdef WIN32 - #define PLATFORM_DSI_SIZE sizeof(JAWT_Win32DrawingSurfaceInfo) -#elif defined(linux) || defined(__sun) || defined(__FreeBSD__) || defined(_HPUX) - #define PLATFORM_DSI_SIZE sizeof(JAWT_X11DrawingSurfaceInfo) -#elif defined(macosx) - #define PLATFORM_DSI_SIZE sizeof(JAWT_MacOSXDrawingSurfaceInfo) -#else - ERROR: port JAWT_DrawingSurfaceInfo.c to your platform -#endif - -JNIEXPORT jobject JNICALL -Java_com_sun_opengl_impl_JAWT_1DrawingSurfaceInfo_platformInfo0(JNIEnv* env, jobject unused, jobject jthis0) { - JAWT_DrawingSurfaceInfo* dsi; - dsi = (*env)->GetDirectBufferAddress(env, jthis0); - if (dsi == NULL) { - (*env)->ThrowNew(env, (*env)->FindClass(env, "java/lang/RuntimeException"), - "Argument \"jthis0\" was not a direct buffer"); - return NULL; - } - if (dsi->platformInfo == NULL) { - return NULL; - } - return (*env)->NewDirectByteBuffer(env, dsi->platformInfo, PLATFORM_DSI_SIZE); -} diff --git a/src/native/jogl/MacOSXWindowSystemInterface.m b/src/native/jogl/MacOSXWindowSystemInterface.m deleted file mode 100644 index 9fbc4c006..000000000 --- a/src/native/jogl/MacOSXWindowSystemInterface.m +++ /dev/null @@ -1,696 +0,0 @@ -/* Note: usage of AvailabilityMacros.h to detect whether we're - building on OS X 10.3 does not work because the header #defines - MAC_OS_X_VERSION_10_4 even though the machine is a 10.3 machine - -#include <AvailabilityMacros.h> - -#ifndef MAC_OS_X_VERSION_10_3 - #error building JOGL requires Mac OS X 10.3 or greater -#endif - -#ifndef MAC_OS_X_VERSION_10_4 - #define NSOpenGLPFAColorFloat kCGLPFAColorFloat - #define kCGLNoError 0 -#endif -*/ - -#import <Cocoa/Cocoa.h> -#import <OpenGL/gl.h> -#import <OpenGL/CGLTypes.h> -#import <jni.h> -#import "ContextUpdater.h" - -#import "macosx-window-system.h" - -// see MacOSXPbufferGLContext.java createPbuffer -#define USE_GL_TEXTURE_RECTANGLE_EXT - -#ifdef USE_GL_TEXTURE_RECTANGLE_EXT - #ifndef GL_TEXTURE_RECTANGLE_EXT - #define GL_TEXTURE_RECTANGLE_EXT 0x84F5 - #endif -#endif - -// Workarounds for compiling on 10.3 -#ifndef kCGLRGBA16161616Bit -#define kCGLRGBA16161616Bit 0x00800000 /* 64 argb bit/pixel, R=63:48, G=47:32, B=31:16, A=15:0 */ -#define kCGLRGBFloat64Bit 0x01000000 /* 64 rgb bit/pixel, half float */ -#define kCGLRGBAFloat64Bit 0x02000000 /* 64 argb bit/pixel, half float */ -#define kCGLRGBFloat128Bit 0x04000000 /* 128 rgb bit/pixel, ieee float */ -#define kCGLRGBAFloat128Bit 0x08000000 /* 128 argb bit/pixel, ieee float */ -#define kCGLRGBFloat256Bit 0x10000000 /* 256 rgb bit/pixel, ieee double */ -#define kCGLRGBAFloat256Bit 0x20000000 /* 256 argb bit/pixel, ieee double */ -#endif - -struct _RendererInfo -{ - long id; // kCGLRPRendererID - long displayMask; // kCGLRPDisplayMask - - long accelerated; // kCGLRPAccelerated - - long window; // kCGLRPWindow - long fullscreen; // kCGLRPFullScreen - long multiscreen; // kCGLRPMultiScreen - long offscreen; // kCGLRPOffScreen - long floatPixels; // see kCGLRPColorModes - long stereo; // kCGLRPBufferModes - - long auxBuffers; // kCGLRPMaxAuxBuffers - long sampleBuffers; // kCGLRPMaxSampleBuffers - long samples; // kCGLRPMaxSamples - long samplesModes; // kCGLRPSampleModes - long multiSample; // see kCGLRPSampleModes - long superSample; // see kCGLRPSampleModes - long alphaSample; // kCGLRPSampleAlpha - - long colorModes; // kCGLRPColorModes - long colorRGBSizeMAX; - long colorASizeMAX; - long colorFloatRGBSizeMAX; - long colorFloatASizeMAX; - long colorFloatRGBSizeMIN; - long colorFloatASizeMIN; - long colorModesCount; - long colorFloatModesCount; - long depthModes; // kCGLRPDepthModes - long depthSizeMAX; - long depthModesCount; - long stencilModes; // kCGLRPStencilModes - long stencilSizeMAX; - long stencilModesCount; - long accumModes; // kCGLRPAccumModes - long accumRGBSizeMAX; - long accumASizeMAX; - long accumModesCount; -} -typedef RendererInfo; - -RendererInfo *gRenderers = NULL; -long gRenderersCount = 0; - -long depthModes[] = { - kCGL0Bit, - kCGL1Bit, - kCGL2Bit, - kCGL3Bit, - kCGL4Bit, - kCGL5Bit, - kCGL6Bit, - kCGL8Bit, - kCGL10Bit, - kCGL12Bit, - kCGL16Bit, - kCGL24Bit, - kCGL32Bit, - kCGL48Bit, - kCGL64Bit, - kCGL96Bit, - kCGL128Bit, - 0 - }; -long depthModesBits[] = {0, 1, 2, 3, 4, 5, 6, 8, 10, 12, 16, 24, 32, 48, 64, 96, 128}; -long colorModes[] = { - kCGLRGB444Bit, - kCGLARGB4444Bit, - kCGLRGB444A8Bit, - kCGLRGB555Bit, - kCGLARGB1555Bit, - kCGLRGB555A8Bit, - kCGLRGB565Bit, - kCGLRGB565A8Bit, - kCGLRGB888Bit, - kCGLARGB8888Bit, - kCGLRGB888A8Bit, - kCGLRGB101010Bit, - kCGLARGB2101010Bit, - kCGLRGB101010_A8Bit, - kCGLRGB121212Bit, - kCGLARGB12121212Bit, - kCGLRGB161616Bit, - kCGLRGBA16161616Bit, - kCGLRGBFloat64Bit, - kCGLRGBAFloat64Bit, - kCGLRGBFloat128Bit, - kCGLRGBAFloat128Bit, - kCGLRGBFloat256Bit, - kCGLRGBAFloat256Bit, - 0 - }; -long colorModesBitsRGB[] = {4, 4, 4, 5, 5, 5, 5, 5, 8, 8, 8, 10, 10, 10, 12, 12, 16, 16, 16, 16, 32, 32, 64, 64}; -long colorModesBitsA[] = {0, 4, 8, 0, 1, 8, 0, 8, 0, 8, 8, 0, 2, 8, 0, 12, 0, 16, 0, 16, 0, 32, 0, 64}; - -void getRendererInfo() -{ - if (gRenderersCount == 0) - { - CGLRendererInfoObj info; - CGLError err = CGLQueryRendererInfo(CGDisplayIDToOpenGLDisplayMask(kCGDirectMainDisplay), &info, &gRenderersCount); - if (err == 0 /* kCGLNoError */) - { - // how many renderers are available? - CGLDescribeRenderer(info, 0, kCGLRPRendererCount, &gRenderersCount); - - // allocate our global renderers info - gRenderers = (RendererInfo*)malloc(gRenderersCount*sizeof(RendererInfo)); - memset(gRenderers, 0x00, gRenderersCount*sizeof(RendererInfo)); - - // iterate through the renderers checking for their features - long j; - for (j=0; j<gRenderersCount; j++) - { - RendererInfo *renderer = &gRenderers[j]; - int i; - - CGLDescribeRenderer(info, j, kCGLRPRendererID, &(renderer->id)); - CGLDescribeRenderer(info, j, kCGLRPDisplayMask, &(renderer->displayMask)); - - CGLDescribeRenderer(info, j, kCGLRPAccelerated, &(renderer->accelerated)); - - CGLDescribeRenderer(info, j, kCGLRPWindow, &(renderer->window)); - CGLDescribeRenderer(info, j, kCGLRPFullScreen, &(renderer->fullscreen)); - CGLDescribeRenderer(info, j, kCGLRPMultiScreen, &(renderer->multiscreen)); - CGLDescribeRenderer(info, j, kCGLRPOffScreen, &(renderer->offscreen)); - CGLDescribeRenderer(info, j, kCGLRPColorModes, &(renderer->floatPixels)); - if ((renderer->floatPixels >= kCGLRGBFloat64Bit) != 0) - { - renderer->floatPixels = 1; - } - else - { - renderer->floatPixels = 0; - } - CGLDescribeRenderer(info, j, kCGLRPBufferModes, &(renderer->stereo)); - if ((renderer->stereo & kCGLStereoscopicBit) != 0) - { - renderer->stereo = 1; - } - else - { - renderer->stereo = 0; - } - - CGLDescribeRenderer(info, j, kCGLRPMaxAuxBuffers, &(renderer->auxBuffers)); - CGLDescribeRenderer(info, j, kCGLRPMaxSampleBuffers, &(renderer->sampleBuffers)); - CGLDescribeRenderer(info, j, kCGLRPMaxSamples, &(renderer->samples)); - // The following queries are only legal on 10.4 - // FIXME: should figure out a way to enable them dynamically -#ifdef kCGLRPSampleModes - CGLDescribeRenderer(info, j, kCGLRPSampleModes, &(renderer->samplesModes)); - if ((renderer->samplesModes & kCGLSupersampleBit) != 0) - { - renderer->multiSample = 1; - } - if ((renderer->samplesModes & kCGLMultisampleBit) != 0) - { - renderer->superSample = 1; - } - CGLDescribeRenderer(info, j, kCGLRPSampleAlpha, &(renderer->alphaSample)); -#endif - CGLDescribeRenderer(info, j, kCGLRPColorModes, &(renderer->colorModes)); - i=0; - int floatPixelFormatInitialized = 0; - while (colorModes[i] != 0) - { - if ((renderer->colorModes & colorModes[i]) != 0) - { - // non-float color model - if (colorModes[i] < kCGLRGBFloat64Bit) - { - // look for max color and alpha values - prefer color models that have alpha - if ((colorModesBitsRGB[i] >= renderer->colorRGBSizeMAX) && (colorModesBitsA[i] >= renderer->colorASizeMAX)) - { - renderer->colorRGBSizeMAX = colorModesBitsRGB[i]; - renderer->colorASizeMAX = colorModesBitsA[i]; - } - renderer->colorModesCount++; - } - // float-color model - if (colorModes[i] >= kCGLRGBFloat64Bit) - { - if (floatPixelFormatInitialized == 0) - { - floatPixelFormatInitialized = 1; - - renderer->colorFloatASizeMAX = colorModesBitsA[i]; - renderer->colorFloatRGBSizeMAX = colorModesBitsRGB[i]; - renderer->colorFloatASizeMIN = colorModesBitsA[i]; - renderer->colorFloatRGBSizeMIN = colorModesBitsRGB[i]; - } - // look for max color and alpha values - prefer color models that have alpha - if ((colorModesBitsRGB[i] >= renderer->colorFloatRGBSizeMAX) && (colorModesBitsA[i] >= renderer->colorFloatASizeMAX)) - { - renderer->colorFloatRGBSizeMAX = colorModesBitsRGB[i]; - renderer->colorFloatASizeMAX = colorModesBitsA[i]; - } - // find min color - if (colorModesBitsA[i] < renderer->colorFloatASizeMIN) - { - renderer->colorFloatASizeMIN = colorModesBitsA[i]; - } - // find min alpha color - if (colorModesBitsA[i] < renderer->colorFloatRGBSizeMIN) - { - renderer->colorFloatRGBSizeMIN = colorModesBitsRGB[i]; - } - renderer->colorFloatModesCount++; - } - } - i++; - } - CGLDescribeRenderer(info, j, kCGLRPDepthModes, &(renderer->depthModes)); - i=0; - while (depthModes[i] != 0) - { - if ((renderer->depthModes & depthModes[i]) != 0) - { - renderer->depthSizeMAX = depthModesBits[i]; - renderer->depthModesCount++; - } - i++; - } - CGLDescribeRenderer(info, j, kCGLRPStencilModes, &(renderer->stencilModes)); - i=0; - while (depthModes[i] != 0) - { - if ((renderer->stencilModes & depthModes[i]) != 0) - { - renderer->stencilSizeMAX = depthModesBits[i]; - renderer->stencilModesCount++; - } - i++; - } - CGLDescribeRenderer(info, j, kCGLRPAccumModes, &(renderer->accumModes)); - i=0; - while (colorModes[i] != 0) - { - if ((renderer->accumModes & colorModes[i]) != 0) - { - if ((colorModesBitsRGB[i] >= renderer->accumRGBSizeMAX) && (colorModesBitsA[i] >= renderer->accumASizeMAX)) - { - renderer->accumRGBSizeMAX = colorModesBitsRGB[i]; - renderer->accumASizeMAX = colorModesBitsA[i]; - } - renderer->accumModesCount++; - } - i++; - } - } - } - CGLDestroyRendererInfo (info); - } - -#if 0 - fprintf(stderr, "gRenderersCount=%ld\n", gRenderersCount); - int j; - for (j=0; j<gRenderersCount; j++) - { - RendererInfo *renderer = &gRenderers[j]; - fprintf(stderr, " id=%ld\n", renderer->id); - fprintf(stderr, " displayMask=%ld\n", renderer->displayMask); - - fprintf(stderr, " accelerated=%ld\n", renderer->accelerated); - - fprintf(stderr, " window=%ld\n", renderer->window); - fprintf(stderr, " fullscreen=%ld\n", renderer->fullscreen); - fprintf(stderr, " multiscreen=%ld\n", renderer->multiscreen); - fprintf(stderr, " offscreen=%ld\n", renderer->offscreen); - fprintf(stderr, " floatPixels=%ld\n", renderer->floatPixels); - fprintf(stderr, " stereo=%ld\n", renderer->stereo); - - fprintf(stderr, " auxBuffers=%ld\n", renderer->auxBuffers); - fprintf(stderr, " sampleBuffers=%ld\n", renderer->sampleBuffers); - fprintf(stderr, " samples=%ld\n", renderer->samples); - fprintf(stderr, " samplesModes=%ld\n", renderer->samplesModes); - fprintf(stderr, " multiSample=%ld\n", renderer->superSample); - fprintf(stderr, " superSample=%ld\n", renderer->superSample); - fprintf(stderr, " alphaSample=%ld\n", renderer->alphaSample); - - fprintf(stderr, " colorModes=%ld\n", renderer->colorModes); - fprintf(stderr, " colorRGBSizeMAX=%ld\n", renderer->colorRGBSizeMAX); - fprintf(stderr, " colorASizeMAX=%ld\n", renderer->colorASizeMAX); - fprintf(stderr, " colorFloatRGBSizeMAX=%ld\n", renderer->colorFloatRGBSizeMAX); - fprintf(stderr, " colorFloatASizeMAX=%ld\n", renderer->colorFloatASizeMAX); - fprintf(stderr, " colorFloatRGBSizeMIN=%ld\n", renderer->colorFloatRGBSizeMIN); - fprintf(stderr, " colorFloatASizeMIN=%ld\n", renderer->colorFloatASizeMIN); - fprintf(stderr, " colorModesCount=%ld\n", renderer->colorModesCount); - fprintf(stderr, " colorFloatModesCount=%ld\n", renderer->colorFloatModesCount); - fprintf(stderr, " depthModes=%ld\n", renderer->depthModes); - fprintf(stderr, " depthSizeMAX=%ld\n", renderer->depthSizeMAX); - fprintf(stderr, " depthModesCount=%ld\n", renderer->depthModesCount); - fprintf(stderr, " stencilModes=%ld\n", renderer->stencilModes); - fprintf(stderr, " stencilSizeMAX=%ld\n", renderer->stencilSizeMAX); - fprintf(stderr, " stencilModesCount=%ld\n", renderer->stencilModesCount); - fprintf(stderr, " accumModes=%ld\n", renderer->accumModes); - fprintf(stderr, " accumRGBSizeMAX=%ld\n", renderer->accumRGBSizeMAX); - fprintf(stderr, " accumASizeMAX=%ld\n", renderer->accumASizeMAX); - fprintf(stderr, " accumModesCount=%ld\n", renderer->accumModesCount); - fprintf(stderr, "\n"); - } -#endif -} - -long validateParameter(NSOpenGLPixelFormatAttribute attribute, long value) -{ - int i; - for (i=0; i<gRenderersCount; i++) { - RendererInfo* renderer = &gRenderers[i]; - if (renderer->accelerated != 0) { - switch (attribute) { - case NSOpenGLPFAStereo: - return renderer->stereo; - - case NSOpenGLPFAStencilSize: - return MIN(value, renderer->stencilSizeMAX); - - default: - break; - } - } - } - - return value; -} - -void* createPixelFormat(int* iattrs, int niattrs, int* ivalues) { - NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init]; - - getRendererInfo(); - - // http://developer.apple.com/documentation/Cocoa/Reference/ApplicationKit/ObjC_classic/Classes/NSOpenGLPixelFormat.html - NSOpenGLPixelFormatAttribute attribs[256]; - - int idx = 0; - int i; - for (i = 0; i < niattrs; i++) { - int attr = iattrs[i]; - switch (attr) { - case NSOpenGLPFAPixelBuffer: - if (ivalues[i] != 0) { - attribs[idx++] = NSOpenGLPFAPixelBuffer; - } - break; - - case kCGLPFAColorFloat: - if (ivalues[i] != 0) { - attribs[idx++] = kCGLPFAColorFloat; - } - break; - - case NSOpenGLPFADoubleBuffer: - if (ivalues[i] != 0) { - attribs[idx++] = NSOpenGLPFADoubleBuffer; - } - break; - - case NSOpenGLPFAStereo: - if (ivalues[i] != 0 && (validateParameter(NSOpenGLPFAStereo, 0 /* dummy */) != 0)) { - attribs[idx++] = NSOpenGLPFAStereo; - } - break; - - case NSOpenGLPFAColorSize: - case NSOpenGLPFAAlphaSize: - case NSOpenGLPFADepthSize: - case NSOpenGLPFAAccumSize: - case NSOpenGLPFASampleBuffers: - case NSOpenGLPFASamples: - attribs[idx++] = attr; - attribs[idx++] = ivalues[i]; - break; - - case NSOpenGLPFAStencilSize: - attribs[idx++] = attr; - attribs[idx++] = validateParameter(NSOpenGLPFAStencilSize, ivalues[i]); - break; - - default: - // Need better way to signal to caller - return nil; - } - } - - // Zero-terminate - attribs[idx++] = 0; - - NSOpenGLPixelFormat* fmt = [[NSOpenGLPixelFormat alloc] initWithAttributes:attribs]; - if (fmt == nil) { - // should we fallback to defaults or not? - fmt = [NSOpenGLView defaultPixelFormat]; - } - - [pool release]; - return fmt; -} - -void queryPixelFormat(void* pixelFormat, int* iattrs, int niattrs, int* ivalues) { - NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init]; - NSOpenGLPixelFormat* fmt = (NSOpenGLPixelFormat*) pixelFormat; - long tmp; - // FIXME: think about how specifying this might affect the API - int virtualScreen = 0; - - int i; - for (i = 0; i < niattrs; i++) { - [fmt getValues: &tmp - forAttribute: (NSOpenGLPixelFormatAttribute) iattrs[i] - forVirtualScreen: virtualScreen]; - ivalues[i] = (int) tmp; - } - [pool release]; -} - -void deletePixelFormat(void* pixelFormat) { - NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init]; - NSOpenGLPixelFormat* fmt = (NSOpenGLPixelFormat*) pixelFormat; - [fmt release]; - [pool release]; -} - -void* createContext(void* shareContext, - void* view, - void* pixelFormat, - int* viewNotReady) -{ - getRendererInfo(); - - NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init]; - - NSView *nsView = (NSView*)view; - - if (nsView != NULL) - { - Bool viewReady = true; - - if ([nsView lockFocusIfCanDraw] == NO) - { - viewReady = false; - } - else - { - NSRect frame = [nsView frame]; - if ((frame.size.width == 0) || (frame.size.height == 0)) - { - [nsView unlockFocus]; - viewReady = false; - } - } - - if (!viewReady) - { - if (viewNotReady != NULL) - { - *viewNotReady = 1; - } - - // the view is not ready yet - [pool release]; - return NULL; - } - } - - NSOpenGLContext* nsContext = [[NSOpenGLContext alloc] - initWithFormat: (NSOpenGLPixelFormat*) pixelFormat - shareContext: (NSOpenGLContext*) shareContext]; - - if (nsContext != nil) { - if (nsView != nil) { - [nsContext setView:nsView]; - [nsView unlockFocus]; - } - } - - [pool release]; - return nsContext; -} - -Bool makeCurrentContext(void* context) { - NSOpenGLContext *nsContext = (NSOpenGLContext*)context; - - NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init]; - [nsContext makeCurrentContext]; - [pool release]; - return true; -} - -Bool clearCurrentContext(void* context) { - NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init]; - [NSOpenGLContext clearCurrentContext]; - [pool release]; - return true; -} - -Bool deleteContext(void* context) { - NSOpenGLContext *nsContext = (NSOpenGLContext*)context; - - NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init]; - [nsContext clearDrawable]; - [nsContext release]; - [pool release]; - return true; -} - -Bool flushBuffer(void* context) { - NSOpenGLContext *nsContext = (NSOpenGLContext*)context; - - NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init]; - [nsContext flushBuffer]; - [pool release]; - return true; -} - -void updateContext(void* context) { - NSOpenGLContext *nsContext = (NSOpenGLContext*)context; - - NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init]; - [nsContext update]; - [pool release]; -} - -void copyContext(void* destContext, void* srcContext, int mask) { - NSOpenGLContext *src = (NSOpenGLContext*) srcContext; - NSOpenGLContext *dst = (NSOpenGLContext*) destContext; - [dst copyAttributesFromContext: src withMask: mask]; -} - -void* updateContextRegister(void* context, void* view) { - NSOpenGLContext *nsContext = (NSOpenGLContext*)context; - NSView *nsView = (NSView*)view; - - NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init]; - ContextUpdater *contextUpdater = [[ContextUpdater alloc] init]; - [contextUpdater registerFor:nsContext with:nsView]; - [pool release]; - return NULL; -} - -void updateContextUnregister(void* context, void* view, void* updater) { - ContextUpdater *contextUpdater = (ContextUpdater *)updater; - - NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init]; - [contextUpdater release]; - [pool release]; -} - -void* createPBuffer(int renderTarget, int internalFormat, int width, int height) { - NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init]; - NSOpenGLPixelBuffer* pBuffer = [[NSOpenGLPixelBuffer alloc] - initWithTextureTarget:renderTarget - textureInternalFormat:internalFormat - textureMaxMipMapLevel:0 - pixelsWide:width - pixelsHigh:height]; - [pool release]; - return pBuffer; -} - -Bool destroyPBuffer(void* context, void* buffer) { - /* FIXME: not clear whether we need to perform the clearDrawable below */ - /* FIXME: remove the context argument -- don't need it any more */ - /* NSOpenGLContext *nsContext = (NSOpenGLContext*)context; */ - NSOpenGLPixelBuffer *pBuffer = (NSOpenGLPixelBuffer*)buffer; - - NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init]; - /* - if (nsContext != NULL) { - [nsContext clearDrawable]; - } - */ - [pBuffer release]; - [pool release]; - - return true; -} - -void setContextPBuffer(void* context, void* buffer) { - NSOpenGLContext *nsContext = (NSOpenGLContext*)context; - NSOpenGLPixelBuffer *pBuffer = (NSOpenGLPixelBuffer*)buffer; - - NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init]; - [nsContext setPixelBuffer: pBuffer - cubeMapFace: 0 - mipMapLevel: 0 - currentVirtualScreen: [nsContext currentVirtualScreen]]; - [pool release]; -} - -void setContextTextureImageToPBuffer(void* context, void* buffer, int colorBuffer) { - NSOpenGLContext *nsContext = (NSOpenGLContext*)context; - NSOpenGLPixelBuffer *pBuffer = (NSOpenGLPixelBuffer*)buffer; - - NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init]; - [nsContext setTextureImageToPixelBuffer: pBuffer - colorBuffer: (unsigned long) colorBuffer]; - [pool release]; -} - -#include <mach-o/dyld.h> -Bool imagesInitialized = false; -static char libGLStr[] = "/System/Library/Frameworks/OpenGL.framework/Libraries/libGL.dylib"; -static char libGLUStr[] = "/System/Library/Frameworks/OpenGL.framework/Libraries/libGLU.dylib"; -static const struct mach_header *libGLImage; -static const struct mach_header *libGLUImage; -void* getProcAddress(const char *procname) { - if (imagesInitialized == false) { - imagesInitialized = true; - unsigned long options = NSADDIMAGE_OPTION_RETURN_ON_ERROR; - libGLImage = NSAddImage(libGLStr, options); - libGLUImage = NSAddImage(libGLUStr, options); - } - - unsigned long options = NSLOOKUPSYMBOLINIMAGE_OPTION_BIND | NSLOOKUPSYMBOLINIMAGE_OPTION_RETURN_ON_ERROR; - char underscoreName[512] = "_"; - strcat(underscoreName, procname); - - if (NSIsSymbolNameDefinedInImage(libGLImage, underscoreName) == YES) { - NSSymbol sym = NSLookupSymbolInImage(libGLImage, underscoreName, options); - return NSAddressOfSymbol(sym); - } - - if (NSIsSymbolNameDefinedInImage(libGLUImage, underscoreName) == YES) { - NSSymbol sym = NSLookupSymbolInImage(libGLUImage, underscoreName, options); - return NSAddressOfSymbol(sym); - } - - if (NSIsSymbolNameDefinedWithHint(underscoreName, "GL")) { - NSSymbol sym = NSLookupAndBindSymbol(underscoreName); - return NSAddressOfSymbol(sym); - } - - return NULL; -} - -void setSwapInterval(void* context, int interval) { - NSOpenGLContext *nsContext = (NSOpenGLContext*)context; - long swapInterval = interval; - [nsContext setValues: &swapInterval forParameter: NSOpenGLCPSwapInterval]; -} - -Bool setGammaRamp(int tableSize, float* redRamp, float* greenRamp, float* blueRamp) { - CGDisplayErr err = CGSetDisplayTransferByTable(kCGDirectMainDisplay, tableSize, redRamp, greenRamp, blueRamp); - return (err == CGDisplayNoErr); -} - -void resetGammaRamp() { - CGDisplayRestoreColorSyncSettings(); -} diff --git a/src/native/jogl/Xinerama.c b/src/native/jogl/Xinerama.c deleted file mode 100644 index 98dcfe095..000000000 --- a/src/native/jogl/Xinerama.c +++ /dev/null @@ -1,316 +0,0 @@ -/* $TOG: XPanoramiX.c /main/2 1997/11/16 08:45:41 kaleb $ */ -/**************************************************************** -* * -* Copyright (c) Digital Equipment Corporation, 1991, 1997 * -* * -* All Rights Reserved. Unpublished rights reserved under * -* the copyright laws of the United States. * -* * -* The software contained on this media is proprietary to * -* and embodies the confidential technology of Digital * -* Equipment Corporation. Possession, use, duplication or * -* dissemination of the software and media is authorized only * -* pursuant to a valid written license from Digital Equipment * -* Corporation. * -* * -* RESTRICTED RIGHTS LEGEND Use, duplication, or disclosure * -* by the U.S. Government is subject to restrictions as set * -* forth in Subparagraph (c)(1)(ii) of DFARS 252.227-7013, * -* or in FAR 52.227-19, as applicable. * -* * -*****************************************************************/ -/* $XFree86: xc/lib/Xinerama/Xinerama.c,v 1.1 2000/02/27 23:10:04 mvojkovi Exp $ */ - -#ifndef __linux__ - #error This file should only be built under Linux -#endif - -#define NEED_EVENTS -#define NEED_REPLIES -#include <X11/Xlibint.h> -#include <X11/Xutil.h> -/* #include "Xext.h" */ /* in ../include */ -#include "extutil.h" /* in ../include */ -#include "panoramiXext.h" -#include "panoramiXproto.h" /* in ../include */ -#include "Xinerama.h" - - -static XExtensionInfo _panoramiX_ext_info_data; -static XExtensionInfo *panoramiX_ext_info = &_panoramiX_ext_info_data; -static /* const */ char *panoramiX_extension_name = PANORAMIX_PROTOCOL_NAME; - -#define PanoramiXCheckExtension(dpy,i,val) \ - XextCheckExtension (dpy, i, panoramiX_extension_name, val) -#define PanoramiXSimpleCheckExtension(dpy,i) \ - XextSimpleCheckExtension (dpy, i, panoramiX_extension_name) - -static int close_display(); -static /* const */ XExtensionHooks panoramiX_extension_hooks = { - NULL, /* create_gc */ - NULL, /* copy_gc */ - NULL, /* flush_gc */ - NULL, /* free_gc */ - NULL, /* create_font */ - NULL, /* free_font */ - close_display, /* close_display */ - NULL, /* wire_to_event */ - NULL, /* event_to_wire */ - NULL, /* error */ - NULL, /* error_string */ -}; - -static XEXT_GENERATE_FIND_DISPLAY (find_display, panoramiX_ext_info, - panoramiX_extension_name, - &panoramiX_extension_hooks, - 0, NULL) - -static XEXT_GENERATE_CLOSE_DISPLAY (close_display, panoramiX_ext_info) - - - -/**************************************************************************** - * * - * PanoramiX public interfaces * - * * - ****************************************************************************/ - -Bool XPanoramiXQueryExtension ( - Display *dpy, - int *event_basep, - int *error_basep -) -{ - XExtDisplayInfo *info = find_display (dpy); - - if (XextHasExtension(info)) { - *event_basep = info->codes->first_event; - *error_basep = info->codes->first_error; - return True; - } else { - return False; - } -} - - -Status XPanoramiXQueryVersion( - Display *dpy, - int *major_versionp, - int *minor_versionp -) -{ - XExtDisplayInfo *info = find_display (dpy); - xPanoramiXQueryVersionReply rep; - register xPanoramiXQueryVersionReq *req; - - PanoramiXCheckExtension (dpy, info, 0); - - LockDisplay (dpy); - GetReq (PanoramiXQueryVersion, req); - req->reqType = info->codes->major_opcode; - req->panoramiXReqType = X_PanoramiXQueryVersion; - req->clientMajor = PANORAMIX_MAJOR_VERSION; - req->clientMinor = PANORAMIX_MINOR_VERSION; - if (!_XReply (dpy, (xReply *) &rep, 0, xTrue)) { - UnlockDisplay (dpy); - SyncHandle (); - return 0; - } - *major_versionp = rep.majorVersion; - *minor_versionp = rep.minorVersion; - UnlockDisplay (dpy); - SyncHandle (); - return 1; -} - -XPanoramiXInfo *XPanoramiXAllocInfo(void) -{ - return (XPanoramiXInfo *) Xmalloc (sizeof (XPanoramiXInfo)); -} - -Status XPanoramiXGetState ( - Display *dpy, - Drawable drawable, - XPanoramiXInfo *panoramiX_info -) -{ - XExtDisplayInfo *info = find_display (dpy); - xPanoramiXGetStateReply rep; - register xPanoramiXGetStateReq *req; - - PanoramiXCheckExtension (dpy, info, 0); - - LockDisplay (dpy); - GetReq (PanoramiXGetState, req); - req->reqType = info->codes->major_opcode; - req->panoramiXReqType = X_PanoramiXGetState; - req->window = drawable; - if (!_XReply (dpy, (xReply *) &rep, 0, xTrue)) { - UnlockDisplay (dpy); - SyncHandle (); - return 0; - } - UnlockDisplay (dpy); - SyncHandle (); - panoramiX_info->window = rep.window; - panoramiX_info->State = rep.state; - return 1; -} - -Status XPanoramiXGetScreenCount ( - Display *dpy, - Drawable drawable, - XPanoramiXInfo *panoramiX_info -) -{ - XExtDisplayInfo *info = find_display (dpy); - xPanoramiXGetScreenCountReply rep; - register xPanoramiXGetScreenCountReq *req; - - PanoramiXCheckExtension (dpy, info, 0); - - LockDisplay (dpy); - GetReq (PanoramiXGetScreenCount, req); - req->reqType = info->codes->major_opcode; - req->panoramiXReqType = X_PanoramiXGetScreenCount; - req->window = drawable; - if (!_XReply (dpy, (xReply *) &rep, 0, xTrue)) { - UnlockDisplay (dpy); - SyncHandle (); - return 0; - } - UnlockDisplay (dpy); - SyncHandle (); - panoramiX_info->window = rep.window; - panoramiX_info->ScreenCount = rep.ScreenCount; - return 1; -} - -Status XPanoramiXGetScreenSize ( - Display *dpy, - Drawable drawable, - int screen_num, - XPanoramiXInfo *panoramiX_info -) -{ - XExtDisplayInfo *info = find_display (dpy); - xPanoramiXGetScreenSizeReply rep; - register xPanoramiXGetScreenSizeReq *req; - - PanoramiXCheckExtension (dpy, info, 0); - - LockDisplay (dpy); - GetReq (PanoramiXGetScreenSize, req); - req->reqType = info->codes->major_opcode; - req->panoramiXReqType = X_PanoramiXGetScreenSize; - req->window = drawable; - req->screen = screen_num; /* need to define */ - if (!_XReply (dpy, (xReply *) &rep, 0, xTrue)) { - UnlockDisplay (dpy); - SyncHandle (); - return 0; - } - UnlockDisplay (dpy); - SyncHandle (); - panoramiX_info->window = rep.window; - panoramiX_info->screen = rep.screen; - panoramiX_info->width = rep.width; - panoramiX_info->height = rep.height; - return 1; -} - -/*******************************************************************\ - Alternate interface to make up for shortcomings in the original, - namely, the omission of the screen origin. The new interface is - in the "Xinerama" namespace instead of "PanoramiX". -\*******************************************************************/ - -Bool XineramaQueryExtension ( - Display *dpy, - int *event_base, - int *error_base -) -{ - return XPanoramiXQueryExtension(dpy, event_base, error_base); -} - -Status XineramaQueryVersion( - Display *dpy, - int *major, - int *minor -) -{ - return XPanoramiXQueryVersion(dpy, major, minor); -} - -Bool XineramaIsActive(Display *dpy) -{ - xXineramaIsActiveReply rep; - xXineramaIsActiveReq *req; - XExtDisplayInfo *info = find_display (dpy); - - if(!XextHasExtension(info)) - return False; /* server doesn't even have the extension */ - - LockDisplay (dpy); - GetReq (XineramaIsActive, req); - req->reqType = info->codes->major_opcode; - req->panoramiXReqType = X_XineramaIsActive; - if (!_XReply (dpy, (xReply *) &rep, 0, xTrue)) { - UnlockDisplay (dpy); - SyncHandle (); - return False; - } - UnlockDisplay (dpy); - SyncHandle (); - return rep.state; -} - -#include <stdio.h> - -XineramaScreenInfo * -XineramaQueryScreens( - Display *dpy, - int *number -) -{ - XExtDisplayInfo *info = find_display (dpy); - xXineramaQueryScreensReply rep; - xXineramaQueryScreensReq *req; - XineramaScreenInfo *scrnInfo = NULL; - - PanoramiXCheckExtension (dpy, info, 0); - - LockDisplay (dpy); - GetReq (XineramaQueryScreens, req); - req->reqType = info->codes->major_opcode; - req->panoramiXReqType = X_XineramaQueryScreens; - if (!_XReply (dpy, (xReply *) &rep, 0, xFalse)) { - UnlockDisplay (dpy); - SyncHandle (); - return NULL; - } - - if(rep.number) { - if((scrnInfo = Xmalloc(sizeof(XineramaScreenInfo) * rep.number))) { - xXineramaScreenInfo scratch; - CARD32 i; - - for(i = 0; i < rep.number; i++) { - _XRead(dpy, (char*)(&scratch), sz_XineramaScreenInfo); - scrnInfo[i].screen_number = i; - scrnInfo[i].x_org = scratch.x_org; - scrnInfo[i].y_org = scratch.y_org; - scrnInfo[i].width = scratch.width; - scrnInfo[i].height = scratch.height; - } - - *number = rep.number; - } else - _XEatData(dpy, rep.length << 2); - } - - UnlockDisplay (dpy); - SyncHandle (); - return scrnInfo; -} diff --git a/src/native/jogl/Xinerama.h b/src/native/jogl/Xinerama.h deleted file mode 100644 index 7177f5131..000000000 --- a/src/native/jogl/Xinerama.h +++ /dev/null @@ -1,76 +0,0 @@ -/* -Copyright (C) 1994-2001 The XFree86 Project, Inc. All Rights Reserved. - -Permission is hereby granted, free of charge, to any person obtaining a -copy of this software and associated documentation files (the "Soft- -ware"), to deal in the Software without restriction, including without -limitation the rights to use, copy, modify, merge, publish, distribute, -and/or sell copies of the Software, and to permit persons to whom the -Software is furnished to do so, provided that the above copyright -notice(s) and this permission notice appear in all copies of the Soft- -ware and that both the above copyright notice(s) and this permission -notice appear in supporting documentation. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL- -ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY -RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN -THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSE- -QUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, -DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER -TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFOR- -MANCE OF THIS SOFTWARE. - -Except as contained in this notice, the name of a copyright holder shall -not be used in advertising or otherwise to promote the sale, use or -other dealings in this Software without prior written authorization of -the copyright holder. -*/ - -/* $XFree86: xc/include/extensions/Xinerama.h,v 3.2 2000/03/01 01:04:20 dawes Exp $ */ - -#ifdef __linux__ - -#ifndef _Xinerama_h -#define _Xinerama_h - -typedef struct { - int screen_number; - short x_org; - short y_org; - short width; - short height; -} XineramaScreenInfo; - -Bool XineramaQueryExtension ( - Display *dpy, - int *event_base, - int *error_base -); - -Status XineramaQueryVersion( - Display *dpy, - int *major, - int *minor -); - -Bool XineramaIsActive(Display *dpy); - - -/* - Returns the number of heads and a pointer to an array of - structures describing the position and size of the individual - heads. Returns NULL and number = 0 if Xinerama is not active. - - Returned array should be freed with XFree(). -*/ - -XineramaScreenInfo * -XineramaQueryScreens( - Display *dpy, - int *number -); - -#endif /* _Xinerama_h */ - -#endif /* __linux__ */ diff --git a/src/native/jogl/XineramaHelper.c b/src/native/jogl/XineramaHelper.c deleted file mode 100644 index 09ad0b706..000000000 --- a/src/native/jogl/XineramaHelper.c +++ /dev/null @@ -1,126 +0,0 @@ -/* - * Copyright (c) 2003 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MIDROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - */ - -/* This file contains a helper routine to be called by Java code to - determine whether the Xinerama extension is in use and therefore to - treat the multiple AWT screens as one large screen. */ - -#include <inttypes.h> -#include <X11/Xlib.h> - -#ifdef __sun - -typedef Status XineramaGetInfoFunc(Display* display, int screen_number, - XRectangle* framebuffer_rects, unsigned char* framebuffer_hints, - int* num_framebuffers); -typedef Status XineramaGetCenterHintFunc(Display* display, int screen_number, - int* x, int* y); - -XineramaGetCenterHintFunc* XineramaSolarisCenterFunc = NULL; -#include <dlfcn.h> - -#elif defined(__linux__) - -#include "Xinerama.h" - -#endif - -Bool XineramaEnabled(Display* display) { -#ifdef __sun - -#define MAXFRAMEBUFFERS 16 - char* XinExtName = "XINERAMA"; - int32_t major_opcode, first_event, first_error; - Bool gotXinExt = False; - void* libHandle = 0; - unsigned char fbhints[MAXFRAMEBUFFERS]; - XRectangle fbrects[MAXFRAMEBUFFERS]; - int locNumScr = 0; - Bool usingXinerama = False; - - char* XineramaLibName= "libXext.so"; - char* XineramaGetInfoName = "XineramaGetInfo"; - char* XineramaGetCenterHintName = "XineramaGetCenterHint"; - XineramaGetInfoFunc* XineramaSolarisFunc = NULL; - - gotXinExt = XQueryExtension(display, XinExtName, &major_opcode, - &first_event, &first_error); - - if (gotXinExt) { - /* load library, load and run XineramaGetInfo */ - libHandle = dlopen(XineramaLibName, RTLD_LAZY | RTLD_GLOBAL); - if (libHandle != 0) { - XineramaSolarisFunc = (XineramaGetInfoFunc*)dlsym(libHandle, XineramaGetInfoName); - XineramaSolarisCenterFunc = - (XineramaGetCenterHintFunc*)dlsym(libHandle, - XineramaGetCenterHintName); - if (XineramaSolarisFunc != NULL) { - if ((*XineramaSolarisFunc)(display, 0, &fbrects[0], - &fbhints[0], &locNumScr) != 0) { - - usingXinerama = True; - } - } - dlclose(libHandle); - } - } - return usingXinerama; - -#elif defined(__linux__) - - char* XinExtName = "XINERAMA"; - int32_t major_opcode, first_event, first_error; - Bool gotXinExt = False; - int32_t locNumScr = 0; - - XineramaScreenInfo *xinInfo; - - gotXinExt = XQueryExtension(display, XinExtName, &major_opcode, - &first_event, &first_error); - - if (gotXinExt) { - xinInfo = XineramaQueryScreens(display, &locNumScr); - if (xinInfo != NULL) { - return True; - } - } - return False; - -#else - return False; -#endif -} diff --git a/src/native/jogl/extutil.h b/src/native/jogl/extutil.h deleted file mode 100644 index f0d3b59c3..000000000 --- a/src/native/jogl/extutil.h +++ /dev/null @@ -1,222 +0,0 @@ -/* - * $Xorg: extutil.h,v 1.3 2000/08/18 04:05:45 coskrey Exp $ - * -Copyright 1989, 1998 The Open Group - -All Rights Reserved. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. - * - * Author: Jim Fulton, MIT The Open Group - * - * Xlib Extension-Writing Utilities - * - * This package contains utilities for writing the client API for various - * protocol extensions. THESE INTERFACES ARE NOT PART OF THE X STANDARD AND - * ARE SUBJECT TO CHANGE! - */ -/* $XFree86: xc/include/extensions/extutil.h,v 1.5 2001/01/17 17:53:20 dawes Exp $ */ - -#ifdef __linux__ - -#ifndef _EXTUTIL_H_ -#define _EXTUTIL_H_ - -/* - * We need to keep a list of open displays since the Xlib display list isn't - * public. We also have to per-display info in a separate block since it isn't - * stored directly in the Display structure. - */ -typedef struct _XExtDisplayInfo { - struct _XExtDisplayInfo *next; /* keep a linked list */ - Display *display; /* which display this is */ - XExtCodes *codes; /* the extension protocol codes */ - XPointer data; /* extra data for extension to use */ -} XExtDisplayInfo; - -typedef struct _XExtensionInfo { - XExtDisplayInfo *head; /* start of list */ - XExtDisplayInfo *cur; /* most recently used */ - int ndisplays; /* number of displays */ -} XExtensionInfo; - -typedef struct _XExtensionHooks { - int (*create_gc)( -#if NeedNestedPrototypes - Display* /* display */, - GC /* gc */, - XExtCodes* /* codes */ -#endif -); - int (*copy_gc)( -#if NeedNestedPrototypes - Display* /* display */, - GC /* gc */, - XExtCodes* /* codes */ -#endif -); - int (*flush_gc)( -#if NeedNestedPrototypes - Display* /* display */, - GC /* gc */, - XExtCodes* /* codes */ -#endif -); - int (*free_gc)( -#if NeedNestedPrototypes - Display* /* display */, - GC /* gc */, - XExtCodes* /* codes */ -#endif -); - int (*create_font)( -#if NeedNestedPrototypes - Display* /* display */, - XFontStruct* /* fs */, - XExtCodes* /* codes */ -#endif -); - int (*free_font)( -#if NeedNestedPrototypes - Display* /* display */, - XFontStruct* /* fs */, - XExtCodes* /* codes */ -#endif -); - int (*close_display)( -#if NeedNestedPrototypes - Display* /* display */, - XExtCodes* /* codes */ -#endif -); - Bool (*wire_to_event)( -#if NeedNestedPrototypes - Display* /* display */, - XEvent* /* re */, - xEvent* /* event */ -#endif -); - Status (*event_to_wire)( -#if NeedNestedPrototypes - Display* /* display */, - XEvent* /* re */, - xEvent* /* event */ -#endif -); - int (*error)( -#if NeedNestedPrototypes - Display* /* display */, - xError* /* err */, - XExtCodes* /* codes */, - int* /* ret_code */ -#endif -); - char *(*error_string)( -#if NeedNestedPrototypes - Display* /* display */, - int /* code */, - XExtCodes* /* codes */, - char* /* buffer */, - int /* nbytes */ -#endif -); -} XExtensionHooks; - -extern XExtensionInfo *XextCreateExtension( -#if NeedFunctionPrototypes - void -#endif -); -extern void XextDestroyExtension( -#if NeedFunctionPrototypes - XExtensionInfo* /* info */ -#endif -); -extern XExtDisplayInfo *XextAddDisplay( -#if NeedFunctionPrototypes - XExtensionInfo* /* extinfo */, - Display* /* dpy */, - char* /* ext_name */, - XExtensionHooks* /* hooks */, - int /* nevents */, - XPointer /* data */ -#endif -); -extern int XextRemoveDisplay( -#if NeedFunctionPrototypes - XExtensionInfo* /* extinfo */, - Display* /* dpy */ -#endif -); -extern XExtDisplayInfo *XextFindDisplay( -#if NeedFunctionPrototypes - XExtensionInfo* /* extinfo */, - Display* /* dpy */ -#endif -); - -#define XextHasExtension(i) ((i) && ((i)->codes)) -#define XextCheckExtension(dpy,i,name,val) \ - if (!XextHasExtension(i)) { XMissingExtension (dpy, name); return val; } -#define XextSimpleCheckExtension(dpy,i,name) \ - if (!XextHasExtension(i)) { XMissingExtension (dpy, name); return; } - - -/* - * helper macros to generate code that is common to all extensions; caller - * should prefix it with static if extension source is in one file; this - * could be a utility function, but have to stack 6 unused arguments for - * something that is called many, many times would be bad. - */ -#define XEXT_GENERATE_FIND_DISPLAY(proc,extinfo,extname,hooks,nev,data) \ -XExtDisplayInfo *proc (Display *dpy) \ -{ \ - XExtDisplayInfo *dpyinfo; \ - if (!extinfo) { if (!(extinfo = XextCreateExtension())) return NULL; } \ - if (!(dpyinfo = XextFindDisplay (extinfo, dpy))) \ - dpyinfo = XextAddDisplay (extinfo,dpy,extname,hooks,nev,data); \ - return dpyinfo; \ -} - -#define XEXT_FIND_DISPLAY_PROTO(proc) \ - XExtDisplayInfo *proc(Display *dpy) - -#define XEXT_GENERATE_CLOSE_DISPLAY(proc,extinfo) \ -int proc (Display *dpy, XExtCodes *codes) \ -{ \ - return XextRemoveDisplay (extinfo, dpy); \ -} - -#define XEXT_CLOSE_DISPLAY_PROTO(proc) \ - int proc(Display *dpy, XExtCodes *codes) - -#define XEXT_GENERATE_ERROR_STRING(proc,extname,nerr,errl) \ -char *proc (Display *dpy, int code, XExtCodes *codes, char *buf, int n) \ -{ \ - code -= codes->first_error; \ - if (code >= 0 && code < nerr) { \ - char tmp[256]; \ - sprintf (tmp, "%s.%d", extname, code); \ - XGetErrorDatabaseText (dpy, "XProtoError", tmp, errl[code], buf, n); \ - return buf; \ - } \ - return (char *)0; \ -} - -#define XEXT_ERROR_STRING_PROTO(proc) \ - char *proc(Display *dpy, int code, XExtCodes *codes, char *buf, int n) -#endif - -#endif /* __linux__ */ diff --git a/src/native/jogl/panoramiXext.h b/src/native/jogl/panoramiXext.h deleted file mode 100644 index 11267d0c1..000000000 --- a/src/native/jogl/panoramiXext.h +++ /dev/null @@ -1,54 +0,0 @@ -/* $Xorg: panoramiXext.h,v 1.4 2000/08/18 04:05:45 coskrey Exp $ */ -/***************************************************************** -Copyright (c) 1991, 1997 Digital Equipment Corporation, Maynard, Massachusetts. -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY CLAIM, DAMAGES, INCLUDING, -BUT NOT LIMITED TO CONSEQUENTIAL OR INCIDENTAL DAMAGES, OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR -IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of Digital Equipment Corporation -shall not be used in advertising or otherwise to promote the sale, use or other -dealings in this Software without prior written authorization from Digital -Equipment Corporation. -******************************************************************/ -/* - * PanoramiX definitions - */ -/* $XFree86: xc/include/extensions/panoramiXext.h,v 3.6 2001/01/17 17:53:22 dawes Exp $ */ - -#ifdef __linux__ - -/* THIS IS NOT AN X PROJECT TEAM SPECIFICATION */ - -#define PANORAMIX_MAJOR_VERSION 1 /* current version number */ -#define PANORAMIX_MINOR_VERSION 1 - -typedef struct { - Window window; /* PanoramiX window - may not exist */ - int screen; - int State; /* PanroamiXOff, PanoramiXOn */ - int width; /* width of this screen */ - int height; /* height of this screen */ - int ScreenCount; /* real physical number of screens */ - XID eventMask; /* selected events for this client */ -} XPanoramiXInfo; - -extern XPanoramiXInfo *XPanoramiXAllocInfo ( -#if NeedFunctionPrototypes - void -#endif -); - -#endif /* __linux__*/ diff --git a/src/native/jogl/panoramiXproto.h b/src/native/jogl/panoramiXproto.h deleted file mode 100644 index 1a66940f7..000000000 --- a/src/native/jogl/panoramiXproto.h +++ /dev/null @@ -1,196 +0,0 @@ -/* $Xorg: panoramiXproto.h,v 1.4 2000/08/18 04:05:45 coskrey Exp $ */ -/***************************************************************** -Copyright (c) 1991, 1997 Digital Equipment Corporation, Maynard, Massachusetts. -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY CLAIM, DAMAGES, INCLUDING, -BUT NOT LIMITED TO CONSEQUENTIAL OR INCIDENTAL DAMAGES, OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR -IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of Digital Equipment Corporation -shall not be used in advertising or otherwise to promote the sale, use or other -dealings in this Software without prior written authorization from Digital -Equipment Corporation. -******************************************************************/ -/* $XFree86: xc/include/extensions/panoramiXproto.h,v 3.6 2001/01/17 17:53:22 dawes Exp $ */ - -#ifdef __linux__ - -/* THIS IS NOT AN X PROJECT TEAM SPECIFICATION */ - -#ifndef _PANORAMIXPROTO_H_ -#define _PANORAMIXPROTO_H_ - -#define PANORAMIX_PROTOCOL_NAME "XINERAMA" - -#define X_PanoramiXQueryVersion 0 -#define X_PanoramiXGetState 1 -#define X_PanoramiXGetScreenCount 2 -#define X_PanoramiXGetScreenSize 3 - -#define X_XineramaIsActive 4 -#define X_XineramaQueryScreens 5 - -typedef struct _PanoramiXQueryVersion { - CARD8 reqType; /* always PanoramiXReqCode */ - CARD8 panoramiXReqType; /* always X_PanoramiXQueryVersion */ - CARD16 length B16; - CARD8 clientMajor; - CARD8 clientMinor; - CARD16 unused B16; -} xPanoramiXQueryVersionReq; - -#define sz_xPanoramiXQueryVersionReq 8 - -typedef struct { - CARD8 type; /* must be X_Reply */ - CARD8 pad1; /* unused */ - CARD16 sequenceNumber B16; /* last sequence number */ - CARD32 length B32; /* 0 */ - CARD16 majorVersion B16; - CARD16 minorVersion B16; - CARD32 pad2 B32; /* unused */ - CARD32 pad3 B32; /* unused */ - CARD32 pad4 B32; /* unused */ - CARD32 pad5 B32; /* unused */ - CARD32 pad6 B32; /* unused */ -} xPanoramiXQueryVersionReply; - -#define sz_xPanoramiXQueryVersionReply 32 - - -typedef struct _PanoramiXGetState { - CARD8 reqType; /* always PanoramiXReqCode */ - CARD8 panoramiXReqType; /* always X_PanoramiXGetState */ - CARD16 length B16; - CARD32 window B32; -} xPanoramiXGetStateReq; -#define sz_xPanoramiXGetStateReq 8 - -typedef struct { - BYTE type; - BYTE state; - CARD16 sequenceNumber B16; - CARD32 length B32; - CARD32 window B32; - CARD32 pad1 B32; /* unused */ - CARD32 pad2 B32; /* unused */ - CARD32 pad3 B32; /* unused */ - CARD32 pad4 B32; /* unused */ - CARD32 pad5 B32; /* unused */ -} xPanoramiXGetStateReply; - -#define sz_panoramiXGetStateReply 32 - -typedef struct _PanoramiXGetScreenCount { - CARD8 reqType; /* always PanoramiXReqCode */ - CARD8 panoramiXReqType; /* always X_PanoramiXGetScreenCount */ - CARD16 length B16; - CARD32 window B32; -} xPanoramiXGetScreenCountReq; -#define sz_xPanoramiXGetScreenCountReq 8 - -typedef struct { - BYTE type; - BYTE ScreenCount; - CARD16 sequenceNumber B16; - CARD32 length B32; - CARD32 window B32; - CARD32 pad1 B32; /* unused */ - CARD32 pad2 B32; /* unused */ - CARD32 pad3 B32; /* unused */ - CARD32 pad4 B32; /* unused */ - CARD32 pad5 B32; /* unused */ -} xPanoramiXGetScreenCountReply; -#define sz_panoramiXGetScreenCountReply 32 - -typedef struct _PanoramiXGetScreenSize { - CARD8 reqType; /* always PanoramiXReqCode */ - CARD8 panoramiXReqType; /* always X_PanoramiXGetState */ - CARD16 length B16; - CARD32 window B32; - CARD32 screen B32; -} xPanoramiXGetScreenSizeReq; -#define sz_xPanoramiXGetScreenSizeReq 12 - -typedef struct { - BYTE type; - CARD8 pad1; - CARD16 sequenceNumber B16; - CARD32 length B32; - CARD32 width B32; - CARD32 height B32; - CARD32 window B32; - CARD32 screen B32; - CARD32 pad2 B32; /* unused */ - CARD32 pad3 B32; /* unused */ -} xPanoramiXGetScreenSizeReply; -#define sz_panoramiXGetScreenSizeReply 32 - -/************ Alternate protocol ******************/ - -typedef struct { - CARD8 reqType; - CARD8 panoramiXReqType; - CARD16 length B16; -} xXineramaIsActiveReq; -#define sz_xXineramaIsActiveReq 4 - -typedef struct { - BYTE type; - CARD8 pad1; - CARD16 sequenceNumber B16; - CARD32 length B32; - CARD32 state B32; - CARD32 pad2 B32; - CARD32 pad3 B32; - CARD32 pad4 B32; - CARD32 pad5 B32; - CARD32 pad6 B32; -} xXineramaIsActiveReply; -#define sz_XineramaIsActiveReply 32 - - -typedef struct { - CARD8 reqType; - CARD8 panoramiXReqType; - CARD16 length B16; -} xXineramaQueryScreensReq; -#define sz_xXineramaQueryScreensReq 4 - -typedef struct { - BYTE type; - CARD8 pad1; - CARD16 sequenceNumber B16; - CARD32 length B32; - CARD32 number B32; - CARD32 pad2 B32; - CARD32 pad3 B32; - CARD32 pad4 B32; - CARD32 pad5 B32; - CARD32 pad6 B32; -} xXineramaQueryScreensReply; -#define sz_XineramaQueryScreensReply 32 - -typedef struct { - INT16 x_org B16; - INT16 y_org B16; - CARD16 width B16; - CARD16 height B16; -} xXineramaScreenInfo; -#define sz_XineramaScreenInfo 8 - -#endif - -#endif /* __linux__ */ |