From e32660060954c0d1a1f7636c6365970348f3be24 Mon Sep 17 00:00:00 2001 From: Shuang He Date: Mon, 27 Apr 2009 07:13:33 -0600 Subject: [PATCH] demos: Clean up allocated Textures and Display Lists when demo quit --- progs/demos/ipers.c | 18 ++++++++++++++++++ progs/demos/teapot.c | 11 +++++++++++ progs/demos/tunnel.c | 9 +++++++++ progs/demos/tunnel2.c | 9 +++++++++ 4 files changed, 47 insertions(+) diff --git a/progs/demos/ipers.c b/progs/demos/ipers.c index 6e153c04e15..5d82b0dc924 100644 --- a/progs/demos/ipers.c +++ b/progs/demos/ipers.c @@ -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; } diff --git a/progs/demos/teapot.c b/progs/demos/teapot.c index 38ede7ac3e1..6bf6e064095 100644 --- a/progs/demos/teapot.c +++ b/progs/demos/teapot.c @@ -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; } diff --git a/progs/demos/tunnel.c b/progs/demos/tunnel.c index 6a240580e8a..6981da32988 100644 --- a/progs/demos/tunnel.c +++ b/progs/demos/tunnel.c @@ -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; } diff --git a/progs/demos/tunnel2.c b/progs/demos/tunnel2.c index f4171a8346d..0288ea0f8ce 100644 --- a/progs/demos/tunnel2.c +++ b/progs/demos/tunnel2.c @@ -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; } -- 2.30.2