Signed-off-by: Brian Paul <brianp@vmware.com>tags/mesa-7.7-2
| @@ -101,6 +101,12 @@ dri_destroy_context(__DRIcontextPrivate * cPriv) | |||
| { | |||
| struct dri_context *ctx = dri_context(cPriv); | |||
| /* note: we are freeing values and nothing more because | |||
| * driParseConfigFiles allocated values only - the rest | |||
| * is owned by screen optionCache. | |||
| */ | |||
| FREE(ctx->optionCache.values); | |||
| /* No particular reason to wait for command completion before | |||
| * destroying a context, but it is probably worthwhile flushing it | |||
| * to avoid having to add code elsewhere to cope with flushing a | |||
| @@ -327,8 +327,18 @@ static void | |||
| dri_destroy_screen(__DRIscreenPrivate * sPriv) | |||
| { | |||
| struct dri_screen *screen = dri_screen(sPriv); | |||
| int i; | |||
| screen->pipe_screen->destroy(screen->pipe_screen); | |||
| for (i = 0; i < (1 << screen->optionCache.tableSize); ++i) { | |||
| FREE(screen->optionCache.info[i].name); | |||
| FREE(screen->optionCache.info[i].ranges); | |||
| } | |||
| FREE(screen->optionCache.info); | |||
| FREE(screen->optionCache.values); | |||
| FREE(screen); | |||
| sPriv->private = NULL; | |||
| } | |||