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 6e153c04e15c667c8983c17d9b32c8fd3c950040..5d82b0dc9249bb6d1707848f72884e57b41af230 100644 (file)
@@ -236,11 +236,28 @@ 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 38ede7ac3e16c40fe053f52c38e4480be39faa0c..6bf6e06409513d688e53c2c2b109f2646adb6b3a 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 6a240580e8aba70ffc990a29d543a212766732ad..6981da32988db505d92f2b112a6423c7418a4b50 100644 (file)
@@ -202,11 +202,19 @@ 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 f4171a8346d60c5b9414e7c3806389e6d3298dfe..0288ea0f8ceaede6de5f4e5aee1d99f825ec1a55 100644 (file)
@@ -200,6 +200,13 @@ 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)
 {
@@ -207,6 +214,7 @@ key(unsigned char k, int x, int y)
    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;
 }