summaryrefslogtreecommitdiffstats
path: root/src/gallium/winsys/g3dvl
diff options
context:
space:
mode:
authorYounes Manton <younes.m@gmail.com>2008-07-19 16:22:56 -0400
committerYounes Manton <younes.m@gmail.com>2008-07-20 19:16:41 -0400
commitc243573fafe8e83d4964535b201c499164d7c172 (patch)
tree41781847321e2a775b7d21f52a6587b37ee4f4ea /src/gallium/winsys/g3dvl
parent8878d8d4b35c9550632f5684bdc97f3958bf43c5 (diff)
downloadexternal_mesa3d-c243573fafe8e83d4964535b201c499164d7c172.zip
external_mesa3d-c243573fafe8e83d4964535b201c499164d7c172.tar.gz
external_mesa3d-c243573fafe8e83d4964535b201c499164d7c172.tar.bz2
g3dvl: Fix some memory leaks in the winsys.
Diffstat (limited to 'src/gallium/winsys/g3dvl')
-rw-r--r--src/gallium/winsys/g3dvl/xsp_winsys.c26
-rw-r--r--src/gallium/winsys/g3dvl/xsp_winsys.h1
2 files changed, 22 insertions, 5 deletions
diff --git a/src/gallium/winsys/g3dvl/xsp_winsys.c b/src/gallium/winsys/g3dvl/xsp_winsys.c
index 7c5c592..c660c6e 100644
--- a/src/gallium/winsys/g3dvl/xsp_winsys.c
+++ b/src/gallium/winsys/g3dvl/xsp_winsys.c
@@ -224,8 +224,8 @@ static const char* xsp_get_name(struct pipe_winsys *pws)
struct pipe_context* create_pipe_context(Display *display)
{
struct xsp_pipe_winsys *xsp_winsys;
- struct pipe_screen *p_screen;
- struct pipe_context *p_context;
+ struct pipe_screen *screen;
+ struct pipe_context *pipe;
assert(display);
@@ -269,9 +269,25 @@ struct pipe_context* create_pipe_context(Display *display)
XDestroyImage(template);
}
- p_screen = softpipe_create_screen((struct pipe_winsys*)xsp_winsys);
- p_context = softpipe_create(p_screen, (struct pipe_winsys*)xsp_winsys, NULL);
+ screen = softpipe_create_screen((struct pipe_winsys*)xsp_winsys);
+ pipe = softpipe_create(screen, (struct pipe_winsys*)xsp_winsys, NULL);
- return p_context;
+ return pipe;
+}
+
+int destroy_pipe_context(struct pipe_context *pipe)
+{
+ struct pipe_screen *screen;
+ struct pipe_winsys *winsys;
+
+ assert(pipe);
+
+ screen = pipe->screen;
+ winsys = pipe->winsys;
+ pipe->destroy(pipe);
+ screen->destroy(screen);
+ free(winsys);
+
+ return 0;
}
diff --git a/src/gallium/winsys/g3dvl/xsp_winsys.h b/src/gallium/winsys/g3dvl/xsp_winsys.h
index 47a6ac6..cb163dc 100644
--- a/src/gallium/winsys/g3dvl/xsp_winsys.h
+++ b/src/gallium/winsys/g3dvl/xsp_winsys.h
@@ -6,6 +6,7 @@
struct pipe_context;
struct pipe_context* create_pipe_context(Display *display);
+int destroy_pipe_context(struct pipe_context *pipe);
#endif