summaryrefslogtreecommitdiff
path: root/src/gallium/winsys
diff options
context:
space:
mode:
Diffstat (limited to 'src/gallium/winsys')
-rw-r--r--src/gallium/winsys/xlib/xm_api.c5
-rw-r--r--src/gallium/winsys/xlib/xm_winsys.c15
2 files changed, 8 insertions, 12 deletions
diff --git a/src/gallium/winsys/xlib/xm_api.c b/src/gallium/winsys/xlib/xm_api.c
index 4e5441a13d..d2f92a0875 100644
--- a/src/gallium/winsys/xlib/xm_api.c
+++ b/src/gallium/winsys/xlib/xm_api.c
@@ -67,6 +67,7 @@
#include "state_tracker/st_public.h"
#include "state_tracker/st_context.h"
#include "pipe/p_defines.h"
+#include "pipe/p_screen.h"
#include "pipe/p_context.h"
#include "xm_winsys_aub.h"
@@ -833,7 +834,7 @@ XMesaContext XMesaCreateContext( XMesaVisual v, XMesaContext share_list )
fail:
if (c->st)
st_destroy_context(c->st);
- if (pipe)
+ else if (pipe)
pipe->destroy(pipe);
FREE(c);
return NULL;
@@ -844,7 +845,9 @@ XMesaContext XMesaCreateContext( XMesaVisual v, XMesaContext share_list )
PUBLIC
void XMesaDestroyContext( XMesaContext c )
{
+ struct pipe_screen *screen = c->st->pipe->screen;
st_destroy_context(c->st);
+ screen->destroy(screen);
_mesa_free(c);
}
diff --git a/src/gallium/winsys/xlib/xm_winsys.c b/src/gallium/winsys/xlib/xm_winsys.c
index 6071a5ad5e..3ab4c67cae 100644
--- a/src/gallium/winsys/xlib/xm_winsys.c
+++ b/src/gallium/winsys/xlib/xm_winsys.c
@@ -55,7 +55,6 @@
#endif
#ifdef GALLIUM_TRACE
-#include "trace/tr_winsys.h"
#include "trace/tr_screen.h"
#include "trace/tr_context.h"
#endif
@@ -651,11 +650,7 @@ xmesa_get_pipe_winsys(struct xmesa_visual *xm_vis)
ws->base.get_name = xm_get_name;
}
-#ifdef GALLIUM_TRACE
- return trace_winsys_create(&ws->base);
-#else
- return &ws->base;
-#endif
+ return &ws->base;
}
@@ -684,14 +679,12 @@ xmesa_create_pipe_context(XMesaContext xmesa, uint pixelformat)
{
struct pipe_screen *screen = softpipe_create_screen(pws);
-#ifdef GALLIUM_TRACE
- screen = trace_screen_create(screen);
-#endif
-
pipe = softpipe_create(screen, pws, NULL);
#ifdef GALLIUM_TRACE
- pipe = trace_context_create(pipe);
+ screen = trace_screen_create(screen);
+
+ pipe = trace_context_create(screen, pipe);
#endif
}