From f33af5b630af8aee48353f64581ad289808e31fc Mon Sep 17 00:00:00 2001 From: molivier Date: Sat, 15 Apr 2006 11:33:29 +0000 Subject: [PATCH] Fixes and cleanups related to the recent AGL patches git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@6286 d7cf8633-e32d-0410-b094-e92efae38249 --- makefile.inc | 2 +- vid_agl.c | 84 ++++++++++++++++++++++++---------------------------- 2 files changed, 39 insertions(+), 47 deletions(-) diff --git a/makefile.inc b/makefile.inc index 30b0e3f5..bcb9764d 100644 --- a/makefile.inc +++ b/makefile.inc @@ -191,7 +191,7 @@ LDFLAGS_LINUXSDL=$(LDFLAGS_UNIXCOMMON) -ldl $(LDFLAGS_UNIXSDL) OBJ_MACOSXCD=$(OBJ_NOCD) # Link -LDFLAGS_MACOSXCL=$(LDFLAGS_UNIXCOMMON) -ldl -framework AGL -framework Carbon $(LIB_SOUND) +LDFLAGS_MACOSXCL=$(LDFLAGS_UNIXCOMMON) -ldl -framework Carbon $(LIB_SOUND) LDFLAGS_MACOSXSV=$(LDFLAGS_UNIXCOMMON) -ldl LDFLAGS_MACOSXSDL=$(LDFLAGS_UNIXCOMMON) -ldl `sdl-config --static-libs` diff --git a/vid_agl.c b/vid_agl.c index 977d8b2f..ee26cc6e 100644 --- a/vid_agl.c +++ b/vid_agl.c @@ -38,6 +38,8 @@ AGLPixelFormat (*qaglChoosePixelFormat) (const AGLDevice *gdevs, GLint ndev, con AGLContext (*qaglCreateContext) (AGLPixelFormat pix, AGLContext share); GLboolean (*qaglDestroyContext) (AGLContext ctx); void (*qaglDestroyPixelFormat) (AGLPixelFormat pix); +const GLubyte* (*qaglErrorString) (GLenum code); +GLenum (*qaglGetError) (void); GLboolean (*qaglSetCurrentContext) (AGLContext ctx); GLboolean (*qaglSetDrawable) (AGLContext ctx, AGLDrawable draw); GLboolean (*qaglSetFullScreen) (AGLContext ctx, GLsizei width, GLsizei height, GLsizei freq, GLint device); @@ -334,7 +336,7 @@ static void VID_ProcessPendingAsyncEvents (void) } } -static void VID_BuildAGLAttrib(GLint *attrib, GLint stencil, qboolean fullscreen) +static void VID_BuildAGLAttrib(GLint *attrib, qboolean stencil, qboolean fullscreen) { *attrib++ = AGL_RGBA; *attrib++ = AGL_RED_SIZE;*attrib++ = 1; @@ -368,10 +370,6 @@ int VID_InitMode(int fullscreen, int width, int height, int bpp, int refreshrate GLint attributes [32]; GLenum error; - // FullScreen Display stuff - GDHandle gdhDisplay; // = GetMainDevice(); /*deprecated*/ - CGDirectDisplayID mainDisplay = CGMainDisplayID(); - if (!GL_OpenLibrary()) { Con_Printf("Unable to load GL driver\n"); @@ -382,6 +380,8 @@ int VID_InitMode(int fullscreen, int width, int height, int bpp, int refreshrate || (qaglCreateContext = (AGLContext (*) (AGLPixelFormat pix, AGLContext share))GL_GetProcAddress("aglCreateContext")) == NULL || (qaglDestroyContext = (GLboolean (*) (AGLContext ctx))GL_GetProcAddress("aglDestroyContext")) == NULL || (qaglDestroyPixelFormat = (void (*) (AGLPixelFormat pix))GL_GetProcAddress("aglDestroyPixelFormat")) == NULL + || (qaglErrorString = (const GLubyte* (*) (GLenum code))GL_GetProcAddress("aglErrorString")) == NULL + || (qaglGetError = (GLenum (*) (void))GL_GetProcAddress("aglGetError")) == NULL || (qaglSetCurrentContext = (GLboolean (*) (AGLContext ctx))GL_GetProcAddress("aglSetCurrentContext")) == NULL || (qaglSetDrawable = (GLboolean (*) (AGLContext ctx, AGLDrawable draw))GL_GetProcAddress("aglSetDrawable")) == NULL || (qaglSetFullScreen = (GLboolean (*) (AGLContext ctx, GLsizei width, GLsizei height, GLsizei freq, GLint device))GL_GetProcAddress("aglSetFullScreen")) == NULL @@ -425,37 +425,38 @@ int VID_InitMode(int fullscreen, int width, int height, int bpp, int refreshrate if (!fullscreen) { - // Output to Window - // Set pixel format with built attribs - // Note: use NULL then must use 0 + // Output to Window pixelFormat = qaglChoosePixelFormat(NULL, 0, attributes); - error = aglGetError(); + error = qaglGetError(); if (error != AGL_NO_ERROR) { Con_Printf("qaglChoosePixelFormat FAILED: %s\n", - (char *)aglErrorString(error)); + (char *)qaglErrorString(error)); ReleaseWindow(window); return false; } } - - if (fullscreen) + else // Output is fullScreen { - // Output is FullScreen - // Get the mainDisplay and set resolution to current + CGDirectDisplayID mainDisplay; + CFDictionaryRef refDisplayMode; + GDHandle gdhDisplay; + + // Get the mainDisplay and set resolution to current + mainDisplay = CGMainDisplayID (); CGDisplayCapture (mainDisplay); - CFDictionaryRef refDisplayMode = CGDisplayBestModeForParameters (mainDisplay, bpp, width, height, NULL); + refDisplayMode = CGDisplayBestModeForParameters (mainDisplay, bpp, width, height, NULL); CGDisplaySwitchToMode (mainDisplay, refDisplayMode); DMGetGDeviceByDisplayID ((DisplayIDType)mainDisplay, &gdhDisplay, false); - // Set pixel format with built attribs - // Note: specifying a device is *required* for AGL_FullScreen + // Set pixel format with built attribs + // Note: specifying a device is *required* for AGL_FullScreen pixelFormat = qaglChoosePixelFormat(&gdhDisplay, 1, attributes); - error = aglGetError(); + error = qaglGetError(); if (error != AGL_NO_ERROR) { Con_Printf("qaglChoosePixelFormat FAILED: %s\n", - (char *)aglErrorString(error)); + (char *)qaglErrorString(error)); ReleaseWindow(window); return false; } @@ -463,23 +464,23 @@ int VID_InitMode(int fullscreen, int width, int height, int bpp, int refreshrate // Create a context using the pform context = qaglCreateContext(pixelFormat, NULL); - error = aglGetError(); + error = qaglGetError(); if (error != AGL_NO_ERROR) { Con_Printf("qaglCreateContext FAILED: %s\n", - (char *)aglErrorString(error)); + (char *)qaglErrorString(error)); } // Make the context the current one ('enable' it) qaglSetCurrentContext(context); - error = aglGetError(); - if (error != AGL_NO_ERROR) - { - Con_Printf("qaglSetCurrentContext FAILED: %s\n", - (char *)aglErrorString(error)); - ReleaseWindow(window); - return false; - } + error = qaglGetError(); + if (error != AGL_NO_ERROR) + { + Con_Printf("qaglSetCurrentContext FAILED: %s\n", + (char *)qaglErrorString(error)); + ReleaseWindow(window); + return false; + } // Discard pform qaglDestroyPixelFormat(pixelFormat); @@ -488,36 +489,26 @@ int VID_InitMode(int fullscreen, int width, int height, int bpp, int refreshrate if (fullscreen) { qaglSetFullScreen (context, width, height, refreshrate, 0); - error = aglGetError(); + error = qaglGetError(); if (error != AGL_NO_ERROR) { Con_Printf("qaglSetFullScreen FAILED: %s\n", - (char *)aglErrorString(error)); + (char *)qaglErrorString(error)); return false; - // FullScreen Failed - vid_isfullscreen = false; - } - else - { - // FullScreen Success - vid_isfullscreen = true; } } - - if (!fullscreen) + else { - // Note: this _is_ a Window != FullScreen - // Set Window as Drawable - qaglSetDrawable(context, GetWindowPort(window)); - error = aglGetError(); + // Set Window as Drawable + qaglSetDrawable(context, GetWindowPort(window)); + error = qaglGetError(); if (error != AGL_NO_ERROR) { Con_Printf("qaglSetDrawable FAILED: %s\n", - (char *)aglErrorString(error)); + (char *)qaglErrorString(error)); ReleaseWindow(window); return false; } - } scr_width = width; @@ -533,6 +524,7 @@ int VID_InitMode(int fullscreen, int width, int height, int bpp, int refreshrate gl_platform = "AGL"; gl_videosyncavailable = true; + vid_isfullscreen = fullscreen; vid_usingmouse = false; vid_hidden = false; vid_activewindow = true; -- 2.39.2