diff options
Diffstat (limited to 'hacks/glx/topblock.c')
-rw-r--r-- | hacks/glx/topblock.c | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/hacks/glx/topblock.c b/hacks/glx/topblock.c index 9161d38..59a463f 100644 --- a/hacks/glx/topblock.c +++ b/hacks/glx/topblock.c @@ -179,13 +179,20 @@ ENTRYPOINT void free_topBlock(ModeInfo *mi) { topBlockSTATE *tb = &tbs[MI_SCREEN(mi)]; - NODE *llCurrent, *llOld; - llCurrent = tb->blockNodeRoot; - while (llCurrent != NULL) { - llOld = llCurrent; - llCurrent = llCurrent->next; - free(llOld); - } + NODE *llCurrent, *llOld; + + if (!tb->glx_context) return; + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *tb->glx_context); + + llCurrent = tb->blockNodeRoot; + while (llCurrent != NULL) { + llOld = llCurrent; + llCurrent = llCurrent->next; + free(llOld); + } + if (tb->trackball) gltrackball_free (tb->trackball); + if (glIsList(tb->carpet)) glDeleteLists(tb->carpet, 1); + if (glIsList(tb->block)) glDeleteLists(tb->block, 1); } /* setup */ @@ -309,7 +316,7 @@ draw_topBlock (ModeInfo *mi) if (!tb->glx_context) return; - glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(tb->glx_context)); + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *tb->glx_context); mi->polygon_count = 0; generateNewBlock(mi); |