diff options
| author | Dominik Geyer <dominik.geyer@gmx.de> | 2008-10-16 17:09:34 +0000 |
|---|---|---|
| committer | Dominik Geyer <dominik.geyer@gmx.de> | 2008-10-16 17:09:34 +0000 |
| commit | 977785b154f4153cc99e5c0ca866c154bb71bfbc (patch) | |
| tree | 4fb2db379164c0b8cf1cf70c2a3d2ebc41e8704d /src/engine/external/glfw/lib | |
| parent | 07fc7ec8f899abdf8f24f9e17d019ee6b3a33a68 (diff) | |
| download | zcatch-977785b154f4153cc99e5c0ca866c154bb71bfbc.tar.gz zcatch-977785b154f4153cc99e5c0ca866c154bb71bfbc.zip | |
updated to glfw-1.6 and merged previous modifications
Diffstat (limited to 'src/engine/external/glfw/lib')
| -rw-r--r-- | src/engine/external/glfw/lib/macosx/macosx_init.c | 5 | ||||
| -rw-r--r-- | src/engine/external/glfw/lib/win32/platform.h | 16 | ||||
| -rw-r--r-- | src/engine/external/glfw/lib/win32/win32_glext.c | 24 | ||||
| -rw-r--r-- | src/engine/external/glfw/lib/win32/win32_window.c | 47 | ||||
| -rw-r--r-- | src/engine/external/glfw/lib/x11/x11_window.c | 9 |
5 files changed, 56 insertions, 45 deletions
diff --git a/src/engine/external/glfw/lib/macosx/macosx_init.c b/src/engine/external/glfw/lib/macosx/macosx_init.c index 3ee6dc43..3f49220b 100644 --- a/src/engine/external/glfw/lib/macosx/macosx_init.c +++ b/src/engine/external/glfw/lib/macosx/macosx_init.c @@ -96,12 +96,13 @@ void _glfwChangeToResourcesDirectory( void ) } CFRelease( resourcesURL ); -/* + + /* teeworlds: don't change into resources-dir if( chdir( resourcesPath ) != 0 ) { UNBUNDLED; } - */ + */ } int _glfwPlatformInit( void ) diff --git a/src/engine/external/glfw/lib/win32/platform.h b/src/engine/external/glfw/lib/win32/platform.h index 25ada3b0..b7c9f02d 100644 --- a/src/engine/external/glfw/lib/win32/platform.h +++ b/src/engine/external/glfw/lib/win32/platform.h @@ -130,11 +130,15 @@ typedef struct tagKBDLLHOOKSTRUCT { #endif // wglSwapIntervalEXT typedef (Win32 buffer-swap interval control) -typedef int (APIENTRY * WGLSWAPINTERVALEXT_T) (int interval); +typedef int (APIENTRY * WGLSWAPINTERVALEXT_T) (int); // wglChoosePixelFormatARB typedef -typedef BOOL (WINAPI * WGLCHOOSEPIXELFORMATARB_T) (HDC hdc, const int *piAttribIList, const FLOAT *pfAttribFList, UINT nMaxFormats, int *piFormats, UINT *nNumFormats); +typedef BOOL (WINAPI * WGLCHOOSEPIXELFORMATARB_T) (HDC, const int *, const FLOAT *, UINT, int *, UINT *); // wglGetPixelFormatAttribivARB typedef -typedef BOOL (WINAPI * WGLGETPIXELFORMATATTRIBIVARB_T) (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, const int *piAttributes, int *piValues); +typedef BOOL (WINAPI * WGLGETPIXELFORMATATTRIBIVARB_T) (HDC, int, int, UINT, const int *, int *); +// wglGetExtensionStringEXT typedef +typedef const char *(APIENTRY * WGLGETEXTENSIONSSTRINGEXT_T)( void ); +// wglGetExtensionStringARB typedef +typedef const char *(APIENTRY * WGLGETEXTENSIONSSTRINGARB_T)( HDC ); #define WGL_DRAW_TO_WINDOW_ARB 0x2001 #define WGL_SUPPORT_OPENGL_ARB 0x2010 @@ -280,9 +284,11 @@ struct _GLFWwin_struct { DWORD dwExStyle; // --"-- // Platform specific extensions (context specific) - WGLSWAPINTERVALEXT_T SwapInterval; - WGLCHOOSEPIXELFORMATARB_T ChoosePixelFormat; + WGLSWAPINTERVALEXT_T SwapInterval; + WGLCHOOSEPIXELFORMATARB_T ChoosePixelFormat; WGLGETPIXELFORMATATTRIBIVARB_T GetPixelFormatAttribiv; + WGLGETEXTENSIONSSTRINGEXT_T GetExtensionsStringEXT; + WGLGETEXTENSIONSSTRINGARB_T GetExtensionsStringARB; // Various platform specific internal variables int OldMouseLock; // Old mouse-lock flag (used for remembering diff --git a/src/engine/external/glfw/lib/win32/win32_glext.c b/src/engine/external/glfw/lib/win32/win32_glext.c index 00d2767d..3f4ea6f6 100644 --- a/src/engine/external/glfw/lib/win32/win32_glext.c +++ b/src/engine/external/glfw/lib/win32/win32_glext.c @@ -31,16 +31,6 @@ #include "internal.h" -//======================================================================== -// We use the WGL_EXT_extensions_string if it is available, or -// WGL_ARB_extensions_string if it is available. -//======================================================================== - -typedef const char *(APIENTRY * WGLGETEXTENSIONSSTRINGEXT_T)( void ); -typedef const char *(APIENTRY * WGLGETEXTENSIONSSTRINGARB_T)( HDC hdc ); - - - //************************************************************************ //**** Platform implementation functions **** //************************************************************************ @@ -53,15 +43,11 @@ typedef const char *(APIENTRY * WGLGETEXTENSIONSSTRINGARB_T)( HDC hdc ); int _glfwPlatformExtensionSupported( const char *extension ) { const GLubyte *extensions; - WGLGETEXTENSIONSSTRINGEXT_T _wglGetExtensionsStringEXT; - WGLGETEXTENSIONSSTRINGARB_T _wglGetExtensionsStringARB; // Try wglGetExtensionsStringEXT - _wglGetExtensionsStringEXT = (WGLGETEXTENSIONSSTRINGEXT_T) - wglGetProcAddress( "wglGetExtensionsStringEXT" ); - if( _wglGetExtensionsStringEXT != NULL ) + if( _glfwWin.GetExtensionsStringEXT != NULL ) { - extensions = (GLubyte *) _wglGetExtensionsStringEXT(); + extensions = (GLubyte *) _glfwWin.GetExtensionsStringEXT(); if( extensions != NULL ) { if( _glfwStringInExtensionString( extension, extensions ) ) @@ -72,11 +58,9 @@ int _glfwPlatformExtensionSupported( const char *extension ) } // Try wglGetExtensionsStringARB - _wglGetExtensionsStringARB = (WGLGETEXTENSIONSSTRINGARB_T) - wglGetProcAddress( "wglGetExtensionsStringARB" ); - if( _wglGetExtensionsStringARB != NULL ) + if( _glfwWin.GetExtensionsStringARB != NULL ) { - extensions = (GLubyte *) _wglGetExtensionsStringARB(_glfwWin.DC); + extensions = (GLubyte *) _glfwWin.GetExtensionsStringARB( _glfwWin.DC ); if( extensions != NULL ) { if( _glfwStringInExtensionString( extension, extensions ) ) diff --git a/src/engine/external/glfw/lib/win32/win32_window.c b/src/engine/external/glfw/lib/win32/win32_window.c index 83c0eeae..32d6a6d4 100644 --- a/src/engine/external/glfw/lib/win32/win32_window.c +++ b/src/engine/external/glfw/lib/win32/win32_window.c @@ -230,12 +230,12 @@ static int _glfwSetPixelFormatAttrib( int redbits, int greenbits, int bluebits, int PixelFormat, dummy, count = 0; int attribs[128]; PIXELFORMATDESCRIPTOR pfd; - + int accumredbits = hints->AccumRedBits; int accumgreenbits = hints->AccumGreenBits; int accumbluebits = hints->AccumBlueBits; int accumalphabits = hints->AccumAlphaBits; - + _glfwSetWGLAttribute( WGL_DRAW_TO_WINDOW_ARB, GL_TRUE ); _glfwSetWGLAttribute( WGL_ACCELERATION_ARB, WGL_FULL_ACCELERATION_ARB ); _glfwSetWGLAttribute( WGL_SUPPORT_OPENGL_ARB, GL_TRUE ); @@ -248,7 +248,7 @@ static int _glfwSetPixelFormatAttrib( int redbits, int greenbits, int bluebits, _glfwSetWGLAttribute( WGL_DEPTH_BITS_ARB, depthbits ); _glfwSetWGLAttribute( WGL_STENCIL_BITS_ARB, stencilbits ); _glfwSetWGLAttribute( WGL_AUX_BUFFERS_ARB, hints->AuxBuffers ); - + if( accumredbits || accumgreenbits || accumbluebits || accumalphabits ) { _glfwSetWGLAttribute( WGL_ACCUM_BITS_ARB, accumredbits + @@ -884,6 +884,19 @@ static void _glfwInitWGLExtensions( void ) GLubyte *extensions; int has_swap_control, has_pixel_format; + _glfwWin.GetExtensionsStringEXT = (WGLGETEXTENSIONSSTRINGEXT_T) + wglGetProcAddress( "wglGetExtensionsStringEXT" ); + if( !_glfwWin.GetExtensionsStringEXT ) + { + // Try wglGetExtensionsStringARB + _glfwWin.GetExtensionsStringARB = (WGLGETEXTENSIONSSTRINGARB_T) + wglGetProcAddress( "wglGetExtensionsStringARB" ); + if( !_glfwWin.GetExtensionsStringARB ) + { + return; + } + } + // Initialize OpenGL extension: WGL_EXT_swap_control has_swap_control = GL_FALSE; has_pixel_format = GL_FALSE; @@ -950,6 +963,7 @@ static int _glfwCreateWindow( int redbits, int greenbits, int bluebits, { int full_width, full_height; RECT wa; + POINT pos; _glfwWin.DC = NULL; _glfwWin.RC = NULL; @@ -1030,6 +1044,12 @@ static int _glfwCreateWindow( int redbits, int greenbits, int bluebits, // Initialize WGL-specific OpenGL extensions _glfwInitWGLExtensions(); + // Initialize mouse position + GetCursorPos( &pos ); + ScreenToClient( _glfwWin.Wnd, &pos ); + _glfwInput.OldMouseX = _glfwInput.MousePosX = pos.x; + _glfwInput.OldMouseY = _glfwInput.MousePosY = pos.y; + return GL_TRUE; } @@ -1150,20 +1170,15 @@ int _glfwPlatformOpenWindow( int width, int height, // Here's a trick for helping us getting window focus // (SetForegroundWindow doesn't work properly under - // Win98/ME/2K/XP/.NET/+) - - /* - if( _glfwLibrary.Sys.WinVer == _GLFW_WIN_95 || - _glfwLibrary.Sys.WinVer == _GLFW_WIN_NT4 || - _glfwLibrary.Sys.WinVer == _GLFW_WIN_XP ) - { - dwStyle |= WS_VISIBLE; - } - else + // Win98/ME/2K/.NET/+) + /* + if( _glfwLibrary.Sys.WinVer != _GLFW_WIN_95 && + _glfwLibrary.Sys.WinVer != _GLFW_WIN_NT4 && + _glfwLibrary.Sys.WinVer != _GLFW_WIN_XP ) { dwStyle |= WS_MINIMIZE; } - */ + */ } else { @@ -1189,6 +1204,9 @@ int _glfwPlatformOpenWindow( int width, int height, if( _glfwWin.ChoosePixelFormat && hints->Samples > 0 ) { + // Iteratively try to create a context with a decreasing number of + // FSAA samples (requires window recreation). + for (;;) { _glfwDestroyWindow(); @@ -1252,7 +1270,6 @@ void _glfwPlatformCloseWindow( void ) // Switch back to desktop resolution ChangeDisplaySettings( NULL, CDS_FULLSCREEN ); } - } diff --git a/src/engine/external/glfw/lib/x11/x11_window.c b/src/engine/external/glfw/lib/x11/x11_window.c index ed4c42f5..4ed2007b 100644 --- a/src/engine/external/glfw/lib/x11/x11_window.c +++ b/src/engine/external/glfw/lib/x11/x11_window.c @@ -978,9 +978,6 @@ int _glfwPlatformOpenWindow( int width, int height, int redbits, return GL_FALSE; } - // Set window & icon name - _glfwPlatformSetWindowTitle( "Teeworlds" ); - // Get the delete window WM protocol atom _glfwWin.WMDeleteWindow = XInternAtom( _glfwLibrary.Dpy, "WM_DELETE_WINDOW", @@ -1075,6 +1072,10 @@ int _glfwPlatformOpenWindow( int width, int height, int redbits, _glfwWin.Width/2, _glfwWin.Height/2 ); } + // Set window & icon name + // teeworlds: set our own title early, workaround for some window-managers + _glfwPlatformSetWindowTitle( "Teeworlds" ); + // Connect the context to the window glXMakeCurrent( _glfwLibrary.Dpy, _glfwWin.Win, _glfwWin.CX ); @@ -1521,6 +1522,8 @@ void _glfwPlatformPollEvents( void ) // or without XSync, but when the GL window is rendered over a slow // network I have noticed bad event syncronisation problems when XSync // is not used, so I decided to use it. + // + // teeworlds: don't synchronise //XSync( _glfwLibrary.Dpy, False ); // Empty the window event queue |