diff --git a/.pick_status.json b/.pick_status.json index e4084dc702e..09b48dfe7f3 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -31,7 +31,7 @@ "description": "drisw: don't leak the winsys", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null }, diff --git a/src/gallium/auxiliary/pipe-loader/pipe_loader_sw.c b/src/gallium/auxiliary/pipe-loader/pipe_loader_sw.c index 75a247d43d1..e11837f2c47 100644 --- a/src/gallium/auxiliary/pipe-loader/pipe_loader_sw.c +++ b/src/gallium/auxiliary/pipe-loader/pipe_loader_sw.c @@ -382,6 +382,7 @@ pipe_loader_sw_release(struct pipe_loader_device **dev) UNUSED struct pipe_loader_sw_device *sdev = pipe_loader_sw_device(*dev); + sdev->ws->destroy(sdev->ws); #ifndef GALLIUM_STATIC_TARGETS if (sdev->lib) util_dl_close(sdev->lib); diff --git a/src/gallium/drivers/llvmpipe/lp_screen.c b/src/gallium/drivers/llvmpipe/lp_screen.c index 41bf0641adf..98ec3ccccf9 100644 --- a/src/gallium/drivers/llvmpipe/lp_screen.c +++ b/src/gallium/drivers/llvmpipe/lp_screen.c @@ -859,7 +859,6 @@ static void llvmpipe_destroy_screen(struct pipe_screen *_screen) { struct llvmpipe_screen *screen = llvmpipe_screen(_screen); - struct sw_winsys *winsys = screen->winsys; if (screen->cs_tpool) lp_cs_tpool_destroy(screen->cs_tpool); @@ -870,8 +869,6 @@ llvmpipe_destroy_screen(struct pipe_screen *_screen) lp_jit_screen_cleanup(screen); disk_cache_destroy(screen->disk_shader_cache); - if (winsys->destroy) - winsys->destroy(winsys); glsl_type_singleton_decref(); diff --git a/src/gallium/drivers/softpipe/sp_screen.c b/src/gallium/drivers/softpipe/sp_screen.c index 7bd792f3225..74ff914a01f 100644 --- a/src/gallium/drivers/softpipe/sp_screen.c +++ b/src/gallium/drivers/softpipe/sp_screen.c @@ -490,12 +490,6 @@ softpipe_is_format_supported( struct pipe_screen *screen, static void softpipe_destroy_screen( struct pipe_screen *screen ) { - struct softpipe_screen *sp_screen = softpipe_screen(screen); - struct sw_winsys *winsys = sp_screen->winsys; - - if(winsys->destroy) - winsys->destroy(winsys); - FREE(screen); }