wrapper: Add a way to dewrap a pipe screen without destroying it
This commit is contained in:
parent
f8f3baa43a
commit
44207ff71b
|
@ -26,9 +26,9 @@ sw_screen_wrap(struct pipe_screen *screen)
|
|||
return sw_screen;
|
||||
|
||||
err_winsys:
|
||||
sws->destroy(sws);
|
||||
return wrapper_sw_winsys_dewrap_pipe_screen(sws);
|
||||
err:
|
||||
return screen;
|
||||
return screen;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
|
@ -304,3 +304,16 @@ err_free:
|
|||
err:
|
||||
return NULL;
|
||||
}
|
||||
|
||||
struct pipe_screen *
|
||||
wrapper_sw_winsys_dewrap_pipe_screen(struct sw_winsys *ws)
|
||||
{
|
||||
struct wrapper_sw_winsys *wsw = wrapper_sw_winsys(ws);
|
||||
struct pipe_screen *screen = wsw->screen;
|
||||
|
||||
wsw->pipe->destroy(wsw->pipe);
|
||||
/* don't destroy the screen its needed later on */
|
||||
|
||||
FREE(wsw);
|
||||
return screen;
|
||||
}
|
||||
|
|
|
@ -30,6 +30,15 @@
|
|||
struct sw_winsys;
|
||||
struct pipe_screen;
|
||||
|
||||
/*
|
||||
* Wrap a pipe screen.
|
||||
*/
|
||||
struct sw_winsys *wrapper_sw_winsys_wrap_pipe_screen(struct pipe_screen *screen);
|
||||
|
||||
/*
|
||||
* Destroy the sw_winsys and return the wrapped pipe_screen.
|
||||
* Not destroying it as sw_winsys::destroy does.
|
||||
*/
|
||||
struct pipe_screen *wrapper_sw_winsys_dewrap_pipe_screen(struct sw_winsys *sw_winsys);
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue