gallium: Rename dri_destroy_screen_helper into dri_release_screen

This function is actually used before the use of dri_init_screen_helper so
it is not exactly releasing the memory allocated by the screen helper.

Also clear the base.screen variable after destroy to make this function
reentrant.

Signed-off-by: Corentin Noël <corentin.noel@collabora.com>
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23054>
This commit is contained in:
Corentin Noël 2023-05-24 16:10:18 +02:00 committed by Marge Bot
parent c2d90602ca
commit 744c849a08
5 changed files with 10 additions and 8 deletions

View file

@ -2324,7 +2324,7 @@ dri2_init_screen(struct dri_screen *screen)
return configs;
fail:
dri_destroy_screen_helper(screen);
dri_release_screen(screen);
return NULL;
}
@ -2377,7 +2377,7 @@ dri_swrast_kms_init_screen(struct dri_screen *screen)
return configs;
fail:
dri_destroy_screen_helper(screen);
dri_release_screen(screen);
#endif // GALLIUM_SOFTPIPE
return NULL;

View file

@ -769,12 +769,14 @@ dri_get_param(struct pipe_frontend_screen *fscreen,
}
void
dri_destroy_screen_helper(struct dri_screen * screen)
dri_release_screen(struct dri_screen * screen)
{
st_screen_destroy(&screen->base);
if (screen->base.screen)
if (screen->base.screen) {
screen->base.screen->destroy(screen->base.screen);
screen->base.screen = NULL;
}
if (screen->dev) {
pipe_loader_release(&screen->dev, 1);
@ -787,7 +789,7 @@ dri_destroy_screen_helper(struct dri_screen * screen)
void
dri_destroy_screen(struct dri_screen *screen)
{
dri_destroy_screen_helper(screen);
dri_release_screen(screen);
free(screen->options.force_gl_vendor);
free(screen->options.force_gl_renderer);

View file

@ -223,7 +223,7 @@ dri_init_screen_helper(struct dri_screen *screen,
struct pipe_screen *pscreen);
void
dri_destroy_screen_helper(struct dri_screen * screen);
dri_release_screen(struct dri_screen * screen);
void
dri_destroy_screen(struct dri_screen *screen);

View file

@ -593,7 +593,7 @@ drisw_init_screen(struct dri_screen *screen)
return configs;
fail:
dri_destroy_screen_helper(screen);
dri_release_screen(screen);
return NULL;
}

View file

@ -168,7 +168,7 @@ kopper_init_screen(struct dri_screen *screen)
return configs;
fail:
dri_destroy_screen_helper(screen);
dri_release_screen(screen);
return NULL;
}