diff options
Diffstat (limited to 'make')
-rw-r--r-- | make/build.xml | 4 | ||||
-rwxr-xr-x | make/glx-CustomCCode.c | 62 | ||||
-rw-r--r-- | make/glx-x11.cfg | 26 | ||||
-rw-r--r-- | make/stub_includes/opengl/macosx-window-system.h | 4 | ||||
-rw-r--r-- | make/stub_includes/win32/wingdi.h | 4 | ||||
-rw-r--r-- | make/stub_includes/x11/window-system.c | 23 |
6 files changed, 97 insertions, 26 deletions
diff --git a/make/build.xml b/make/build.xml index ef458a537..71aeabd37 100644 --- a/make/build.xml +++ b/make/build.xml @@ -702,11 +702,13 @@ <linker id="linker.cfg.linux" name="gcc"> <syslibset dir="/usr/X11R6/lib" libs="GL, GLU, X11"/> + <syslibset dir="/usr/X11R6/lib" libs="Xxf86vm" type="static"/> <syslibset dir="${x11.cg.lib}" libs="Cg, CgGL" if="c.compiler.use-cglib"/> </linker> <linker id="linker.cfg.linux.amd64" name="gcc"> - <syslibset dir="/usr/X11R6/lib64" libs="GL, GLU, X11"/> + <syslibset dir="/usr/X11R6/lib64" libs="GL, GLU, X11, Xxf86vm"/> + <syslibset dir="/usr/X11R6/lib64" libs="Xxf86vm" type="static"/> <syslibset dir="${x11.cg.lib}" libs="Cg, CgGL" if="c.compiler.use-cglib"/> </linker> diff --git a/make/glx-CustomCCode.c b/make/glx-CustomCCode.c new file mode 100755 index 000000000..2d92b2dde --- /dev/null +++ b/make/glx-CustomCCode.c @@ -0,0 +1,62 @@ +#include <inttypes.h> +#include <X11/Xlib.h> +#include <X11/Xutil.h> +#include <GL/glx.h> +/* Linux headers don't work properly */ +#define __USE_GNU +#include <dlfcn.h> +#undef __USE_GNU + +/* Current versions of Solaris don't expose the XF86 extensions, + although with the recent transition to Xorg this will probably + happen in an upcoming release */ +#ifndef __sun +#include <X11/extensions/xf86vmode.h> +#else +/* Need to provide stubs for these */ +Bool XF86VidModeGetGammaRampSize( + Display *display, + int screen, + int* size) +{ + return False; +} + +Bool XF86VidModeGetGammaRamp( + Display *display, + int screen, + int size, + unsigned short *red array, + unsigned short *green array, + unsigned short *blue array) { + return False; +} +Bool XF86VidModeSetGammaRamp( + Display *display, + int screen, + int size, + unsigned short *red array, + unsigned short *green array, + unsigned short *blue array) { + return False; +} +#endif + +/* Need to expose DefaultScreen and RootWindow macros to Java */ +JNIEXPORT jlong JNICALL +Java_com_sun_opengl_impl_x11_GLX_DefaultScreen(JNIEnv *env, jclass _unused, jlong display) { + return DefaultScreen((Display*) (intptr_t) display); +} +JNIEXPORT jlong JNICALL +Java_com_sun_opengl_impl_x11_GLX_RootWindow(JNIEnv *env, jclass _unused, jlong display, jint screen) { + return RootWindow((Display*) (intptr_t) display, screen); +} +JNIEXPORT jlong JNICALL +Java_com_sun_opengl_impl_x11_GLX_dlsym(JNIEnv *env, jclass _unused, jstring name) { + const jbyte* chars; + void* res; + chars = (*env)->GetStringUTFChars(env, name, NULL); + res = dlsym(RTLD_DEFAULT, chars); + (*env)->ReleaseStringUTFChars(env, name, chars); + return (jlong) ((intptr_t) res); +} diff --git a/make/glx-x11.cfg b/make/glx-x11.cfg index fd381760e..801c035ee 100644 --- a/make/glx-x11.cfg +++ b/make/glx-x11.cfg @@ -15,37 +15,13 @@ CustomJavaCode GLX private static GLXProcAddressTable glxProcAddressTable = new CustomJavaCode GLX public static GLXProcAddressTable getGLXProcAddressTable() { return glxProcAddressTable; } CustomJavaCode GLX public static native long dlsym(String name); -CustomCCode #include <inttypes.h> -CustomCCode #include <X11/Xlib.h> -CustomCCode #include <X11/Xutil.h> -CustomCCode #include <GL/glx.h> -CustomCCode /* Linux headers don't work properly */ -CustomCCode #define __USE_GNU -CustomCCode #include <dlfcn.h> -CustomCCode #undef __USE_GNU +IncludeAs CustomCCode glx-CustomCCode.c ArgumentIsString XOpenDisplay 0 # Need to expose DefaultScreen and RootWindow macros to Java CustomJavaCode GLX public static native int DefaultScreen(long display); CustomJavaCode GLX public static native long RootWindow(long display, int screen); -CustomCCode JNIEXPORT jlong JNICALL -CustomCCode Java_com_sun_opengl_impl_x11_GLX_DefaultScreen(JNIEnv *env, jclass _unused, jlong display) { -CustomCCode return DefaultScreen((Display*) (intptr_t) display); -CustomCCode } -CustomCCode JNIEXPORT jlong JNICALL -CustomCCode Java_com_sun_opengl_impl_x11_GLX_RootWindow(JNIEnv *env, jclass _unused, jlong display, jint screen) { -CustomCCode return RootWindow((Display*) (intptr_t) display, screen); -CustomCCode } -CustomCCode JNIEXPORT jlong JNICALL -CustomCCode Java_com_sun_opengl_impl_x11_GLX_dlsym(JNIEnv *env, jclass _unused, jstring name) { -CustomCCode const jbyte* chars; -CustomCCode void* res; -CustomCCode chars = (*env)->GetStringUTFChars(env, name, NULL); -CustomCCode res = dlsym(RTLD_DEFAULT, chars); -CustomCCode (*env)->ReleaseStringUTFChars(env, name, chars); -CustomCCode return (jlong) ((intptr_t) res); -CustomCCode } # Get returned array's capacity from XGetVisualInfo to be correct TemporaryCVariableDeclaration XGetVisualInfo int count; diff --git a/make/stub_includes/opengl/macosx-window-system.h b/make/stub_includes/opengl/macosx-window-system.h index 46ee1c45d..3eb6ce514 100644 --- a/make/stub_includes/opengl/macosx-window-system.h +++ b/make/stub_includes/opengl/macosx-window-system.h @@ -44,3 +44,7 @@ void setContextTextureImageToPBuffer(void* nsContext, void* pBuffer, int colorBu void* getProcAddress(const char *procName); void setSwapInterval(void* nsContext, int interval); + +/* Gamma-related functionality */ +Bool setGammaRamp(int tableSize, float* redRamp, float* greenRamp, float* blueRamp); +void resetGammaRamp(); diff --git a/make/stub_includes/win32/wingdi.h b/make/stub_includes/win32/wingdi.h index 35f754178..4d980755b 100644 --- a/make/stub_includes/win32/wingdi.h +++ b/make/stub_includes/win32/wingdi.h @@ -210,3 +210,7 @@ WINUSERAPI BOOL WINAPI ShowWindow(HWND hWnd, int nCmdShow); WINUSERAPI HDC WINAPI GetDC(HWND); WINUSERAPI int WINAPI ReleaseDC(HWND hWnd, HDC hDC); WINUSERAPI BOOL WINAPI DestroyWindow(HWND hWnd); + +// Routines for changing gamma ramp of display device +WINGDIAPI BOOL WINAPI GetDeviceGammaRamp(HDC,LPVOID); +WINGDIAPI BOOL WINAPI SetDeviceGammaRamp(HDC,LPVOID); diff --git a/make/stub_includes/x11/window-system.c b/make/stub_includes/x11/window-system.c index 6af85eeb9..00b474899 100644 --- a/make/stub_includes/x11/window-system.c +++ b/make/stub_includes/x11/window-system.c @@ -35,3 +35,26 @@ extern int XFreePixmap( Display* /* display */, Pixmap /* pixmap */ ); + +// Routines for changing gamma settings. +// Note that these are not currently supported on Solaris. +Bool XF86VidModeGetGammaRampSize( + Display *display, + int screen, + int* size); + +Bool XF86VidModeGetGammaRamp( + Display *display, + int screen, + int size, + unsigned short *red_array, + unsigned short *green_array, + unsigned short *blue_array); + +Bool XF86VidModeSetGammaRamp( + Display *display, + int screen, + int size, + unsigned short *red_array, + unsigned short *green_array, + unsigned short *blue_array); |