diff options
author | Sven Gothel <[email protected]> | 2010-06-04 05:21:32 +0200 |
---|---|---|
committer | Sven Gothel <[email protected]> | 2010-06-04 05:21:32 +0200 |
commit | 4512900ddcb9ce9a498411d257b1b6d6010ec006 (patch) | |
tree | ae9878c82cda41920f46ea639178f7d951d5af8f /make | |
parent | 6bbf70d2f4a06b8aa0b100d83ed9aca6dd80040e (diff) |
JOGL: Unify library loading (impl and binding), incl. lookup ; GLAutoDrawable: dispose() calls only with created context.
- Using the EGL approach of DynamicLookupHelper,
now generalized in abstract GLDynamicLookupHelper,
DesktopGLDynamicLookupHelper and EGLGLDynamicLookupHelper.
The implementation of these are self contained.
- Sharing common code.
- Unifying implementation and binding loading,
as well as the function lookup within the impl libs.
- Removed DRIHack, since its no more required
due to the new DesktopGLDynamicLookupHelper.
- Removed compile time link to GL and GLU libs
- Removed redundant library OS functions from X11/WGL
bindings, GlueGen's common code is being used now.
- GLAutoDrawable: dispose() calls only with created context.
This cleans up stack traces in case of eventual bugs,
where context creation is not successful.
Diffstat (limited to 'make')
-rw-r--r-- | make/build-jogl.xml | 119 | ||||
-rw-r--r-- | make/build-junit.xml | 19 | ||||
-rw-r--r-- | make/config/jogl/glu-CustomJavaCode-gl2.java | 15 | ||||
-rwxr-xr-x | make/config/jogl/glu-CustomJavaCode-gl2es1.java | 27 | ||||
-rw-r--r-- | make/config/jogl/wgl-win32.cfg | 2 | ||||
-rw-r--r-- | make/config/nativewindow/x11-CustomJavaCode.java | 3 | ||||
-rwxr-xr-x | make/scripts/java-run-all.sh | 1 | ||||
-rw-r--r-- | make/scripts/make.jogl.all.linux-x86.sh | 4 | ||||
-rw-r--r-- | make/scripts/make.jogl.all.linux-x86_64.sh | 3 | ||||
-rw-r--r-- | make/stub_includes/win32/wingdi.h | 2 |
10 files changed, 62 insertions, 133 deletions
diff --git a/make/build-jogl.xml b/make/build-jogl.xml index 0dd04ccb8..9203542a7 100644 --- a/make/build-jogl.xml +++ b/make/build-jogl.xml @@ -1103,13 +1103,12 @@ <!-- linker configuration --> - <linker id="linker.cfg.linux.jogl.gl2" extends="linker.cfg.linux"> + <linker id="linker.cfg.linux.jogl.x11" extends="linker.cfg.linux"> <syslibset libs="X11"/> <syslibset libs="Xxf86vm" /> - <syslibset libs="GL"/> </linker> - <linker id="linker.cfg.linux.jogl.cg" extends="linker.cfg.linux.jogl.gl2"> + <linker id="linker.cfg.linux.jogl.cg" extends="linker.cfg.linux.jogl.x11"> <syslibset dir="${x11.cg.lib32}" libs="Cg, CgGL"/> </linker> @@ -1118,77 +1117,47 @@ <syslibset libs="Xxf86vm" /> </linker> - <linker id="linker.cfg.linux.amd64.jogl.gl2" extends="linker.cfg.linux.amd64.jogl.x11"> - <syslibset libs="GL"/> - </linker> - - <linker id="linker.cfg.linux.amd64.jogl.cg" extends="linker.cfg.linux.amd64.jogl.gl2"> - <syslibset dir="${x11.cg.lib64}" libs="Cg, CgGL"/> - </linker> - <linker id="linker.cfg.solaris.jogl.x11" extends="linker.cfg.solaris"> <syslibset libs="X11"/> </linker> - <linker id="linker.cfg.solaris.jogl.gl2" extends="linker.cfg.solaris.jogl.x11"> - <syslibset libs="GL"/> - </linker> - - <linker id="linker.cfg.solaris.jogl.cg" extends="linker.cfg.solaris.jogl.gl2"> - <syslibset dir="${x11.cg.lib32}" libs="Cg, CgGL"/> - </linker> - - <linker id="linker.cfg.solaris.sparcv9.jogl.gl2" extends="linker.cfg.solaris.sparcv9"> + <linker id="linker.cfg.solaris.sparcv9.jogl.x11" extends="linker.cfg.solaris.sparcv9"> <linkerarg value="-xarch=v9a" /> - <syslibset dir="/usr/openwin/lib/sparcv9" libs="GL"/> <syslibset dir="/usr/lib/sparcv9" libs="X11"/> </linker> - <linker id="linker.cfg.solaris.amd64.jogl.gl2" extends="linker.cfg.solaris.amd64"> + <linker id="linker.cfg.solaris.amd64.jogl.x11" extends="linker.cfg.solaris.amd64"> <linkerarg value="-xarch=amd64" /> - <syslibset dir="/usr/lib/amd64" libs="GL"/> <syslibset dir="/usr/lib/amd64" libs="X11"/> </linker> <linker id="linker.cfg.win32.mingw.jogl" extends="linker.cfg.win32.mingw"> <linkerarg value="-Wl,--kill-at" /> <!-- remove @ from function names --> - <syslibset libs="opengl32, glu32, gdi32, kernel32"/> - </linker> - - <linker id="linker.cfg.win32.mingw.jogl.cg" extends="linker.cfg.win32.mingw.jogl"> - <syslibset dir="${windows.cg.lib32}" libs="cg, cgGL"/> + <syslibset libs="gdi32, kernel32"/> </linker> <linker id="linker.cfg.win64.mingw.jogl" extends="linker.cfg.win64.mingw"> <linkerarg value="-Wl,--kill-at" /> <!-- remove @ from function names --> - <syslibset libs="opengl32, glu32, gdi32, kernel32"/> - </linker> - - <linker id="linker.cfg.win64.mingw.jogl.cg" extends="linker.cfg.win64.mingw.jogl"> - <syslibset dir="${windows.cg.lib64}" libs="cg, cgGL"/> + <syslibset libs="gdi32, kernel32"/> </linker> <linker id="linker.cfg.win32.msvc.jogl" extends="linker.cfg.win32.msvc"> - <syslibset libs="opengl32, gdi32, user32, kernel32" /> + <syslibset libs="user32, kernel32" /> <!-- This is temporary --> <syslibset libs="winmm" /> </linker> - <linker id="linker.cfg.win32.msvc.jogl.cg" extends="linker.cfg.win32.msvc.jogl"> - <syslibset dir="${windows.cg.lib32}" libs="cg, cgGL"/> - </linker> - <linker id="linker.cfg.macosx.jogl" extends="linker.cfg.macosx"> <linkerarg value="-framework" /> <linkerarg value="Cocoa" /> - <linkerarg value="-framework" /> - <linkerarg value="OpenGL" /> + <!--linkerarg value="-framework" /> + <linkerarg value="OpenGL" /--> </linker> - <linker id="linker.cfg.macosx.jogl.cg" extends="linker.cfg.macosx.jogl"> + <!--linker id="linker.cfg.macosx.jogl.cg" extends="linker.cfg.macosx.jogl"> <linkerarg value="-framework"/> <linkerarg value="Cg"/> - </linker> + </linker--> <linker id="linker.cfg.hpux.jogl" extends="linker.cfg.hpux"> <syslibset dir="/opt/graphics/OpenGL/lib" libs="GL, GLU"/> @@ -1198,83 +1167,72 @@ <target name="c.configure.win32.vc" if="isVCFamily"> <echo message="Win32.VC" /> - <property name="compiler.cfg.id" value="compiler.cfg.win32.msvc" /> - <property name="linker.cfg.id.gl2" value="linker.cfg.win32.msvc.jogl" /> - <property name="linker.cfg.id.cg" value="linker.cfg.win32.msvc.jogl.cg" /> + <property name="compiler.cfg.id" value="compiler.cfg.win32.msvc" /> + <property name="linker.cfg.id.os" value="linker.cfg.win32.msvc.jogl" /> </target> <target name="c.configure.win32.mingw" if="isMingW32"> <echo message="Win32.MingW" /> - <property name="compiler.cfg.id" value="compiler.cfg.win32.mingw" /> - <property name="linker.cfg.id.gl2" value="linker.cfg.win32.mingw.jogl" /> - <property name="linker.cfg.id.cg" value="linker.cfg.win32.mingw.jogl.cg" /> + <property name="compiler.cfg.id" value="compiler.cfg.win32.mingw" /> + <property name="linker.cfg.id.os" value="linker.cfg.win32.mingw.jogl" /> </target> <target name="c.configure.win64.mingw" if="isMingW64"> <echo message="Win64.MingW" /> - <property name="compiler.cfg.id" value="compiler.cfg.win64.mingw" /> - <property name="linker.cfg.id.gl2" value="linker.cfg.win64.mingw.jogl" /> - <property name="linker.cfg.id.cg" value="linker.cfg.win64.mingw.jogl.cg" /> + <property name="compiler.cfg.id" value="compiler.cfg.win64.mingw" /> + <property name="linker.cfg.id.os" value="linker.cfg.win64.mingw.jogl" /> </target> <target name="c.configure.linux.x86" if="isLinuxX86"> <echo message="Linux.x86" /> - <property name="compiler.cfg.id" value="compiler.cfg.linux" /> - <property name="linker.cfg.id.gl2" value="linker.cfg.linux.jogl.gl2" /> - <property name="linker.cfg.id.cg" value="linker.cfg.linux.jogl.cg" /> + <property name="compiler.cfg.id" value="compiler.cfg.linux" /> + <property name="linker.cfg.id.os" value="linker.cfg.linux.jogl.x11" /> </target> <target name="c.configure.linux.amd64" if="isLinuxAMD64"> <echo message="Linux.AMD64" /> - <property name="compiler.cfg.id" value="compiler.cfg.linux.amd64" /> - <property name="linker.cfg.id.gl2" value="linker.cfg.linux.amd64.jogl.gl2" /> - <property name="linker.cfg.id.cg" value="linker.cfg.linux.amd64.jogl.cg" /> + <property name="compiler.cfg.id" value="compiler.cfg.linux.amd64" /> + <property name="linker.cfg.id.os" value="linker.cfg.linux.amd64.jogl.x11" /> </target> <target name="c.configure.linux.ia64" if="isLinuxIA64"> <echo message="Linux.IA64" /> - <property name="compiler.cfg.id" value="compiler.cfg.linux" /> - <property name="linker.cfg.id.gl2" value="linker.cfg.linux.jogl.gl2" /> - <property name="linker.cfg.id.cg" value="linker.cfg.linux.jogl.cg" /> + <property name="compiler.cfg.id" value="compiler.cfg.linux" /> + <property name="linker.cfg.id.os" value="linker.cfg.linux.jogl.x11" /> </target> <target name="c.configure.linux" depends="c.configure.linux.x86,c.configure.linux.amd64,c.configure.linux.ia64,c.configure.x11" if="isLinux" /> <target name="c.configure.solaris32" depends="c.configure.x11" if="isSolaris32Bit"> <echo message="Solaris" /> - <property name="compiler.cfg.id" value="compiler.cfg.solaris" /> - <property name="linker.cfg.id.gl2" value="linker.cfg.solaris.jogl.gl2" /> - <property name="linker.cfg.id.cg" value="linker.cfg.solaris.jogl.cg" /> + <property name="compiler.cfg.id" value="compiler.cfg.solaris" /> + <property name="linker.cfg.id.os" value="linker.cfg.solaris.jogl.x11" /> </target> <target name="c.configure.solaris.sparcv9" depends="c.configure.x11" if="isSolarisSparcv9"> <echo message="SolarisSparcv9" /> - <property name="compiler.cfg.id" value="compiler.cfg.solaris.sparcv9" /> - <property name="linker.cfg.id.gl2" value="linker.cfg.solaris.sparcv9.jogl.gl2" /> - <property name="linker.cfg.id.cg" value="linker.cfg.solaris.sparcv9.jogl.cg" /> + <property name="compiler.cfg.id" value="compiler.cfg.solaris.sparcv9" /> + <property name="linker.cfg.id.os" value="linker.cfg.solaris.sparcv9.jogl.x11" /> </target> <target name="c.configure.solaris.amd64" depends="c.configure.x11" if="isSolarisAMD64"> <echo message="SolarisAMD64" /> - <property name="compiler.cfg.id" value="compiler.cfg.solaris.amd64" /> - <property name="linker.cfg.id.gl2" value="linker.cfg.solaris.amd64.jogl.gl2" /> - <property name="linker.cfg.id.cg" value="linker.cfg.solaris.amd64.jogl.cg" /> + <property name="compiler.cfg.id" value="compiler.cfg.solaris.amd64" /> + <property name="linker.cfg.id.os" value="linker.cfg.solaris.amd64.jogl.x11" /> </target> <target name="c.configure.freebsd" depends="c.configure.x11" if="isFreeBSD"> <echo message="FreeBSD" /> - <property name="compiler.cfg.id" value="compiler.cfg.freebsd.jogl" /> - <property name="linker.cfg.id.gl2" value="linker.cfg.linux.jogl.gl2" /> - <property name="linker.cfg.id.cg" value="linker.cfg.linux.jogl.cg" /> + <property name="compiler.cfg.id" value="compiler.cfg.freebsd.jogl" /> + <property name="linker.cfg.id.os" value="linker.cfg.linux.jogl.x11" /> </target> <target name="c.configure.hpux" depends="c.configure.x11" if="isHPUX"> <echo message="HP-UX" /> - <property name="compiler.cfg.id" value="compiler.cfg.hpux" /> - <property name="linker.cfg.id.gl2" value="linker.cfg.hpux.jogl.gl2" /> - <property name="linker.cfg.id.cg" value="linker.cfg.hpux.jogl.cg" /> + <property name="compiler.cfg.id" value="compiler.cfg.hpux" /> + <property name="linker.cfg.id.os" value="linker.cfg.hpux.jogl.x11" /> </target> <target name="c.configure.win32" depends="c.configure.win32.vc,c.configure.win32.mingw,c.configure.win64.mingw" if="isWindows" /> @@ -1282,9 +1240,8 @@ <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="linker.cfg.id.gl2" value="linker.cfg.macosx.jogl" /> - <property name="linker.cfg.id.cg" value="linker.cfg.macosx.jogl.cg" /> + <property name="compiler.cfg.id" value="compiler.cfg.macosx" /> + <property name="linker.cfg.id.os" value="linker.cfg.macosx.jogl" /> </target> <target name="c.configure.2" depends="c.configure.win32,c.configure.linux,c.configure.solaris32,c.configure.solaris.sparcv9,c.configure.solaris.amd64,c.configure.macosx,c.configure.freebsd,c.configure.hpux" /> @@ -1453,14 +1410,14 @@ <c.build c.compiler.src.files="c.src.files.jogl.desktop" output.lib.name="jogl_desktop" compiler.cfg.id="${compiler.cfg.id}" - linker.cfg.id="${linker.cfg.id.gl2}"/> + linker.cfg.id="${linker.cfg.id.os}"/> </target> <target name="c.build.jogl.gl2es12" unless="setup.nodesktop"> <c.build c.compiler.src.files="c.src.files.jogl.gl2es12" output.lib.name="jogl_gl2es12" compiler.cfg.id="${compiler.cfg.id}" - linker.cfg.id="${linker.cfg.id.gl2}"/> + linker.cfg.id="${linker.cfg.id.os}"/> </target> <target name="c.build.jogl.es2"> @@ -1481,7 +1438,7 @@ <c.build c.compiler.src.files="c.src.files.cg" output.lib.name="jogl_cg" compiler.cfg.id="${compiler.cfg.id}" - linker.cfg.id="${linker.cfg.id.cg}"/> + linker.cfg.id="${linker.cfg.id.os}"/> </target> <target name="c.manifest.cg" if="jogl.cg"> diff --git a/make/build-junit.xml b/make/build-junit.xml index 749e73dbd..3ec367cbb 100644 --- a/make/build-junit.xml +++ b/make/build-junit.xml @@ -53,7 +53,21 @@ <!-- - Build/run junit. --> - <target name="junit.compile" depends="init"> + <target name="junit.compile.check" depends="init"> + <property name="jogl.test.jar.path" location="${jogl.test.jar}"/> <!-- absolute path --> + <echo message="jogl.test.jar ${jogl.test.jar.path}"/> + <uptodate property="junit.compile.skip"> + <srcfiles dir= "." includes="*.xml"/> + <srcfiles dir= "${src.junit}" includes="**"/> + <srcfiles file="${nativewindow.all.jar}" /> + <srcfiles file="${jogl.all.jar}" /> + <srcfiles file="${newt.all.jar}" /> + <srcfiles file="${gluegen.jar}" /> + <mapper type="merge" to="${jogl.test.jar.path}"/> + </uptodate> + </target> + + <target name="junit.compile" depends="junit.compile.check" unless="junit.compile.skip"> <!-- Perform the junit pass Java compile --> <javac destdir="${classes}" source="${host.sourcelevel}" @@ -64,6 +78,9 @@ <classpath refid="junit_jogl_newt.compile.classpath"/> <src path="${src.junit}" /> </javac> + <delete includeEmptyDirs="true" quiet="true"> + <fileset file="${jogl.test.jar}" /> + </delete> <jar destfile="${jogl.test.jar}" filesonly="true"> <fileset dir="${classes}"> <include name="${java.part.test}"/> diff --git a/make/config/jogl/glu-CustomJavaCode-gl2.java b/make/config/jogl/glu-CustomJavaCode-gl2.java index 690e0acfa..3367b2f69 100644 --- a/make/config/jogl/glu-CustomJavaCode-gl2.java +++ b/make/config/jogl/glu-CustomJavaCode-gl2.java @@ -536,27 +536,18 @@ public final void gluEndCurve(GLUnurbs r) { // private static GLUgl2ProcAddressTable gluProcAddressTable; -private static volatile boolean gluLibraryLoaded; private static final GLUgl2ProcAddressTable getGLUProcAddressTable() { - if (!gluLibraryLoaded) { - loadGLULibrary(); - } if (gluProcAddressTable == null) { GLContext curContext = GLContext.getCurrent(); if (curContext == null) { throw new GLException("No OpenGL context current on this thread"); } + GLDynamicLookupHelper glLookupHelper = ((GLDrawableImpl) curContext.getGLDrawable()).getGLDynamicLookupHelper(); + glLookupHelper.loadGLULibrary(); GLUgl2ProcAddressTable tmp = new GLUgl2ProcAddressTable(new GLProcAddressResolver()); - tmp.reset(((GLDrawableImpl)curContext.getGLDrawable()).getDynamicLookupHelper()); + tmp.reset(glLookupHelper); gluProcAddressTable = tmp; } return gluProcAddressTable; } - -private static final synchronized void loadGLULibrary() { - if (!gluLibraryLoaded) { - GLDrawableFactoryImpl.getFactoryImpl(null).loadGLULibrary(); - gluLibraryLoaded = true; - } -} diff --git a/make/config/jogl/glu-CustomJavaCode-gl2es1.java b/make/config/jogl/glu-CustomJavaCode-gl2es1.java index eb4bcc718..d3c8ab3d1 100755 --- a/make/config/jogl/glu-CustomJavaCode-gl2es1.java +++ b/make/config/jogl/glu-CustomJavaCode-gl2es1.java @@ -225,30 +225,3 @@ public final int gluBuild3DMipmaps( int target, int internalFormat, int width, depth, format, type, buffer ) ); } -//---------------------------------------------------------------------- -// GLUProcAddressTable handling -// - -/* -private static GLUProcAddressTable gluProcAddressTable; -private static volatile boolean gluLibraryLoaded; - -private static GLUProcAddressTable getGLUProcAddressTable() { - if (!gluLibraryLoaded) { - loadGLULibrary(); - } - if (gluProcAddressTable == null) { - GLUProcAddressTable tmp = new GLUProcAddressTable(new GLProcAddressResolver()); - tmp.reset(GLDrawableFactoryImpl.getFactoryImpl()); - gluProcAddressTable = tmp; - } - return gluProcAddressTable; -} - -private static synchronized void loadGLULibrary() { - if (!gluLibraryLoaded) { - GLDrawableFactoryImpl.getFactoryImpl().loadGLULibrary(); - gluLibraryLoaded = true; - } -} -*/ diff --git a/make/config/jogl/wgl-win32.cfg b/make/config/jogl/wgl-win32.cfg index 2a69290a4..69f8c75fa 100644 --- a/make/config/jogl/wgl-win32.cfg +++ b/make/config/jogl/wgl-win32.cfg @@ -18,8 +18,6 @@ GLHeader GL/wglext.h # Implement the first argument to wglGetProcAddress as String instead # of byte[] ArgumentIsString wglGetProcAddress 0 -ArgumentIsString LoadLibraryA 0 -ArgumentIsString GetProcAddress 1 CustomCCode #define WIN32_LEAN_AND_MEAN CustomCCode #include <windows.h> diff --git a/make/config/nativewindow/x11-CustomJavaCode.java b/make/config/nativewindow/x11-CustomJavaCode.java index 6b5831215..5919ddc40 100644 --- a/make/config/nativewindow/x11-CustomJavaCode.java +++ b/make/config/nativewindow/x11-CustomJavaCode.java @@ -32,9 +32,6 @@ public static native long CreateDummyWindow(long display, int screen_index, long visualID); public static native void DestroyDummyWindow(long display, long window); - public static native long dlopen(String name); - public static native long dlsym(String name); - public static native int XCloseDisplay(long display); public static native void XUnlockDisplay(long display); public static native void XLockDisplay(long display); diff --git a/make/scripts/java-run-all.sh b/make/scripts/java-run-all.sh index 5f6cff28a..622ed1bae 100755 --- a/make/scripts/java-run-all.sh +++ b/make/scripts/java-run-all.sh @@ -31,6 +31,7 @@ shift MOSX=0 uname -a | grep -i Darwin && MOSX=1 +D_ARGS="-Dgluegen.debug.ProcAddressHelper=true -Dgluegen.debug.NativeLibrary=true -Djogl.debug=all" # D_ARGS="-Dgluegen.debug.ProcAddressHelper=true -Dgluegen.debug.NativeLibrary=true -Dnativewindow.debug=all -Djogl.debug=all -Dnewt.debug=all" # D_ARGS="-Dnativewindow.debug=all -Djogl.debug=all -Dnewt.debug=all -Djogl.debug.GLSLState" # D_ARGS="-Dnativewindow.debug.X11Util=true -Djogl.debug.GLDrawableFactory=true" diff --git a/make/scripts/make.jogl.all.linux-x86.sh b/make/scripts/make.jogl.all.linux-x86.sh index 7b08ae5e8..5033f5f3a 100644 --- a/make/scripts/make.jogl.all.linux-x86.sh +++ b/make/scripts/make.jogl.all.linux-x86.sh @@ -39,8 +39,8 @@ fi # -DisX11=true \ # -Djogl.cg=1 -Dx11.cg.lib=../../lib-linux-x86 \ -LD_PRELOAD=$J2RE_HOME/lib/i386/libjsig.so -export LD_PRELOAD +#LD_LIBRARY_PATH=/opt-linux-x86_64/mesa-7.8.1/lib64 +#export LD_LIBRARY_PATH ant \ $CUSTOMLIBDIR \ diff --git a/make/scripts/make.jogl.all.linux-x86_64.sh b/make/scripts/make.jogl.all.linux-x86_64.sh index 45777998c..b17cd2f15 100644 --- a/make/scripts/make.jogl.all.linux-x86_64.sh +++ b/make/scripts/make.jogl.all.linux-x86_64.sh @@ -41,9 +41,6 @@ fi #LD_LIBRARY_PATH=/opt-linux-x86_64/mesa-7.8.1/lib64 #export LD_LIBRARY_PATH -LD_PRELOAD=$J2RE_HOME/lib/amd64/libjsig.so -export LD_PRELOAD - ant \ $CUSTOMLIBDIR \ -Dbuild.noarchives=true \ diff --git a/make/stub_includes/win32/wingdi.h b/make/stub_includes/win32/wingdi.h index fbf2ec5ec..a0a4194b5 100644 --- a/make/stub_includes/win32/wingdi.h +++ b/make/stub_includes/win32/wingdi.h @@ -172,8 +172,6 @@ typedef struct tagPIXELFORMATDESCRIPTOR // Windows routines WINBASEAPI DWORD WINAPI GetLastError(VOID); -WINBASEAPI HMODULE WINAPI LoadLibraryA(LPCSTR lpLibFileName); -WINBASEAPI PROC WINAPI GetProcAddress(HMODULE hModule, LPCSTR lpProcName); // OpenGL-related routines WINGDIAPI int WINAPI ChoosePixelFormat(HDC, CONST PIXELFORMATDESCRIPTOR *); |