updated to glfw-1.6 and merged previous modifications

This commit is contained in:
Dominik Geyer 2008-10-16 17:09:34 +00:00
parent 07fc7ec8f8
commit 977785b154
6 changed files with 177 additions and 166 deletions

View file

@ -96,7 +96,8 @@ void _glfwChangeToResourcesDirectory( void )
}
CFRelease( resourcesURL );
/*
/* teeworlds: don't change into resources-dir
if( chdir( resourcesPath ) != 0 )
{
UNBUNDLED;

View file

@ -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
@ -283,6 +287,8 @@ struct _GLFWwin_struct {
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

View file

@ -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 ) )

View file

@ -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,16 +1170,11 @@ 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/+)
// 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_VISIBLE;
}
else
if( _glfwLibrary.Sys.WinVer != _GLFW_WIN_95 &&
_glfwLibrary.Sys.WinVer != _GLFW_WIN_NT4 &&
_glfwLibrary.Sys.WinVer != _GLFW_WIN_XP )
{
dwStyle |= WS_MINIMIZE;
}
@ -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 );
}
}

View file

@ -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