aboutsummaryrefslogtreecommitdiffstats
path: root/make
diff options
context:
space:
mode:
Diffstat (limited to 'make')
-rw-r--r--make/build.xml4
-rwxr-xr-xmake/glx-CustomCCode.c62
-rw-r--r--make/glx-x11.cfg26
-rw-r--r--make/stub_includes/opengl/macosx-window-system.h4
-rw-r--r--make/stub_includes/win32/wingdi.h4
-rw-r--r--make/stub_includes/x11/window-system.c23
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);