From a9f71b3bba86771be56ff1def716beb370decd22 Mon Sep 17 00:00:00 2001 From: Jakob Bornecrantz Date: Tue, 20 Oct 2009 17:18:25 +0200 Subject: st/xorg: Cleanly shutdown --- src/gallium/state_trackers/xorg/xorg_driver.c | 5 ++++- src/gallium/state_trackers/xorg/xorg_renderer.c | 10 ++++++---- 2 files changed, 10 insertions(+), 5 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/state_trackers/xorg/xorg_driver.c b/src/gallium/state_trackers/xorg/xorg_driver.c index 2df954f18e..7da10427ec 100644 --- a/src/gallium/state_trackers/xorg/xorg_driver.c +++ b/src/gallium/state_trackers/xorg/xorg_driver.c @@ -541,6 +541,9 @@ ScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) return FALSE; } + if (!ms->api) + ms->api = drm_api_create(); + if (!ms->screen) { ms->screen = ms->api->create_screen(ms->api, ms->fd, NULL); @@ -774,7 +777,7 @@ CloseScreen(int scrnIndex, ScreenPtr pScreen) if (ms->exa) xorg_exa_close(pScrn); - if (ms->api->destroy) + if (ms->api && ms->api->destroy) ms->api->destroy(ms->api); ms->api = NULL; diff --git a/src/gallium/state_trackers/xorg/xorg_renderer.c b/src/gallium/state_trackers/xorg/xorg_renderer.c index 3dd5e6e811..393f3fac3e 100644 --- a/src/gallium/state_trackers/xorg/xorg_renderer.c +++ b/src/gallium/state_trackers/xorg/xorg_renderer.c @@ -283,13 +283,15 @@ void renderer_destroy(struct xorg_renderer *r) if (fsbuf && fsbuf->buffer) pipe_buffer_reference(&fsbuf->buffer, NULL); + if (r->shaders) { + xorg_shaders_destroy(r->shaders); + r->shaders = NULL; + } + if (r->cso) { cso_release_all(r->cso); cso_destroy_context(r->cso); - } - - if (r->shaders) { - xorg_shaders_destroy(r->shaders); + r->cso = NULL; } } -- cgit v1.2.3