frontends/dri: only release pipe when screen init fails

the caller (driCreateNewScreen3) will always call dri_destroy_screen()
when these functions return failure, so releasing the screen
is always wrong

cc: mesa-stable

Reviewed-by: Adam Jackson <ajax@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/29021>
(cherry picked from commit a1225e81c9)
This commit is contained in:
Mike Blumenkrantz 2024-05-02 08:14:13 -04:00 committed by Eric Engestrom
parent 6d23f70e79
commit 254b300f6b
4 changed files with 7 additions and 7 deletions

View file

@ -514,7 +514,7 @@
"description": "frontends/dri: only release pipe when screen init fails",
"nominated": true,
"nomination_type": 0,
"resolution": 0,
"resolution": 1,
"main_sha": null,
"because_sha": null,
"notes": null

View file

@ -2385,7 +2385,7 @@ dri2_init_screen(struct dri_screen *screen)
pscreen = pipe_loader_create_screen(screen->dev);
if (!pscreen)
goto fail;
return NULL;
dri_init_options(screen);
screen->throttle = pscreen->get_param(pscreen, PIPE_CAP_THROTTLE);
@ -2419,7 +2419,7 @@ dri2_init_screen(struct dri_screen *screen)
return configs;
fail:
dri_release_screen(screen);
pipe_loader_release(&screen->dev, 1);
return NULL;
}

View file

@ -565,7 +565,7 @@ drisw_init_screen(struct dri_screen *screen)
pscreen = pipe_loader_create_screen(screen->dev);
if (!pscreen)
goto fail;
return NULL;
dri_init_options(screen);
configs = dri_init_screen(screen, pscreen);
@ -593,7 +593,7 @@ drisw_init_screen(struct dri_screen *screen)
return configs;
fail:
dri_release_screen(screen);
pipe_loader_release(&screen->dev, 1);
return NULL;
}

View file

@ -134,7 +134,7 @@ kopper_init_screen(struct dri_screen *screen)
pscreen = pipe_loader_create_screen(screen->dev);
if (!pscreen)
goto fail;
return NULL;
dri_init_options(screen);
screen->unwrapped_screen = trace_screen_unwrap(pscreen);
@ -167,7 +167,7 @@ kopper_init_screen(struct dri_screen *screen)
return configs;
fail:
dri_release_screen(screen);
pipe_loader_release(&screen->dev, 1);
return NULL;
}