demos: Clean up allocated Textures and Display Lists when demo quit
authorShuang He <shuang.he@intel.com>
Mon, 27 Apr 2009 13:13:33 +0000 (07:13 -0600)
committerBrian Paul <brianp@vmware.com>
Mon, 27 Apr 2009 13:13:33 +0000 (07:13 -0600)
progs/demos/ipers.c
progs/demos/teapot.c
progs/demos/tunnel.c
progs/demos/tunnel2.c

index 6e153c0..5d82b0d 100644 (file)
@@ -237,10 +237,27 @@ special(int k, int x, int y)
 }
 
 static void
+cleanup(void)
+{
+   int i;
+
+   glDeleteTextures(1, &t1id);
+   glDeleteTextures(1, &t2id);
+
+   glDeleteLists(skydlist, 1);
+   for (i = 0; i < MAX_LOD; i++) {
+      glDeleteLists(LODdlist[i], 1);
+      glDeleteLists(LODnumpoly[i], 1);
+   }
+}
+
+
+static void
 key(unsigned char k, int x, int y)
 {
    switch (k) {
    case 27:
+      cleanup();
       exit(0);
       break;
 
@@ -707,6 +724,7 @@ main(int ac, char **av)
    glutIdleFunc(draw);
 
    glutMainLoop();
+   cleanup();
 
    return 0;
 }
index 38ede7a..6bf6e06 100644 (file)
@@ -173,10 +173,20 @@ static void special(int k, int x, int y)
   }
 }
 
+static void cleanup(void)
+{
+  glDeleteTextures(1, &t1id);
+  glDeleteTextures(1, &t2id);
+  glDeleteLists(teapotdlist, 1);
+  glDeleteLists(basedlist, 1);
+  glDeleteLists(lightdlist, 1);
+}
+
 static void key(unsigned char k, int x, int y)
 {
   switch(k) {
   case 27:
+    cleanup();
     exit(0);
     break;
     
@@ -670,6 +680,7 @@ int main(int ac, char **av)
   glutIdleFunc(draw);
 
   glutMainLoop();
+  cleanup();
 
   return 0;
 }
index 6a24058..6981da3 100644 (file)
@@ -203,10 +203,18 @@ special(int k, int x, int y)
 }
 
 static void
+cleanup(void)
+{
+   glDeleteTextures(1, &t1id);
+   glDeleteTextures(1, &t2id);
+}
+
+static void
 key(unsigned char k, int x, int y)
 {
    switch (k) {
    case 27:
+      cleanup();
       exit(0);
       break;
 
@@ -531,5 +539,6 @@ main(int ac, char **av)
 
    glutMainLoop();
 
+   cleanup();
    return 0;
 }
index f4171a8..0288ea0 100644 (file)
@@ -201,12 +201,20 @@ special(int k, int x, int y)
 }
 
 static void
+cleanup(void)
+{
+   glDeleteTextures(1, &t1id);
+   glDeleteTextures(1, &t2id);
+}
+
+static void
 key(unsigned char k, int x, int y)
 {
    switch (k) {
    case 27:
       glutDestroyWindow(channel[0]);
       glutDestroyWindow(channel[1]);
+      cleanup();
       exit(0);
       break;
 
@@ -602,6 +610,7 @@ main(int ac, char **av)
    calcposobs();
 
    glutMainLoop();
+   cleanup();
 
    return 0;
 }