aboutsummaryrefslogtreecommitdiffstats
path: root/make/stub_includes/win32
diff options
context:
space:
mode:
authorSven Gothel <[email protected]>2010-06-10 09:35:06 +0200
committerSven Gothel <[email protected]>2010-06-10 09:35:06 +0200
commit1d333a771ce0bc7c8594e21d031703f698f06a46 (patch)
tree933d470582896320855fa1d98c1a917edc412c24 /make/stub_includes/win32
parent4512900ddcb9ce9a498411d257b1b6d6010ec006 (diff)
Fix: Locking/Threading; Common IntIntHashMap and Buffers; Fix: glMap*Buffer*; GLX/WGL/CgGL: All runtime dynamic; Misc ..
TODO: Compile and test on MacOSX .. Fix: ===== Multithreading/Locking: See jogl/doc/Implementation/MultiThreading.txt - Locking layer is not platform agnostic, ie GLContextImpl, GLDrawableImpl, .. and NEWT: Window/Display - No more use of JAWT global lock necessary, removed. - No need for X11 Display lock, on the contrary, this made the NV driver hang. - Use common window/surface lock - All NativeWindow surfaceLock's are recursive now glMapBuffer: If size is 0, don't do cont with the native call. glMapBufferRange: Fix capacity. glNamedBufferDataEXT: Track the size. glMapNamedBufferEXT: Manual impl. - use the tracked size glXGetVisualFromFBConfig, glXChooseFBConfig, glXChooseVisual: Instead of ignoring and implement a renamed version (*Copied), we just use ManualImplementation for the proper copy-result code. DesktopGLDynamicLookupHelper: Initialize _hasGLBinding* attributes in the determing loadGLJNILibrary() method, which is called by super(). Otherwise static init will overwrite them after the super() call. X11GLXDrawableFactory: Don't release anything at shutdown (removed sharedContext.destroy()), since this caused a freeze/SEGV sometimes. Fixed NEWT's reparentWindow() functionality incl NewtCanvasAWT usage. - Native: if not visible, don't focus, etc - NewtCanvasAWT: Use the container size to start with - Run the command on the EDT Using GlueGen's new DynamicLibraryBundle utility: - X11, Windows and MacOSX OpenGL adapted to DynamicLibraryBundleInfo. - X11GLXDynamicLookupHelper -> X11GLXDynamicLibraryBundleInfo - Remove all path from lib names. - GL order: libGL.so.1, libGL.so, GL - shallLinkGlobal: true -> to server some 'old' DRI systems -> http://dri.sourceforge.net/doc/DRIuserguide.html - shallLookupGlobal: false - Try both : glXGetProcAddressARB and glXGetProcAddress - Using bootstrap: GLX.glXGetProcAddress(long glxGetProcAddressHandle, String glFuncName) Found the issue with LIBGL_DRIVERS_PATH, ie if not set no valid GL instance can be found (ie ATI fglrx/DRI). This may happen if using a differen user than the desktop user for whom the env var is set within some /etc/X11/Xsession.d/ script. Enhancements: ============= GLBufferSizeTracker: Use IntIntHashMap and add DirectState size tracking. GLBufferStateTracker: Use IntIntHashMap. GLStateTracker: Use IntIntHashMap. GLDynamicLookupHelper: More generic (global loading/lookup and GetProcAddress function name list), remove redundant code. FIXME: MacOSXCGLDynamicLookupHelper: - Not tested - Not using NSImage lookup anymore as recommended by OSX API Doc, so dlsym is used always (to be tested) WindowsWGLDynamicLookupHelper: - Not tested GLX/WGL/CgGL is all runtime-dynamic as now, ie loaded and looked-up at runtime, no compile time dependencies to GL anymore, nor a need to specify CgGL. Split up WGL in GDI and WGL, to allow proper dynamic runtime linkage of OpenGL32 while using static binding to GDI32 NEWT events generated by native code are enqueued and not send directly. This should ease locking mechanisms .. if any are necessary. NEWT: More platform specific code moved to *Impl method, simplifying the generic code of the superclass and impl protocol. Cleanup: ========= Replace all InternalBufferUtil's with com.jogamp.common.nio.Buffers Removed all InternalBufferUtil's from repository Removed GLContextImpl notion of 'optimized' surface locking, where the surface gets unlocked during makeCurrent/release. This just makes no sense and would impact multithreading in a horrible way.
Diffstat (limited to 'make/stub_includes/win32')
-rw-r--r--make/stub_includes/win32/window-system0.c (renamed from make/stub_includes/win32/window-system.c)0
-rw-r--r--make/stub_includes/win32/window-system1.c2
-rw-r--r--make/stub_includes/win32/windows.h8
-rw-r--r--make/stub_includes/win32/wingdi.h50
-rw-r--r--make/stub_includes/win32/winwgl.h72
5 files changed, 84 insertions, 48 deletions
diff --git a/make/stub_includes/win32/window-system.c b/make/stub_includes/win32/window-system0.c
index c5c5d37b9..c5c5d37b9 100644
--- a/make/stub_includes/win32/window-system.c
+++ b/make/stub_includes/win32/window-system0.c
diff --git a/make/stub_includes/win32/window-system1.c b/make/stub_includes/win32/window-system1.c
new file mode 100644
index 000000000..f74488c63
--- /dev/null
+++ b/make/stub_includes/win32/window-system1.c
@@ -0,0 +1,2 @@
+#include <windows.h>
+#include <winwgl.h>
diff --git a/make/stub_includes/win32/windows.h b/make/stub_includes/win32/windows.h
index 647a5733d..20d424a79 100644
--- a/make/stub_includes/win32/windows.h
+++ b/make/stub_includes/win32/windows.h
@@ -34,14 +34,6 @@ typedef unsigned int UINT;
typedef unsigned short USHORT;
typedef unsigned short WORD;
-typedef struct tagRECT
- {
- LONG left;
- LONG top;
- LONG right;
- LONG bottom;
- } RECT;
-
/* Necessary handle typedefs for parsing wglext.h */
typedef HANDLE HPBUFFERARB;
diff --git a/make/stub_includes/win32/wingdi.h b/make/stub_includes/win32/wingdi.h
index a0a4194b5..4a034e81c 100644
--- a/make/stub_includes/win32/wingdi.h
+++ b/make/stub_includes/win32/wingdi.h
@@ -8,6 +8,15 @@
#ifndef WGL_GDI_VERSION_1_X
+/**
+typedef struct tagRECT
+ {
+ LONG left;
+ LONG top;
+ LONG right;
+ LONG bottom;
+ } RECT; */
+
typedef struct tagRGBQUAD {
BYTE rgbBlue;
BYTE rgbGreen;
@@ -85,37 +94,6 @@ typedef struct tagPIXELFORMATDESCRIPTOR
#define PFD_MAIN_PLANE 0
#define PFD_OVERLAY_PLANE 1
#define PFD_UNDERLAY_PLANE (-1)
-#define WGL_SWAP_MAIN_PLANE 1
-#define WGL_SWAP_OVERLAY1 2
-#define WGL_SWAP_OVERLAY2 4
-#define WGL_SWAP_OVERLAY3 8
-#define WGL_SWAP_OVERLAY4 16
-#define WGL_SWAP_OVERLAY5 32
-#define WGL_SWAP_OVERLAY6 64
-#define WGL_SWAP_OVERLAY7 128
-#define WGL_SWAP_OVERLAY8 256
-#define WGL_SWAP_OVERLAY9 512
-#define WGL_SWAP_OVERLAY10 1024
-#define WGL_SWAP_OVERLAY11 2048
-#define WGL_SWAP_OVERLAY12 4096
-#define WGL_SWAP_OVERLAY13 8192
-#define WGL_SWAP_OVERLAY14 16384
-#define WGL_SWAP_OVERLAY15 32768
-#define WGL_SWAP_UNDERLAY1 65536
-#define WGL_SWAP_UNDERLAY2 0x20000
-#define WGL_SWAP_UNDERLAY3 0x40000
-#define WGL_SWAP_UNDERLAY4 0x80000
-#define WGL_SWAP_UNDERLAY5 0x100000
-#define WGL_SWAP_UNDERLAY6 0x200000
-#define WGL_SWAP_UNDERLAY7 0x400000
-#define WGL_SWAP_UNDERLAY8 0x800000
-#define WGL_SWAP_UNDERLAY9 0x1000000
-#define WGL_SWAP_UNDERLAY10 0x2000000
-#define WGL_SWAP_UNDERLAY11 0x4000000
-#define WGL_SWAP_UNDERLAY12 0x8000000
-#define WGL_SWAP_UNDERLAY13 0x10000000
-#define WGL_SWAP_UNDERLAY14 0x20000000
-#define WGL_SWAP_UNDERLAY15 0x40000000
/* PIXELFORMATDESCRIPTOR flags */
#define PFD_DOUBLEBUFFER 0x00000001
@@ -178,16 +156,7 @@ WINGDIAPI int WINAPI ChoosePixelFormat(HDC, CONST PIXELFORMATDESCRIPTOR *);
WINGDIAPI int WINAPI DescribePixelFormat(HDC, int, UINT, LPPIXELFORMATDESCRIPTOR);
WINGDIAPI int WINAPI GetPixelFormat(HDC);
WINGDIAPI BOOL WINAPI SetPixelFormat(HDC, int, CONST PIXELFORMATDESCRIPTOR *);
-WINGDIAPI BOOL WINAPI wglCopyContext(HGLRC, HGLRC, UINT);
-WINGDIAPI HGLRC WINAPI wglCreateContext(HDC);
-WINGDIAPI BOOL WINAPI wglDeleteContext(HGLRC);
-WINGDIAPI HGLRC WINAPI wglGetCurrentContext(VOID);
-WINGDIAPI HDC WINAPI wglGetCurrentDC(VOID);
-WINGDIAPI BOOL WINAPI wglMakeCurrent(HDC, HGLRC);
-WINGDIAPI BOOL WINAPI wglShareLists(HGLRC, HGLRC);
WINGDIAPI BOOL WINAPI SwapBuffers(HDC);
-WINGDIAPI PROC WINAPI wglGetProcAddress(LPCSTR);
-WINGDIAPI BOOL WINAPI wglSwapLayerBuffers(HDC,UINT);
/* --- FIXME: need to handle these entry points!
WINGDIAPI HGLRC WINAPI wglCreateLayerContext(HDC, int);
@@ -221,3 +190,4 @@ WINGDIAPI BOOL WINAPI GetDeviceGammaRamp(HDC,LPVOID);
WINGDIAPI BOOL WINAPI SetDeviceGammaRamp(HDC,LPVOID);
#endif /* WGL_GDI_VERSION_1_X */
+
diff --git a/make/stub_includes/win32/winwgl.h b/make/stub_includes/win32/winwgl.h
new file mode 100644
index 000000000..27b43f915
--- /dev/null
+++ b/make/stub_includes/win32/winwgl.h
@@ -0,0 +1,72 @@
+/*
+ * Essential wgl and supporting routines and data structures extracted
+ * from WINGDI.H.
+ *
+ * Copyright (c) 1985-1997, Microsoft Corp. All rights reserved.
+ *
+ */
+
+#ifndef WGL_GDI_VERSION_1_X
+
+/* layer types */
+#define WGL_SWAP_MAIN_PLANE 1
+#define WGL_SWAP_OVERLAY1 2
+#define WGL_SWAP_OVERLAY2 4
+#define WGL_SWAP_OVERLAY3 8
+#define WGL_SWAP_OVERLAY4 16
+#define WGL_SWAP_OVERLAY5 32
+#define WGL_SWAP_OVERLAY6 64
+#define WGL_SWAP_OVERLAY7 128
+#define WGL_SWAP_OVERLAY8 256
+#define WGL_SWAP_OVERLAY9 512
+#define WGL_SWAP_OVERLAY10 1024
+#define WGL_SWAP_OVERLAY11 2048
+#define WGL_SWAP_OVERLAY12 4096
+#define WGL_SWAP_OVERLAY13 8192
+#define WGL_SWAP_OVERLAY14 16384
+#define WGL_SWAP_OVERLAY15 32768
+#define WGL_SWAP_UNDERLAY1 65536
+#define WGL_SWAP_UNDERLAY2 0x20000
+#define WGL_SWAP_UNDERLAY3 0x40000
+#define WGL_SWAP_UNDERLAY4 0x80000
+#define WGL_SWAP_UNDERLAY5 0x100000
+#define WGL_SWAP_UNDERLAY6 0x200000
+#define WGL_SWAP_UNDERLAY7 0x400000
+#define WGL_SWAP_UNDERLAY8 0x800000
+#define WGL_SWAP_UNDERLAY9 0x1000000
+#define WGL_SWAP_UNDERLAY10 0x2000000
+#define WGL_SWAP_UNDERLAY11 0x4000000
+#define WGL_SWAP_UNDERLAY12 0x8000000
+#define WGL_SWAP_UNDERLAY13 0x10000000
+#define WGL_SWAP_UNDERLAY14 0x20000000
+#define WGL_SWAP_UNDERLAY15 0x40000000
+
+#endif /* WGL_GDI_VERSION_1_X */
+
+#ifndef WGL_GDI_VERSION_1_X
+#define WGL_GDI_VERSION_1_X
+
+// OpenGL-related routines
+WINGDIAPI BOOL WINAPI wglCopyContext(HGLRC, HGLRC, UINT);
+WINGDIAPI HGLRC WINAPI wglCreateContext(HDC);
+WINGDIAPI BOOL WINAPI wglDeleteContext(HGLRC);
+WINGDIAPI HGLRC WINAPI wglGetCurrentContext(VOID);
+WINGDIAPI HDC WINAPI wglGetCurrentDC(VOID);
+WINGDIAPI BOOL WINAPI wglMakeCurrent(HDC, HGLRC);
+WINGDIAPI BOOL WINAPI wglShareLists(HGLRC, HGLRC);
+WINGDIAPI PROC WINAPI wglGetProcAddress(LPCSTR);
+WINGDIAPI BOOL WINAPI wglSwapLayerBuffers(HDC,UINT);
+
+/* --- FIXME: need to handle these entry points!
+WINGDIAPI HGLRC WINAPI wglCreateLayerContext(HDC, int);
+WINGDIAPI BOOL WINAPI wglUseFontBitmapsA(HDC, DWORD, DWORD, DWORD);
+WINGDIAPI BOOL WINAPI wglUseFontBitmapsW(HDC, DWORD, DWORD, DWORD);
+#ifdef UNICODE
+#define wglUseFontBitmaps wglUseFontBitmapsW
+#else
+#define wglUseFontBitmaps wglUseFontBitmapsA
+#endif // !UNICODE
+*/
+
+#endif /* WGL_GDI_VERSION_1_X */
+