summaryrefslogtreecommitdiffstats
path: root/src/glsl/list.h
diff options
context:
space:
mode:
authorEric Anholt <[email protected]>2010-06-30 11:05:43 -0700
committerEric Anholt <[email protected]>2010-06-30 11:30:26 -0700
commit16b68b1952d0da14b9ce8306efa64988ce46b4b7 (patch)
tree9d8c8961b2ff83aaf0a1b83f589e9cb73feec1b6 /src/glsl/list.h
parent524745bc55dd23c612aebdb545125727bfb16e4d (diff)
glsl2: Move our data from a glsl_shader* on the side to the main gl_shader *.
This saves recompiling at link time. gl_shader->ir is made a pointer so that we don't have to bring exec_list into mtypes.h.
Diffstat (limited to 'src/glsl/list.h')
-rw-r--r--src/glsl/list.h19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/glsl/list.h b/src/glsl/list.h
index 7732d66d7a6..d449bdd8b12 100644
--- a/src/glsl/list.h
+++ b/src/glsl/list.h
@@ -272,6 +272,25 @@ struct exec_list {
struct exec_node *tail_pred;
#ifdef __cplusplus
+ /* Callers of this talloc-based new need not call delete. It's
+ * easier to just talloc_free 'ctx' (or any of its ancestors). */
+ static void* operator new(size_t size, void *ctx)
+ {
+ void *node;
+
+ node = talloc_size(ctx, size);
+ assert(node != NULL);
+
+ return node;
+ }
+
+ /* If the user *does* call delete, that's OK, we will just
+ * talloc_free in that case. */
+ static void operator delete(void *node)
+ {
+ talloc_free(node);
+ }
+
exec_list()
{
make_empty();