Blob Blame History Raw
From b215a498dd7b669f01a1e7049831f0f48ea0c100 Mon Sep 17 00:00:00 2001
From: Hans de Goede <hdegoede@redhat.com>
Date: Thu, 31 Dec 2015 12:02:43 +0100
Subject: [PATCH] Stop mixing glut and SDL usage

Using glut and SDL in one program is something neither are designed for,
this happened to work with freeglut-2.x, but with freeglut-3.x
glutSolidSphere() crashes because we've never created a glutWindow
(as we are using SDL).

Instead just copy the 2 glut functions we were using from freeglut-2.x
into the glaxium sources.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
---
 bandit2.cpp   |   3 -
 configure.in  |   2 -
 cube.cpp      |   3 -
 diamond.cpp   |   3 -
 fighter2.cpp  |   3 -
 fire.cpp      |   3 +-
 glax_glut.cpp | 193 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 glax_glut.hpp |  32 ++++++++++
 main.cpp      |   4 +-
 myship.cpp    |  18 +++---
 piege.cpp     |   9 +--
 scene.cpp     |  27 ++++----
 scratcher.cpp |   3 -
 ship1.cpp     |   1 -
 spirale.cpp   |   2 -
 sprite.hpp    |   1 -
 tache.cpp     |   3 -
 tank.cpp      |   2 -
 18 files changed, 254 insertions(+), 58 deletions(-)
 create mode 100644 glax_glut.cpp
 create mode 100644 glax_glut.hpp

diff --git a/bandit2.cpp b/bandit2.cpp
index 3b61bc6..4ac9a78 100644
--- a/bandit2.cpp
+++ b/bandit2.cpp
@@ -16,9 +16,6 @@
   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */
 
-
-#include <GL/glut.h>
-
 #include "bandit2.hpp"
 #include "fire.hpp"
 #include "modeles/bandit2.c"
diff --git a/configure.in b/configure.in
index eb3e723..94cec1f 100644
--- a/configure.in
+++ b/configure.in
@@ -26,13 +26,11 @@ AC_CHECK_LIB(GLU,gluPerspective)
 AC_CHECK_LIB(X11,XDestroyWindow)
 AC_CHECK_LIB(Xi,XFreeDeviceControl)
 AC_CHECK_LIB(Xmu,XmuScanlineNot)
-AC_CHECK_LIB(glut,glutBitmapCharacter)
 AC_CHECK_LIB(png,png_write_rows , , echo "Download <http://www.cdrom.com/pub/png>";exit 12)
 
 dnl Check for other header
 AC_CHECK_HEADER(GL/gl.h, , echo "No GL/gl.h header... cannot do anything !";exit 12 )
 AC_CHECK_HEADER(GL/glu.h, , echo "No GL/glu.h header... cannot do anything !";exit 12 )
-AC_CHECK_HEADER(GL/glut.h, , echo "No GL/glut.h header... cannot do anything !";exit 12 )
 AC_CHECK_HEADER(GL/glx.h, , echo "No GL/glx.h header... cannot do anything !";exit 12 )
 AC_CHECK_HEADER(png.h, , echo "No png.h header... cannot do anything !";exit 12 )
 
diff --git a/cube.cpp b/cube.cpp
index 084b269..4cd422c 100644
--- a/cube.cpp
+++ b/cube.cpp
@@ -16,9 +16,6 @@
   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */
 
-
-#include <GL/glut.h>
-
 #include "cube.hpp"
 #include "diamond.hpp"
 #include "fire.hpp"
diff --git a/diamond.cpp b/diamond.cpp
index db1a44c..a94613d 100644
--- a/diamond.cpp
+++ b/diamond.cpp
@@ -16,9 +16,6 @@
   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */
 
-
-#include <GL/glut.h>
-
 #include "diamond.hpp"
 
 #include "modeles/capsule.c"
diff --git a/fighter2.cpp b/fighter2.cpp
index 15d8f35..50d71d2 100644
--- a/fighter2.cpp
+++ b/fighter2.cpp
@@ -16,9 +16,6 @@
   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */
 
-
-#include <GL/glut.h>
-
 #include "fighter2.hpp"
 #include "fire.hpp"
 #include "modeles/fighter2.c"
diff --git a/fire.cpp b/fire.cpp
index 375e6a3..2f3f3cf 100644
--- a/fire.cpp
+++ b/fire.cpp
@@ -22,6 +22,7 @@ Copyright (C) 2002 Xavier Hosxe <xhosxe@free.fr>
 #include "fire.hpp"
 #include "explosion.hpp"
 #include "scene.hpp"
+#include "glax_glut.hpp"
 
 #include "modeles/fire3.c"
 
@@ -199,7 +200,7 @@ void MyFire2::draw()
         glRotatef(i,0,1,0);
         glTranslatef(t2,.3,0);
         
-        glutSolidSphere(.3,4,4);
+        glax_glutSolidSphere(.3,4,4);
         glPopMatrix();
     }
 
diff --git a/glax_glut.cpp b/glax_glut.cpp
new file mode 100644
index 0000000..60bbc86
--- /dev/null
+++ b/glax_glut.cpp
@@ -0,0 +1,193 @@
+/*
+ * Glaxium uses a few helper functions taken from freeglut:
+ *
+ * freeglut_geometry.c: Freeglut geometry rendering methods.
+ * freeglut_main.c: The windows message processing methods.
+ *
+ * Copyright (c) 1999-2000 Pawel W. Olszta. All Rights Reserved.
+ * Written by Pawel W. Olszta, <olszta@sourceforge.net>
+ * Creation date: Fri Dec 3 1999
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * PAWEL W. OLSZTA BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+ * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+#include <math.h>
+#include <stdlib.h>
+#include <time.h>
+
+#include "glax_glut.hpp"
+
+/***************** From freeglut_main.c 2.8.1 ******************************/
+static unsigned long start_time;
+
+/* Platform-dependent time in milliseconds, as an unsigned 32-bit integer.
+ * This value wraps every 49.7 days, but integer overflows cancel
+ * when subtracting an initial start time, unless the total time exceeds
+ * 32-bit, where the GLUT API return value is also overflowed.
+ */  
+static unsigned long fgSystemTime(void) {
+    struct timespec now;
+    clock_gettime(CLOCK_MONOTONIC, &now);
+    return now.tv_nsec/1000000 + now.tv_sec*1000;
+}
+
+void glax_glutInit(int *argc, char **argv)
+{
+    start_time = fgSystemTime();
+}
+
+int glax_glutGetElapsedTime(void)
+{
+    return (long) (fgSystemTime() - start_time);
+}
+
+/**************** From freeglut_geometry.c 2.8.1 *****************************/
+
+/*
+ * Compute lookup table of cos and sin values forming a cirle
+ *
+ * Notes:
+ *    It is the responsibility of the caller to free these tables
+ *    The size of the table is (n+1) to form a connected loop
+ *    The last entry is exactly the same as the first
+ *    The sign of n can be flipped to get the reverse loop
+ */
+
+static void fghCircleTable(double **sint,double **cost,const int n)
+{
+    int i;
+
+    /* Table size, the sign of n flips the circle direction */
+
+    const int size = abs(n);
+
+    /* Determine the angle between samples */
+
+    const double angle = 2*M_PI/(double)( ( n == 0 ) ? 1 : n );
+
+    /* Allocate memory for n samples, plus duplicate of first entry at the end */
+
+    *sint = (double *) calloc(sizeof(double), size+1);
+    *cost = (double *) calloc(sizeof(double), size+1);
+
+    /* Bail out if memory allocation fails, abort never returns */
+    if (!(*sint) || !(*cost))
+        abort();
+
+    /* Compute cos and sin around the circle */
+
+    (*sint)[0] = 0.0;
+    (*cost)[0] = 1.0;
+
+    for (i=1; i<size; i++)
+    {
+        (*sint)[i] = sin(angle*i);
+        (*cost)[i] = cos(angle*i);
+    }
+
+    /* Last sample is duplicate of the first */
+
+    (*sint)[size] = (*sint)[0];
+    (*cost)[size] = (*cost)[0];
+}
+
+/*
+ * Draws a solid sphere
+ */
+void glax_glutSolidSphere(double radius, GLint slices, GLint stacks)
+{
+    int i,j;
+
+    /* Adjust z and radius as stacks are drawn. */
+
+    double z0,z1;
+    double r0,r1;
+
+    /* Pre-computed circle */
+
+    double *sint1,*cost1;
+    double *sint2,*cost2;
+
+    fghCircleTable(&sint1,&cost1,-slices);
+    fghCircleTable(&sint2,&cost2,stacks*2);
+
+    /* The top stack is covered with a triangle fan */
+
+    z0 = 1.0;
+    z1 = cost2[(stacks>0)?1:0];
+    r0 = 0.0;
+    r1 = sint2[(stacks>0)?1:0];
+
+    glBegin(GL_TRIANGLE_FAN);
+
+        glNormal3d(0,0,1);
+        glVertex3d(0,0,radius);
+
+        for (j=slices; j>=0; j--)
+        {
+            glNormal3d(cost1[j]*r1,        sint1[j]*r1,        z1       );
+            glVertex3d(cost1[j]*r1*radius, sint1[j]*r1*radius, z1*radius);
+        }
+
+    glEnd();
+
+    /* Cover each stack with a quad strip, except the top and bottom stacks */
+
+    for( i=1; i<stacks-1; i++ )
+    {
+        z0 = z1; z1 = cost2[i+1];
+        r0 = r1; r1 = sint2[i+1];
+
+        glBegin(GL_QUAD_STRIP);
+
+            for(j=0; j<=slices; j++)
+            {
+                glNormal3d(cost1[j]*r1,        sint1[j]*r1,        z1       );
+                glVertex3d(cost1[j]*r1*radius, sint1[j]*r1*radius, z1*radius);
+                glNormal3d(cost1[j]*r0,        sint1[j]*r0,        z0       );
+                glVertex3d(cost1[j]*r0*radius, sint1[j]*r0*radius, z0*radius);
+            }
+
+        glEnd();
+    }
+
+    /* The bottom stack is covered with a triangle fan */
+
+    z0 = z1;
+    r0 = r1;
+
+    glBegin(GL_TRIANGLE_FAN);
+
+        glNormal3d(0,0,-1);
+        glVertex3d(0,0,-radius);
+
+        for (j=0; j<=slices; j++)
+        {
+            glNormal3d(cost1[j]*r0,        sint1[j]*r0,        z0       );
+            glVertex3d(cost1[j]*r0*radius, sint1[j]*r0*radius, z0*radius);
+        }
+
+    glEnd();
+
+    /* Release sin and cos tables */
+
+    free(sint1);
+    free(cost1);
+    free(sint2);
+    free(cost2);
+}
diff --git a/glax_glut.hpp b/glax_glut.hpp
new file mode 100644
index 0000000..c54cdca
--- /dev/null
+++ b/glax_glut.hpp
@@ -0,0 +1,32 @@
+/*
+ * Glaxium uses a few helper functions taken from freeglut:
+ *
+ * The GLUT-compatible part of the freeglut library include file
+ *
+ * Copyright (c) 1999-2000 Pawel W. Olszta. All Rights Reserved.
+ * Written by Pawel W. Olszta, <olszta@sourceforge.net>
+ * Creation date: Thu Dec 2 1999
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * PAWEL W. OLSZTA BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+ * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+#include <GL/gl.h>
+
+void glax_glutInit(int *argc, char **argv);
+int glax_glutGetElapsedTime(void);
+void glax_glutSolidSphere(double radius, GLint slices, GLint stacks);
diff --git a/main.cpp b/main.cpp
index db58964..a56471d 100644
--- a/main.cpp
+++ b/main.cpp
@@ -27,7 +27,6 @@
 #include <stdlib.h>
 #include <GL/gl.h>       
 #include <GL/glu.h>      
-#include <GL/glut.h>
 #include <stdio.h>
 #include <string.h>
 
@@ -38,6 +37,7 @@
 #include "scene.hpp"
 #include "myship.hpp"
 #include "tank.hpp"
+#include "glax_glut.hpp"
 
 GlaxiumVariables* GLvar ;
 Scene* scene;
@@ -143,7 +143,7 @@ int main( int argc, char *argv[] )
     signal(SIGINT, exit);
     signal(SIGTERM, exit);
   */  
-    glutInit(&argc, argv);
+    glax_glutInit(&argc, argv);
     
     SDL_GL_SetAttribute(SDL_GL_STENCIL_SIZE,8);
 
diff --git a/myship.cpp b/myship.cpp
index b8d2155..735bd60 100644
--- a/myship.cpp
+++ b/myship.cpp
@@ -16,10 +16,7 @@
   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */
 
-
-
-
-#include <GL/glut.h>
+#include <GL/gl.h>
 #include <GL/glext.h>
 
 #include "sprite.hpp"
@@ -27,6 +24,7 @@
 #include "myship.hpp"
 #include "fire.hpp"
 #include "diamond.hpp"
+#include "glax_glut.hpp"
 
 #include "SDL.h"
 
@@ -93,7 +91,7 @@ MyShip::MyShip(List *list, int shieldMax)
     powerUp_=0;
     cptFire_=0;
 	delay_=0;
-	invulBegin = glutGet((GLenum)GLUT_ELAPSED_TIME);  
+	invulBegin = glax_glutGetElapsedTime();
 	invulEnd = invulBegin + 1000*15;
 /*
 	fThX = new float[20];
@@ -493,7 +491,7 @@ void MyShip::draw()
 	glEnable(GL_TEXTURE_2D);
 	if (invulBegin!=0) {	
 		static float toto[]= {.4,.7,.7,.4};
-		int left = invulEnd-glutGet((GLenum)GLUT_ELAPSED_TIME);
+		int left = invulEnd-glax_glutGetElapsedTime();
 
 		if (left<5000) {
 			toto[3] = .4- .4*((float)(left%500)/500.0f);
@@ -623,7 +621,7 @@ void MyShip::move()
     case NORMAL:
         {
 			int delay = 0 ;
-			int nTime = glutGet((GLenum)(GLUT_ELAPSED_TIME));
+			int nTime = glax_glutGetElapsedTime();
 			
             ddx_ = (global_gauche-global_droite)*.01*GLvar->global_timeadjustment;
             ddz_ = (global_haut-global_bas)*.01*GLvar->global_timeadjustment;
@@ -635,7 +633,7 @@ void MyShip::move()
 				}
 				
 				if (nTime-newElapsedTime3>850) delay = 250;
-				if ((button1) && ((glutGet((GLenum)(GLUT_ELAPSED_TIME))-newElapsedTime)> 120 +delay))
+				if ((button1) && ((glax_glutGetElapsedTime()-newElapsedTime)> 120 +delay))
 				{
 					cptFire_++;
 					SpritePlaySample(SAMPLE_TIR);
@@ -794,7 +792,7 @@ void MyShip::move()
         break;
     }
 
-	if (invulBegin>0 && glutGet((GLenum)GLUT_ELAPSED_TIME)>invulEnd) {
+	if (invulBegin>0 && glax_glutGetElapsedTime()>invulEnd) {
 		invulBegin=0;
 	}
 }
@@ -874,7 +872,7 @@ void MyShip::collision(Sprite*contact)
 					powerUp_++;
 				} else {
 					if (invulBegin == 0 ) {
-						invulBegin = glutGet((GLenum)GLUT_ELAPSED_TIME);  
+						invulBegin = glax_glutGetElapsedTime();
 						invulEnd = invulBegin + 1000*20;
 					} else {
 						invulEnd += 1000*20;
diff --git a/piege.cpp b/piege.cpp
index df03d20..4d15751 100644
--- a/piege.cpp
+++ b/piege.cpp
@@ -18,13 +18,10 @@
 
 
 #include <math.h>
-#include <GL/glut.h>
-
-
 
 #include "piege.hpp"
 #include "myship.hpp"
-
+#include "glax_glut.hpp"
 
 Piege::Piege(List *list, int speed, float x)
 : Sprite(list,TYPE_PIEGE ,((float)(random()%1024)/1024)*20-10,3,70)
@@ -221,7 +218,7 @@ void Piege::move()
     
     
     if (ringing_)
-        if ((glutGet((GLenum)(GLUT_ELAPSED_TIME))-elapsedTime_)> 2000) {
+        if ((glax_glutGetElapsedTime()-elapsedTime_)> 2000) {
             ringing_=0;
         }
         
@@ -338,7 +335,7 @@ void Piege::collision(Sprite*contact)
         toFollow_=contact;
         if (!ringing_) {
             SpritePlaySample(SAMPLE_DETECTION);
-            elapsedTime_=glutGet((GLenum)(GLUT_ELAPSED_TIME));
+            elapsedTime_=glax_glutGetElapsedTime();
             ringing_=1;
         }
         break;
diff --git a/scene.cpp b/scene.cpp
index 47526d8..47398bc 100644
--- a/scene.cpp
+++ b/scene.cpp
@@ -35,6 +35,7 @@
 #include "piege.hpp"
 #include "tank.hpp"
 #include "tache.hpp"
+#include "glax_glut.hpp"
 
 
 #ifdef WIN32
@@ -262,7 +263,7 @@ void Scene::initVariables() {
 		stars[i][0] =   stars[i][1] = stars[i][2] = (float)(random()%750)/1000.0 +.25;      
 	}   
 	globalScore=-1;
-	lasttime = glutGet((GLenum)GLUT_ELAPSED_TIME);  
+	lasttime = glax_glutGetElapsedTime();
 	displayFPS=0;
 	globalList = new ListSprite();
 	floorOffset =0;
@@ -1078,7 +1079,7 @@ void Scene::timediff()
 {
 	int t;
 	
-	t = glutGet((GLenum)GLUT_ELAPSED_TIME);
+	t = glax_glutGetElapsedTime();
 	dt = t - lasttime;
 	lasttime = t;
 }
@@ -1563,9 +1564,9 @@ void Scene::initOpenGl()
 
 void Scene::gameIdle() 
 {
-	static int oldTimer =  glutGet((GLenum)(GLUT_ELAPSED_TIME));
+	static int oldTimer = glax_glutGetElapsedTime();
 	
-	int newTimer = glutGet((GLenum)(GLUT_ELAPSED_TIME));
+	int newTimer = glax_glutGetElapsedTime();
 	
 	
 //	  printf("%d : %f\n",newTimer, GLvar->global_timeadjustment);
@@ -1706,9 +1707,9 @@ void Scene::gameIdle()
 
 
 void Scene::presentationIdle() {
-	static int oldTimer =  glutGet((GLenum)(GLUT_ELAPSED_TIME));
+	static int oldTimer = glax_glutGetElapsedTime();
 	
-	int newTimer = glutGet((GLenum)(GLUT_ELAPSED_TIME));
+	int newTimer = glax_glutGetElapsedTime();
 	
 
 	GLvar->global_timeadjustment = ((float)newTimer-oldTimer)/20;
@@ -1998,11 +1999,11 @@ void Scene::drawBench()
 void Scene::benchIdle() 
 {
 	static TacheBench *newOne;
-	static int oldTimer =  glutGet((GLenum)(GLUT_ELAPSED_TIME));
+	static int oldTimer = glax_glutGetElapsedTime();
 	static int benchFrames;
 	static int benchTime;
 
-	int newTimer = glutGet((GLenum)(GLUT_ELAPSED_TIME));
+	int newTimer = glax_glutGetElapsedTime();
 	int i;
 	
 //	  printf("%d : %f\n",newTimer, GLvar->global_timeadjustment);
@@ -2028,7 +2029,7 @@ void Scene::benchIdle()
 	switch (benchState) {
 		case 0:	
 			benchFrames=0;
-			benchTime=glutGet((GLenum)(GLUT_ELAPSED_TIME));
+			benchTime=glax_glutGetElapsedTime();
 			for (i=-4;i<=4;i++) {
 
 				newOne = new TacheBench(globalList, i*2.7, 100);
@@ -2041,7 +2042,7 @@ void Scene::benchIdle()
 			if (globalList->get_mfirst()==NULL ) {
 				glEnable(GL_LIGHTING);
 				benchState=4;
-				benchTime=glutGet((GLenum)(GLUT_ELAPSED_TIME))-benchTime;
+				benchTime=glax_glutGetElapsedTime()-benchTime;
 				printf("+---------------------------------+\n");
 				printf("|  GLAXIUM BENCHMARK RESULT  (v1) |\n");
 				printf("+---------------------------------+\n");
@@ -2315,7 +2316,7 @@ void changeAllTextures(GLenum mag, GLenum min) {
 void Scene::menuIdle() 
 {
 	static TacheBench *newOne;
-	static int oldTimer =  glutGet((GLenum)(GLUT_ELAPSED_TIME));
+	static int oldTimer = glax_glutGetElapsedTime();
 	static int benchFrames;
 	static int benchTime;
 	static Uint8 *keys;
@@ -2325,7 +2326,7 @@ void Scene::menuIdle()
 	static char filterChars[][64] = {"Basic Mipmap", "Bilinear", "Trilinear"};
 	static char detailChars[][64] = {"Low", "Medium", "High"};
 	static bool optionsLoaded = false;
-	int newTimer = glutGet((GLenum)(GLUT_ELAPSED_TIME));
+	int newTimer = glax_glutGetElapsedTime();
 	int i;
 	bool anisChanged = false;
 	bool filterChanged = false;
@@ -2371,7 +2372,7 @@ void Scene::menuIdle()
 	switch (benchState) {
 		case 0:	
 			benchFrames=0;
-			benchTime=glutGet((GLenum)(GLUT_ELAPSED_TIME));
+			benchTime=glax_glutGetElapsedTime();
 			for (i=-2;i<=2;i++) {
 
 				newOne = new TacheBench(globalList,	i*5.0, 200);
diff --git a/scratcher.cpp b/scratcher.cpp
index fd874d5..cb7ddfe 100644
--- a/scratcher.cpp
+++ b/scratcher.cpp
@@ -16,9 +16,6 @@
   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */
 
-
-#include <GL/glut.h>
-
 #include "scratcher.hpp"
 #include "scene.hpp"
 
diff --git a/ship1.cpp b/ship1.cpp
index 7763d6b..e71163b 100644
--- a/ship1.cpp
+++ b/ship1.cpp
@@ -18,7 +18,6 @@
 
 
 #include <stdio.h>
-#include <GL/glut.h>
 
 #include "ship1.hpp"
 #include "fire.hpp"
diff --git a/spirale.cpp b/spirale.cpp
index c3806a6..d1c4004 100644
--- a/spirale.cpp
+++ b/spirale.cpp
@@ -16,8 +16,6 @@
   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */
 
-#include <GL/glut.h>
-
 #include "spirale.hpp"
 #include "fire.hpp"
 
diff --git a/sprite.hpp b/sprite.hpp
index 397f1e9..898deca 100644
--- a/sprite.hpp
+++ b/sprite.hpp
@@ -29,7 +29,6 @@
 #include <GL/gl.h>
 #include <GL/glext.h>
 #include <GL/glu.h>
-#include <GL/glut.h>
 
 #ifndef WIN32
 #include "conf.h"
diff --git a/tache.cpp b/tache.cpp
index 640f915..0c006e8 100644
--- a/tache.cpp
+++ b/tache.cpp
@@ -16,9 +16,6 @@
   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */
 
-
-#include <GL/glut.h>
-
 #include "tache.hpp"
 #include "scratcher.hpp"
 
diff --git a/tank.cpp b/tank.cpp
index 148f868..90b0f4e 100644
--- a/tank.cpp
+++ b/tank.cpp
@@ -16,8 +16,6 @@
   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */
 
-#include <GL/glut.h>
-
 #include <stdio.h>
 #include "tank.hpp"
 #include "scene.hpp"
-- 
2.5.0