diff options
author | Brian Paul <brian.paul@tungstengraphics.com> | 2002-09-03 18:11:32 +0000 |
---|---|---|
committer | José Fonseca <jfonseca@vmware.com> | 2011-07-11 20:03:30 +0100 |
commit | 185905470924ffcb80687264f153e71169b4705c (patch) | |
tree | 1f0d3b6f02d3cbbc8cacf71e430527646d60965f /src/glut/dos/window.c | |
parent | 8e3a7baefe3178800f5de7e42e236183484bb83e (diff) | |
download | glut-185905470924ffcb80687264f153e71169b4705c.tar.gz |
updates from Daniel Borca
Diffstat (limited to 'src/glut/dos/window.c')
-rw-r--r-- | src/glut/dos/window.c | 44 |
1 files changed, 43 insertions, 1 deletions
diff --git a/src/glut/dos/window.c b/src/glut/dos/window.c index 65832e3..411f4ed 100644 --- a/src/glut/dos/window.c +++ b/src/glut/dos/window.c @@ -19,7 +19,7 @@ */ /* - * DOS/DJGPP glut driver v1.0 for Mesa 4.0 + * DOS/DJGPP glut driver v1.1 for Mesa 4.0 * * Copyright (C) 2002 - Borca Daniel * Email : dborca@yahoo.com @@ -28,16 +28,26 @@ #include "GL/glut.h" +#ifndef FX #include "GL/dmesa.h" +#else +#include "GL/fxmesa.h" +#endif #include "internal.h" static int window; +#ifndef FX static DMesaVisual visual = NULL; static DMesaContext context = NULL; static DMesaBuffer buffer[MAX_WINDOWS]; +#else +static void *visual = NULL; +static fxMesaContext context = NULL; +static int fx_attrib[32]; +#endif @@ -48,8 +58,12 @@ static void clean (void) for (i=0; i<MAX_WINDOWS; i++) { glutDestroyWindow(i+1); } +#ifndef FX if (context) DMesaDestroyContext(context); if (visual) DMesaDestroyVisual(visual); +#else + if (context) fxMesaDestroyContext(context); +#endif pc_close_stdout(); pc_close_stderr(); @@ -76,6 +90,7 @@ int APIENTRY glutCreateWindow (const char *title) screen_h = 768; } +#ifndef FX if ((visual=DMesaCreateVisual(screen_w, screen_h, DEFAULT_BPP, g_display_mode & GLUT_DOUBLE, g_display_mode & GLUT_DEPTH ?DEPTH_SIZE :0, @@ -88,12 +103,24 @@ int APIENTRY glutCreateWindow (const char *title) DMesaDestroyVisual(visual); return 0; } +#else + i = 0; + if (g_display_mode & GLUT_DOUBLE) fx_attrib[i++] = FXMESA_DOUBLEBUFFER; + if (g_display_mode & GLUT_DEPTH) { fx_attrib[i++] = FXMESA_DEPTH_SIZE; fx_attrib[i++] = DEPTH_SIZE; } + if (g_display_mode & GLUT_STENCIL) { fx_attrib[i++] = FXMESA_STENCIL_SIZE; fx_attrib[i++] = STENCIL_SIZE; } + if (g_display_mode & GLUT_ACCUM) { fx_attrib[i++] = FXMESA_ACCUM_SIZE; fx_attrib[i++] = ACCUM_SIZE; } + fx_attrib[i] = FXMESA_NONE; + if ((context=fxMesaCreateBestContext(-1, screen_w, screen_h, fx_attrib))==NULL) { + return 0; + } +#endif pc_open_stdout(); pc_open_stderr(); pc_atexit(clean); } +#ifndef FX for (i=0; i<MAX_WINDOWS; i++) { if (!buffer[i]) { DMesaBuffer b; @@ -115,6 +142,11 @@ int APIENTRY glutCreateWindow (const char *title) } return 0; +#else + fxMesaMakeCurrent(context); + + return 1; +#endif } @@ -126,10 +158,12 @@ int APIENTRY glutCreateSubWindow (int win, int x, int y, int width, int height) void APIENTRY glutDestroyWindow (int win) { +#ifndef FX if (buffer[win-1]) { DMesaDestroyBuffer(buffer[win-1]); buffer[win-1] = NULL; } +#endif } @@ -142,7 +176,11 @@ void APIENTRY glutPostRedisplay (void) void APIENTRY glutSwapBuffers (void) { if (g_mouse) pc_scare_mouse(); +#ifndef FX DMesaSwapBuffers(buffer[window]); +#else + fxMesaSwapBuffers(); +#endif if (g_mouse) pc_unscare_mouse(); } @@ -171,15 +209,18 @@ void APIENTRY glutSetIconTitle (const char *title) void APIENTRY glutPositionWindow (int x, int y) { +#ifndef FX if (DMesaViewport(buffer[window], x, y, g_width, g_height)) { g_xpos = x; g_ypos = y; } +#endif } void APIENTRY glutReshapeWindow (int width, int height) { +#ifndef FX if (DMesaViewport(buffer[window], g_xpos, g_ypos, width, height)) { g_width = width; g_height = height; @@ -189,6 +230,7 @@ void APIENTRY glutReshapeWindow (int width, int height) glViewport(0, 0, width, height); } } +#endif } |