winsys/sw: Fix error paths
This commit is contained in:
parent
c81f049794
commit
cefe2a1dc2
|
@ -65,8 +65,12 @@ sw_drm_create_screen(struct drm_api *_api, int drmFD,
|
|||
struct pipe_screen *screen;
|
||||
|
||||
screen = api->create_screen(api, drmFD, arg);
|
||||
if (!screen)
|
||||
return NULL;
|
||||
|
||||
sww = wrapper_sw_winsys_warp_pipe_screen(screen);
|
||||
if (!sww)
|
||||
return NULL;
|
||||
|
||||
return softpipe_create_screen(sww);
|
||||
}
|
||||
|
@ -86,7 +90,10 @@ sw_drm_api_create(struct drm_api *api)
|
|||
{
|
||||
struct sw_drm_api *swapi = CALLOC_STRUCT(sw_drm_api);
|
||||
|
||||
swapi->base.name = "sw";
|
||||
if (!swapi)
|
||||
return api;
|
||||
|
||||
swapi->base.name = api->name;
|
||||
swapi->base.driver_name = api->driver_name;
|
||||
swapi->base.create_screen = sw_drm_create_screen;
|
||||
swapi->base.destroy = sw_drm_destroy;
|
||||
|
|
|
@ -262,6 +262,9 @@ wrapper_sw_winsys_warp_pipe_screen(struct pipe_screen *screen)
|
|||
{
|
||||
struct wrapper_sw_winsys *wsw = CALLOC_STRUCT(wrapper_sw_winsys);
|
||||
|
||||
if (!wsw)
|
||||
goto err;
|
||||
|
||||
wsw->base.displaytarget_create = wsw_dt_create;
|
||||
wsw->base.displaytarget_from_handle = wsw_dt_from_handle;
|
||||
wsw->base.displaytarget_map = wsw_dt_map;
|
||||
|
@ -272,11 +275,12 @@ wrapper_sw_winsys_warp_pipe_screen(struct pipe_screen *screen)
|
|||
wsw->screen = screen;
|
||||
wsw->pipe = screen->context_create(screen, NULL);
|
||||
if (!wsw->pipe)
|
||||
goto err;
|
||||
goto err_free;
|
||||
|
||||
return &wsw->base;
|
||||
|
||||
err:
|
||||
err_free:
|
||||
FREE(wsw);
|
||||
err:
|
||||
return NULL;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue