Sketch out new create/destroy context functions which create/wrap a Mesa context.
authorBrian <brian.paul@tungstengraphics.com>
Thu, 1 Nov 2007 23:46:04 +0000 (17:46 -0600)
committerBrian <brian.paul@tungstengraphics.com>
Fri, 2 Nov 2007 00:01:47 +0000 (18:01 -0600)
src/mesa/state_tracker/st_context.c
src/mesa/state_tracker/st_public.h

index 69942d968544ee0943815f3f63ab624604c77253..1d129ad077d6d3388ff14bd5ac6ccc1c5e0cd9cc 100644 (file)
@@ -26,6 +26,7 @@
  **************************************************************************/
 
 #include "main/imports.h"
+#include "main/context.h"
 #include "main/extensions.h"
 #include "vbo/vbo.h"
 #include "st_public.h"
@@ -67,6 +68,23 @@ void st_invalidate_state(GLcontext * ctx, GLuint new_state)
 }
 
 
+struct st_context *st_create_context2(struct pipe_context *pipe,
+                                      const GLvisual *visual,
+                                      struct st_context *share)
+{
+   GLcontext *ctx;
+   GLcontext *shareCtx = share ? share->ctx : NULL;
+   struct dd_function_table funcs;
+
+   memset(&funcs, 0, sizeof(funcs));
+   st_init_driver_functions(&funcs);
+
+   ctx = _mesa_create_context(visual, shareCtx, &funcs, NULL);
+
+   return st_create_context(ctx, pipe);
+}
+
+
 struct st_context *st_create_context( GLcontext *ctx,
                                      struct pipe_context *pipe )
 {
@@ -111,6 +129,15 @@ struct st_context *st_create_context( GLcontext *ctx,
 }
 
 
+void st_destroy_context2( struct st_context *st )
+{
+   GLcontext *ctx = st->ctx;
+   _mesa_free_context_data(ctx);
+   st_destroy_context(st);
+   free(ctx);
+}
+
+
 void st_destroy_context( struct st_context *st )
 {
    draw_destroy(st->draw);
index 3191549a2f8ee95e2b5525c3463c1db6f2c5c8d5..3056b5a3e7d100cce200e05434f567480065c367 100644 (file)
@@ -36,8 +36,14 @@ struct pipe_context;
 struct st_context *st_create_context( GLcontext *ctx,
                                      struct pipe_context *pipe);
 
+struct st_context *st_create_context2(struct pipe_context *pipe,
+                                      const GLvisual *visual,
+                                      struct st_context *share);
+
 void st_destroy_context( struct st_context *st );
 
+void st_destroy_context2( struct st_context *st );
+
 void st_invalidate_state(GLcontext * ctx, GLuint new_state);
 
 #endif