summaryrefslogtreecommitdiffstats
path: root/make
diff options
context:
space:
mode:
authorSven Gothel <[email protected]>2011-11-05 05:45:19 +0100
committerSven Gothel <[email protected]>2011-11-05 05:45:19 +0100
commitfe4f9f3f83cda05052549cc34fb3f7acb4eabb9c (patch)
treeb4968ddd865bb881832e4b335b18cbdddfda9e59 /make
parent34ef2815dd0f4dc84f35fe5bf72ea876d4b9e882 (diff)
OSX: CGL type cleanup ; layeredSurface impl.
- Use proper OSX types for NS/CGL prototypes (gluegen) and impl. - Impl layeredSurface (native): - OSXUtil: NSView backing creation - OSXUtil: AttachJAWTSurfaceLayer - CGL: NSOpenGLLayer type impl. and hook
Diffstat (limited to 'make')
-rw-r--r--make/build-nativewindow.xml10
-rw-r--r--make/config/jogl/cgl-macosx.cfg6
-rw-r--r--make/stub_includes/macosx/AppKit/NSOpenGL.h3
-rw-r--r--make/stub_includes/macosx/AppKit/NSOpenGLLayer.h1
-rw-r--r--make/stub_includes/macosx/AppKit/NSOpenGLView.h1
-rw-r--r--make/stub_includes/macosx/OpenGL/CGLDevice.h2
-rw-r--r--make/stub_includes/macosx/OpenGL/OpenGL.h31
-rw-r--r--make/stub_includes/macosx/QuartzCore/CALayer.h1
-rw-r--r--make/stub_includes/opengl/macosx-window-system.h67
9 files changed, 76 insertions, 46 deletions
diff --git a/make/build-nativewindow.xml b/make/build-nativewindow.xml
index 4bbe667b8..b50871a24 100644
--- a/make/build-nativewindow.xml
+++ b/make/build-nativewindow.xml
@@ -354,6 +354,10 @@
<compilerarg value="-I/usr/X11R6/include" />
</compiler>
+ <compiler id="compiler.cfg.macosx.nativewindow" extends="compiler.cfg.macosx">
+ <compilerarg value="-I${java.osx.frameworks.dir}/JavaNativeFoundation.framework/Headers" />
+ </compiler>
+
<!-- linker configuration -->
<linker id="linker.cfg.freebsd.nativewindow.x11" extends="linker.cfg.freebsd">
@@ -444,6 +448,10 @@
<linker id="linker.cfg.macosx.nativewindow" extends="linker.cfg.macosx">
<linkerarg value="-framework" />
<linkerarg value="Cocoa" />
+ <linkerarg value="-framework" />
+ <linkerarg value="JavaNativeFoundation" />
+ <linkerarg value="-F" />
+ <linkerarg value="${java.osx.frameworks.dir}" />
</linker>
<linker id="linker.cfg.hpux.nativewindow" extends="linker.cfg.hpux">
@@ -547,7 +555,7 @@
<target name="c.configure.x11" if="isX11" />
<target name="c.configure.macosx" if="isOSX">
- <property name="compiler.cfg.id" value="compiler.cfg.macosx" />
+ <property name="compiler.cfg.id" value="compiler.cfg.macosx.nativewindow" />
<property name="linker.cfg.id.oswin" value="linker.cfg.macosx.nativewindow" />
</target>
diff --git a/make/config/jogl/cgl-macosx.cfg b/make/config/jogl/cgl-macosx.cfg
index 06bc94626..6be8abe76 100644
--- a/make/config/jogl/cgl-macosx.cfg
+++ b/make/config/jogl/cgl-macosx.cfg
@@ -20,6 +20,12 @@ Opaque long CGLShareGroupObj
Opaque long CGLPBufferObj
Opaque long CGLPixelFormatObj
+Opaque long NSOpenGLPixelFormat *
+Opaque long NSOpenGLContext *
+Opaque long NSView *
+Opaque long NSOpenGLPixelBuffer *
+Opaque long NSOpenGLLayer *
+
CustomCCode #include </usr/include/machine/types.h>
CustomCCode #include "macosx-window-system.h"
diff --git a/make/stub_includes/macosx/AppKit/NSOpenGL.h b/make/stub_includes/macosx/AppKit/NSOpenGL.h
new file mode 100644
index 000000000..1b7656dc1
--- /dev/null
+++ b/make/stub_includes/macosx/AppKit/NSOpenGL.h
@@ -0,0 +1,3 @@
+typedef struct _NSOpenGLPixelFormat NSOpenGLPixelFormat;
+typedef struct _NSOpenGLContext NSOpenGLContext;
+typedef struct _NSOpenGLPixelBuffer NSOpenGLPixelBuffer;
diff --git a/make/stub_includes/macosx/AppKit/NSOpenGLLayer.h b/make/stub_includes/macosx/AppKit/NSOpenGLLayer.h
new file mode 100644
index 000000000..2e5e81a68
--- /dev/null
+++ b/make/stub_includes/macosx/AppKit/NSOpenGLLayer.h
@@ -0,0 +1 @@
+typedef struct _NSOpenGLLayer NSOpenGLLayer;
diff --git a/make/stub_includes/macosx/AppKit/NSOpenGLView.h b/make/stub_includes/macosx/AppKit/NSOpenGLView.h
new file mode 100644
index 000000000..6492287df
--- /dev/null
+++ b/make/stub_includes/macosx/AppKit/NSOpenGLView.h
@@ -0,0 +1 @@
+typedef struct _NSOpenGLView NSOpenGLView;
diff --git a/make/stub_includes/macosx/OpenGL/CGLDevice.h b/make/stub_includes/macosx/OpenGL/CGLDevice.h
new file mode 100644
index 000000000..1d4170975
--- /dev/null
+++ b/make/stub_includes/macosx/OpenGL/CGLDevice.h
@@ -0,0 +1,2 @@
+typedef struct _cglShareGroupObj* CGLShareGroupObj;
+
diff --git a/make/stub_includes/macosx/OpenGL/OpenGL.h b/make/stub_includes/macosx/OpenGL/OpenGL.h
index 1a3ddf203..33cfa46b6 100644
--- a/make/stub_includes/macosx/OpenGL/OpenGL.h
+++ b/make/stub_includes/macosx/OpenGL/OpenGL.h
@@ -2,10 +2,13 @@
OpenGL.h to expose portions of the low-level CGL API to Java */
/* Typedefs to get things working */
-typedef struct _cglObj* CGLContextObj;
-typedef struct _cglObj* CGLShareGroupObj;
-typedef struct _cglObj* CGLPBufferObj;
-typedef struct _cglObj* CGLPixelFormatObj;
+typedef struct _cglContextObj* CGLContextObj;
+typedef struct _cglPBufferObj* CGLPBufferObj;
+typedef struct _cglPixelFormatObj* CGLPixelFormatObj;
+
+typedef int GLint; /* 4-byte signed */
+typedef unsigned int GLenum;
+typedef int GLsizei; /* 4-byte signed */
/*
** Attribute names for CGLChoosePixelFormat and CGLDescribePixelFormat.
@@ -105,7 +108,7 @@ typedef enum _CGLContextParameter {
/* Pixel format manipulation */
CGLError CGLChoosePixelFormat(const CGLPixelFormatAttribute *attribs,
CGLPixelFormatObj *pix,
- long *npix);
+ GLint *npix);
CGLError CGLDestroyPixelFormat(CGLPixelFormatObj pix);
CGLPixelFormatObj CGLGetPixelFormat ( CGLContextObj ctx );
@@ -123,16 +126,16 @@ CGLError CGLCopyContext ( CGLContextObj src, CGLContextObj dst, int mask );
CGLShareGroupObj CGLGetShareGroup(CGLContextObj ctx);
-/* PBuffer manipulation */
-CGLError CGLCreatePBuffer(long width,
- long height,
- unsigned long target,
- unsigned long internalFormat,
- long max_level,
+/* PBuffer manipulation (deprecated in 10.7) */
+CGLError CGLCreatePBuffer(GLsizei width,
+ GLsizei height,
+ GLenum target,
+ GLenum internalFormat,
+ GLint max_level,
CGLPBufferObj* pbuffer);
CGLError CGLDestroyPBuffer(CGLPBufferObj pbuffer);
CGLError CGLSetPBuffer(CGLContextObj ctx,
CGLPBufferObj pbuffer,
- unsigned long face,
- long level,
- long screen);
+ GLenum face,
+ GLint level,
+ GLint screen);
diff --git a/make/stub_includes/macosx/QuartzCore/CALayer.h b/make/stub_includes/macosx/QuartzCore/CALayer.h
new file mode 100644
index 000000000..a5a6579a6
--- /dev/null
+++ b/make/stub_includes/macosx/QuartzCore/CALayer.h
@@ -0,0 +1 @@
+typedef struct _CALayer CALayer;
diff --git a/make/stub_includes/opengl/macosx-window-system.h b/make/stub_includes/opengl/macosx-window-system.h
index 65d8e41f7..fe0c0b1bc 100644
--- a/make/stub_includes/opengl/macosx-window-system.h
+++ b/make/stub_includes/opengl/macosx-window-system.h
@@ -7,55 +7,60 @@
compilation then the build fails.
*/
+#include <AppKit/NSView.h>
+#include <AppKit/NSOpenGL.h>
+#include <AppKit/NSOpenGLLayer.h>
+// #include <AppKit/NSOpenGLView.h>
+#include <OpenGL/CGLDevice.h>
+#include <OpenGL/OpenGL.h>
+
typedef int Bool;
// CGL ..
-void CGLQueryPixelFormat(void* pixelFormat, int* iattrs, int niattrs, int* ivalues);
+void CGLQueryPixelFormat(CGLPixelFormatObj fmt, int* iattrs, int niattrs, int* ivalues);
// NS ..
-void* createPixelFormat(int* iattrs, int niattrs, int* ivalues);
-void queryPixelFormat(void* pixelFormat, int* iattrs, int niattrs, int* ivalues);
-void deletePixelFormat(void* pixelFormat);
+NSOpenGLPixelFormat* createPixelFormat(int* iattrs, int niattrs, int* ivalues);
+void queryPixelFormat(NSOpenGLPixelFormat* fmt, int* iattrs, int niattrs, int* ivalues);
+void deletePixelFormat(NSOpenGLPixelFormat* fmt);
// NS ..
-void *getCurrentContext(void);
-void *getNSView(void* nsContext);
+NSOpenGLContext* getCurrentContext(void);
+CGLContextObj getCGLContext(NSOpenGLContext* ctx);
+NSView* getNSView(NSOpenGLContext* ctx);
-void* createContext(void* shareContext,
- void* nsView,
- void* pixelFormat,
+NSOpenGLContext* createContext(NSOpenGLContext* shareContext,
+ NSView* nsView,
+ Bool isBackingLayerView,
+ NSOpenGLPixelFormat* pixelFormat,
Bool opaque,
int* viewNotReady);
-void *getCGLContext(void* nsContext);
-Bool makeCurrentContext(void* nsContext);
-Bool clearCurrentContext(void *nsContext);
-Bool deleteContext(void* nsContext, Bool releaseOnMainThread);
-Bool flushBuffer(void* nsContext);
-void setContextOpacity(void* nsContext, int opacity);
-void updateContext(void* nsContext);
-void copyContext(void* destContext, void* srcContext, int mask);
-
-void* updateContextRegister(void* nsContext, void* nsView);
+Bool makeCurrentContext(NSOpenGLContext* ctx);
+Bool clearCurrentContext(NSOpenGLContext *ctx);
+Bool deleteContext(NSOpenGLContext* ctx, Bool releaseOnMainThread);
+Bool flushBuffer(NSOpenGLContext* ctx);
+void setContextOpacity(NSOpenGLContext* ctx, int opacity);
+void updateContext(NSOpenGLContext* ctx);
+void copyContext(NSOpenGLContext* dest, NSOpenGLContext* src, int mask);
+
+void* updateContextRegister(NSOpenGLContext* ctx, NSView* view);
Bool updateContextNeedsUpdate(void* updater);
void updateContextUnregister(void* updater);
-void* createPBuffer(int renderTarget, int internalFormat, int width, int height);
-Bool destroyPBuffer(void* pBuffer);
-void setContextPBuffer(void* nsContext, void* pBuffer);
-void setContextTextureImageToPBuffer(void* nsContext, void* pBuffer, int colorBuffer);
+NSOpenGLPixelBuffer* createPBuffer(int renderTarget, int internalFormat, int width, int height);
+Bool destroyPBuffer(NSOpenGLPixelBuffer* pBuffer);
+void setContextPBuffer(NSOpenGLContext* ctx, NSOpenGLPixelBuffer* pBuffer);
+void setContextTextureImageToPBuffer(NSOpenGLContext* ctx, NSOpenGLPixelBuffer* pBuffer, int colorBuffer);
+
+NSOpenGLLayer* createNSOpenGLLayer(NSOpenGLContext* ctx, NSOpenGLPixelFormat* fmt, NSView* view, Bool opaque);
+void setNSOpenGLLayerNeedsDisplay(NSOpenGLLayer* glLayer);
+void releaseNSOpenGLLayer(NSOpenGLLayer *glLayer);
void* getProcAddress(const char *procName);
-void setSwapInterval(void* nsContext, int interval);
+void setSwapInterval(NSOpenGLContext* ctx, int interval);
/* Gamma-related functionality */
Bool setGammaRamp(int tableSize, float* redRamp, float* greenRamp, float* blueRamp);
void resetGammaRamp();
-/****************************************************************************************/
-/* Java2D/JOGL bridge support; need to be able to create pbuffers and
- contexts using the CGL APIs to be able to share textures, etc. with
- contexts created by Java2D/JOGL bridge, which are CGLContextObjs */
-
-/* Pick up copies of CGL signatures from Mac OS X stub_includes/window-system-build directory */
-#include <OpenGL/OpenGL.h>