Mesa (master): st/xorg: Cleanly shutdown
Jakob Bornecrantz
wallbraker at kemper.freedesktop.org
Tue Oct 20 16:15:13 UTC 2009
Module: Mesa
Branch: master
Commit: a9f71b3bba86771be56ff1def716beb370decd22
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=a9f71b3bba86771be56ff1def716beb370decd22
Author: Jakob Bornecrantz <jakob at vmware.com>
Date: Tue Oct 20 17:18:25 2009 +0200
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(-)
diff --git a/src/gallium/state_trackers/xorg/xorg_driver.c b/src/gallium/state_trackers/xorg/xorg_driver.c
index 2df954f..7da1042 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 3dd5e6e..393f3fa 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;
}
}
More information about the mesa-commit
mailing list